From d2df0f2b06d91aaae0f29db4cae684a825c2db64 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 23 Oct 2024 23:16:17 +0200 Subject: [PATCH 001/191] tmp: expect authentication --- tests/youtube.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/youtube.rs b/tests/youtube.rs index fe742a7..f68a4c3 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -246,10 +246,10 @@ async fn get_player( #[case] is_live_content: bool, rp: RustyPipe, ) { - if id == "ZDKQmBWTRnw" && !rp.query().auth_enabled() { - tracing::warn!("unauthenticated; age-limited video cannot be tested"); - return; - } + // if id == "ZDKQmBWTRnw" && !rp.query().auth_enabled() { + // tracing::warn!("unauthenticated; age-limited video cannot be tested"); + // return; + // } let player_data = rp.query().player(id).await.unwrap(); let details = player_data.details; From 1b08166399cccb8394d2fdd82d54162c1a9e01be Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 23 Oct 2024 23:35:08 +0200 Subject: [PATCH 002/191] fix: remove unnecessary image.rs dependencies --- downloader/Cargo.toml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 7c8445d..324ed2d 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -46,8 +46,12 @@ filenamify.workspace = true tracing.workspace = true time.workspace = true lofty = { version = "0.21.0", optional = true } -image = { version = "0.25.0", optional = true } -smartcrop2 = { version = "0.3.0", optional = true } +image = { version = "0.25.0", optional = true, default-features = false, features = [ + "rayon", + "jpeg", + "webp", +] } +smartcrop2 = { version = "0.3.1", optional = true } [dev-dependencies] path_macro.workspace = true From e5ca368d3f4cbcef5aa61f0f8d7089ee11db8770 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 23 Oct 2024 23:38:46 +0200 Subject: [PATCH 003/191] tmp: add debug print --- .forgejo/workflows/ci.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 60230e6..afac4df 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -30,6 +30,8 @@ jobs: - name: 🧪 Test run: | echo "${{ secrets.RUSTYPIPE_CACHE }}" > rustypipe_cache.json + ls + head -n 1 rustypipe_cache.json cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace env: ALL_PROXY: "http://warpproxy:8124" From e457733244003e750d6891fe771452783e4d7720 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 23 Oct 2024 23:51:37 +0200 Subject: [PATCH 004/191] test: check user_login --- tests/youtube.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/youtube.rs b/tests/youtube.rs index f68a4c3..8b9dcc3 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2675,6 +2675,13 @@ async fn isrc_search_languages(rp: RustyPipe) { } } +#[rstest] +#[tokio::test] +async fn user_login(rp: RustyPipe) { + assert!(rp.query().auth_enabled()); + rp.user_auth_check_login().await.unwrap(); +} + //#TESTUTIL /// Get the language setting from the environment variable From 5459b88660486a78d2468e2712490c4c17c0bd99 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 23 Oct 2024 23:58:32 +0200 Subject: [PATCH 005/191] test: tree after running tests --- .forgejo/workflows/ci.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index afac4df..caee538 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -46,6 +46,8 @@ jobs: - name: 🔗 Artifactview PR comment if: ${{ always() && github.event_name == 'pull_request' }} run: | + sudo apt-get install tree -y + tree . if [[ "$GITEA_ACTIONS" == "true" ]]; then RUN_NUMBER="$GITHUB_RUN_NUMBER"; else RUN_NUMBER="$GITHUB_RUN_ID"; fi curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" \ --data '{"url": "'"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$RUN_NUMBER"'", "pr": ${{ github.event.number }}, "artifact_titles": {"test":"🧪 Test report"}, "artifact_paths": {"test":"/junit.xml?viewer=1"}}' From a9b33fb882bce0a772913d218dccad3c872f08cb Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 24 Oct 2024 00:03:44 +0200 Subject: [PATCH 006/191] test: dont add cache file --- .forgejo/workflows/ci.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index caee538..9ac21f7 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -29,9 +29,6 @@ jobs: - name: 🧪 Test run: | - echo "${{ secrets.RUSTYPIPE_CACHE }}" > rustypipe_cache.json - ls - head -n 1 rustypipe_cache.json cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace env: ALL_PROXY: "http://warpproxy:8124" From 4e5fb1d89805c2b83cf3f1361f39394f82ed8ebb Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 24 Oct 2024 00:30:49 +0200 Subject: [PATCH 007/191] test: hopefully fixed RUSTYPIPE_CACHE --- .forgejo/workflows/ci.yaml | 7 +++++-- src/client/mod.rs | 16 ++++++++-------- tests/youtube.rs | 3 +++ 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 9ac21f7..eebe019 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -29,9 +29,14 @@ jobs: - name: 🧪 Test run: | + printf "$RUSTYPIPE_CACHE" > rustypipe_cache.json + ls + head -n 1 rustypipe_cache.json + RUST_LOG=debug cargo test --package rustypipe --test youtube --features rss -- user_login --exact --nocapture cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace env: ALL_PROXY: "http://warpproxy:8124" + RUSTYPIPE_CACHE: "${{ secrets.RUSTYPIPE_CACHE }}" - name: 💌 Upload test report if: always() @@ -43,8 +48,6 @@ jobs: - name: 🔗 Artifactview PR comment if: ${{ always() && github.event_name == 'pull_request' }} run: | - sudo apt-get install tree -y - tree . if [[ "$GITEA_ACTIONS" == "true" ]]; then RUN_NUMBER="$GITHUB_RUN_NUMBER"; else RUN_NUMBER="$GITHUB_RUN_ID"; fi curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" \ --data '{"url": "'"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$RUN_NUMBER"'", "pr": ${{ github.event.number }}, "artifact_titles": {"test":"🧪 Test report"}, "artifact_paths": {"test":"/junit.xml?viewer=1"}}' diff --git a/src/client/mod.rs b/src/client/mod.rs index 4dee6f7..47788d1 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -605,17 +605,17 @@ impl RustyPipeBuilder { Box::new(FileStorage::new(cache_file)) }); - let mut cdata = storage - .as_ref() - .and_then(|storage| storage.read()) - .and_then(|data| match serde_json::from_str::(&data) { - Ok(data) => Some(data), + let mut cdata = if let Some(data) = storage.as_ref().and_then(|storage| storage.read()) { + match serde_json::from_str::(&data) { + Ok(data) => data, Err(e) => { tracing::error!("Could not deserialize cache. Error: {}", e); - None + CacheData::default() } - }) - .unwrap_or_default(); + } + } else { + CacheData::default() + }; let cache_clients = [ ClientType::Desktop, diff --git a/tests/youtube.rs b/tests/youtube.rs index 8b9dcc3..c535c95 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -7,6 +7,7 @@ use std::str::FromStr; use rstest::{fixture, rstest}; use rustypipe::param::{AlbumOrder, LANGUAGES}; use time::{macros::date, OffsetDateTime}; +use tracing_test::traced_test; use rustypipe::client::{ClientType, RustyPipe, RustyPipeQuery}; use rustypipe::error::{Error, ExtractionError, UnavailabilityReason}; @@ -2677,7 +2678,9 @@ async fn isrc_search_languages(rp: RustyPipe) { #[rstest] #[tokio::test] +#[traced_test] async fn user_login(rp: RustyPipe) { + tracing::debug!("test"); assert!(rp.query().auth_enabled()); rp.user_auth_check_login().await.unwrap(); } From 7984f9f13a24808b1a65111b6d2bd9f623014af9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 24 Oct 2024 00:42:19 +0200 Subject: [PATCH 008/191] test: fix authenticated testing in CI --- .forgejo/workflows/ci.yaml | 3 ++- src/client/mod.rs | 16 ++++++++-------- tests/youtube.rs | 12 ++++++++++-- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 60230e6..4bdc85b 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -29,10 +29,11 @@ jobs: - name: 🧪 Test run: | - echo "${{ secrets.RUSTYPIPE_CACHE }}" > rustypipe_cache.json + printf "$RUSTYPIPE_CACHE" > rustypipe_cache.json cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace env: ALL_PROXY: "http://warpproxy:8124" + RUSTYPIPE_CACHE: "${{ secrets.RUSTYPIPE_CACHE }}" - name: 💌 Upload test report if: always() diff --git a/src/client/mod.rs b/src/client/mod.rs index 4dee6f7..47788d1 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -605,17 +605,17 @@ impl RustyPipeBuilder { Box::new(FileStorage::new(cache_file)) }); - let mut cdata = storage - .as_ref() - .and_then(|storage| storage.read()) - .and_then(|data| match serde_json::from_str::(&data) { - Ok(data) => Some(data), + let mut cdata = if let Some(data) = storage.as_ref().and_then(|storage| storage.read()) { + match serde_json::from_str::(&data) { + Ok(data) => data, Err(e) => { tracing::error!("Could not deserialize cache. Error: {}", e); - None + CacheData::default() } - }) - .unwrap_or_default(); + } + } else { + CacheData::default() + }; let cache_clients = [ ClientType::Desktop, diff --git a/tests/youtube.rs b/tests/youtube.rs index fe742a7..d7394c1 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -234,7 +234,7 @@ async fn check_video_stream(s: impl YtStream) { )] #[tokio::test] #[allow(clippy::too_many_arguments)] -async fn get_player( +async fn get_player_videos( #[case] id: &str, #[case] name: &str, #[case] description: &str, @@ -247,7 +247,7 @@ async fn get_player( rp: RustyPipe, ) { if id == "ZDKQmBWTRnw" && !rp.query().auth_enabled() { - tracing::warn!("unauthenticated; age-limited video cannot be tested"); + eprintln!("unauthenticated; age-limited video cannot be tested"); return; } @@ -2675,6 +2675,14 @@ async fn isrc_search_languages(rp: RustyPipe) { } } +#[rstest] +#[tokio::test] +async fn user_auth_check_login(rp: RustyPipe) { + if rp.query().auth_enabled() { + rp.user_auth_check_login().await.unwrap(); + } +} + //#TESTUTIL /// Get the language setting from the environment variable From 9e2fe61267846ce216e0c498d8fa9ee672e03cbf Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 24 Oct 2024 00:46:45 +0200 Subject: [PATCH 009/191] feat: add user_auth_logout method --- src/client/mod.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/client/mod.rs b/src/client/mod.rs index 47788d1..659ad69 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1255,6 +1255,15 @@ impl RustyPipe { Ok(()) } + /// Log out the user and remove the OAuth token from the cache + pub async fn user_auth_logout(&self) { + { + let mut cache_token = self.inner.cache.oauth_token.write().unwrap(); + *cache_token = None; + } + self.store_cache().await; + } + async fn refresh_token(&self, refresh_token: &str) -> Result { tracing::debug!("refreshing OAuth token"); From d452af4fb7f8b1afcf9007069a32478ec4d6c8df Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 24 Oct 2024 00:57:47 +0200 Subject: [PATCH 010/191] test: expect user auth when running in CI --- .forgejo/workflows/ci.yaml | 1 + tests/youtube.rs | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 4bdc85b..8432bb1 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -34,6 +34,7 @@ jobs: env: ALL_PROXY: "http://warpproxy:8124" RUSTYPIPE_CACHE: "${{ secrets.RUSTYPIPE_CACHE }}" + YT_AUTHENTICATED: "1" - name: 💌 Upload test report if: always() diff --git a/tests/youtube.rs b/tests/youtube.rs index d7394c1..c49a2c1 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -244,9 +244,10 @@ async fn get_player_videos( #[case] views: u64, #[case] is_live: bool, #[case] is_live_content: bool, + auth_enabled: bool, rp: RustyPipe, ) { - if id == "ZDKQmBWTRnw" && !rp.query().auth_enabled() { + if id == "ZDKQmBWTRnw" && !auth_enabled { eprintln!("unauthenticated; age-limited video cannot be tested"); return; } @@ -2677,8 +2678,9 @@ async fn isrc_search_languages(rp: RustyPipe) { #[rstest] #[tokio::test] -async fn user_auth_check_login(rp: RustyPipe) { - if rp.query().auth_enabled() { +async fn user_auth_check_login(rp: RustyPipe, auth_enabled: bool) { + if auth_enabled { + assert!(rp.query().auth_enabled()); rp.user_auth_check_login().await.unwrap(); } } @@ -2712,6 +2714,12 @@ fn unlocalized(lang: Language) -> bool { lang == Language::En } +/// Get a flag signaling if an authenticated user is expected +#[fixture] +fn auth_enabled(rp: RustyPipe) -> bool { + std::env::var("YT_AUTHENTICATED").is_ok() || rp.query().auth_enabled() +} + /* /// Get a new RustyPipe instance with pre-set visitor data fn rp_visitor_data(vdata: &str) -> RustyPipe { From 62f8a9210c23e1f02c711a2294af8766ca6b70e2 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 24 Oct 2024 01:30:59 +0200 Subject: [PATCH 011/191] feat: revoke OAuth token when logging out --- cli/src/main.rs | 6 ++++ src/client/mod.rs | 71 ++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 70 insertions(+), 7 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index eb29cdf..162ede9 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -193,6 +193,8 @@ enum Commands { Vdata, /// Log in using your Google account Login, + /// Log out from your Google account + Logout, } #[derive(Default, Copy, Clone, ValueEnum)] @@ -1226,6 +1228,10 @@ async fn run() -> anyhow::Result<()> { } anstream::println!("{}", "Logged in.".green()); } + Commands::Logout => { + rp.user_auth_logout().await?; + anstream::println!("{}", "Logged out.".red()); + } }; Ok(()) } diff --git a/src/client/mod.rs b/src/client/mod.rs index 659ad69..87ca027 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1233,7 +1233,7 @@ impl RustyPipe { pub async fn user_auth_check_login(&self) -> Result<(), Error> { let cache_token = self.inner.cache.oauth_token.read().unwrap().clone(); if let Some(token) = cache_token { - let token = self.refresh_token(&token.refresh_token).await?; + let token = self.user_auth_refresh_token(&token.refresh_token).await?; { let mut cache_token = self.inner.cache.oauth_token.write().unwrap(); *cache_token = Some(token.clone()); @@ -1256,7 +1256,57 @@ impl RustyPipe { } /// Log out the user and remove the OAuth token from the cache - pub async fn user_auth_logout(&self) { + pub async fn user_auth_logout(&self) -> Result<(), Error> { + #[derive(Serialize)] + struct RevokeRequest<'a> { + token: &'a str, + } + + let cache_token = self + .inner + .cache + .oauth_token + .read() + .unwrap() + .clone() + .ok_or(Error::Auth(AuthError::NoLogin))?; + let revoke_request = RevokeRequest { + token: &cache_token.refresh_token, + }; + + let resp = self + .inner + .http + .post("https://www.youtube.com/o/oauth2/revoke") + .header(header::USER_AGENT, TV_UA) + .header(header::ORIGIN, YOUTUBE_HOME_URL) + .header(header::REFERER, YOUTUBE_TV_URL) + .json(&revoke_request) + .send() + .await?; + + if let Err(estatus) = resp.error_for_status_ref().map(|_| ()) { + if let Ok(OauthTokenResponse::Error { + error, + error_description, + }) = resp.json::().await + { + // User is already logged out + if error == "invalid_token" { + tracing::info!("user already logged out ({error}: {error_description})"); + } else { + return Err(Error::Other(format!("{error}: {error_description}").into())); + } + } else { + return Err(estatus.into()); + } + } + self.user_auth_remove_token().await; + Ok(()) + } + + /// Remove the stored OAuth token from the cache + async fn user_auth_remove_token(&self) { { let mut cache_token = self.inner.cache.oauth_token.write().unwrap(); *cache_token = None; @@ -1264,7 +1314,8 @@ impl RustyPipe { self.store_cache().await; } - async fn refresh_token(&self, refresh_token: &str) -> Result { + /// Obtain a new OAuth token using the given refresh token + async fn user_auth_refresh_token(&self, refresh_token: &str) -> Result { tracing::debug!("refreshing OAuth token"); let token_request = OauthTokenRequest { @@ -1296,9 +1347,15 @@ impl RustyPipe { OauthTokenResponse::Error { error, error_description, - } => Err(Error::Auth(AuthError::Refresh(format!( - "{error}: {error_description}" - )))), + } => { + // If the token is expired or revoked, remove it from the client + if error == "invalid_grant" { + self.user_auth_remove_token().await; + } + Err(Error::Auth(AuthError::Refresh(format!( + "{error}: {error_description}" + )))) + } } } @@ -1307,7 +1364,7 @@ impl RustyPipe { let cache_token = self.inner.cache.oauth_token.read().unwrap().clone(); if let Some(token) = cache_token { if token.expires_at < (OffsetDateTime::now_utc() + Duration::from_secs(60)) { - let token = self.refresh_token(&token.refresh_token).await?; + let token = self.user_auth_refresh_token(&token.refresh_token).await?; let access_token = token.access_token.to_owned(); { From 512223fd83fb1ba2ba7ad96ed050a70bb7ec294d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 24 Oct 2024 01:40:56 +0200 Subject: [PATCH 012/191] fix: handle auth errors --- src/client/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 87ca027..a2410cc 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1336,7 +1336,6 @@ impl RustyPipe { .json(&token_request) .send() .await? - .error_for_status()? .json::() .await?; @@ -1742,6 +1741,7 @@ impl RustyPipeQuery { StatusCode::BAD_REQUEST => { Error::Extraction(ExtractionError::BadRequest(error_msg.unwrap_or_default())) } + StatusCode::UNAUTHORIZED => Error::Auth(AuthError::NoLogin), _ => Error::HttpStatus(status.as_u16(), error_msg.unwrap_or_default()), }) } else { From 7b0499f6b7cbf6ac4b83695adadfebb3f30349c7 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 24 Oct 2024 02:02:22 +0200 Subject: [PATCH 013/191] fix: use same visitor data for fetching artist album continuations --- src/client/music_artist.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/client/music_artist.rs b/src/client/music_artist.rs index 5d72e84..35728c1 100644 --- a/src/client/music_artist.rs +++ b/src/client/music_artist.rs @@ -111,6 +111,7 @@ impl RustyPipeQuery { &request_body, MapRespCtxSource { artist: Some(first_page.artist.clone()), + visitor_data: first_page.visitor_data.as_deref(), ..Default::default() }, ) @@ -319,6 +320,7 @@ struct FirstAlbumPage { albums: Vec, ctoken: Option, artist: ArtistId, + visitor_data: Option, } impl MapResponse for response::MusicArtistAlbums { @@ -372,6 +374,7 @@ impl MapResponse for response::MusicArtistAlbums { albums: mapped.c.albums, ctoken, artist: artist_id, + visitor_data: ctx.visitor_data.map(str::to_owned), }, warnings: mapped.warnings, }) From 07fd62c560f35679c6f2c310d876a2834842301c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 27 Oct 2024 02:28:57 +0200 Subject: [PATCH 014/191] ci: fix tests for PRs --- .forgejo/workflows/ci.yaml | 2 +- tests/youtube.rs | 26 +++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 8432bb1..d4015b8 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -34,7 +34,7 @@ jobs: env: ALL_PROXY: "http://warpproxy:8124" RUSTYPIPE_CACHE: "${{ secrets.RUSTYPIPE_CACHE }}" - YT_AUTHENTICATED: "1" + YT_AUTHENTICATED: "${{ github.event_name != 'pull_request' }}" # no access to secrets for PRs - name: 💌 Upload test report if: always() diff --git a/tests/youtube.rs b/tests/youtube.rs index c49a2c1..99b1083 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -1748,6 +1748,27 @@ async fn music_artist( } } +#[rstest] +#[tokio::test] +async fn music_artist_albums_recency(rp: RustyPipe) { + let albums = rp + .query() + .music_artist_albums("UCPC0L1d253x-KuMNwa05TpA", None, Some(AlbumOrder::Recency)) + .await + .unwrap(); + + assert_gte(albums.len(), 110, "albums"); + + let mut latest_items = albums.iter().peekable(); + while let (Some(b), Some(next_b)) = (latest_items.next(), latest_items.peek()) { + assert_gte( + b.year.expect("year"), + next_b.year.expect("year"), + "latest album year", + ); + } +} + #[rstest] #[tokio::test] async fn music_artist_not_found(rp: RustyPipe) { @@ -2717,7 +2738,10 @@ fn unlocalized(lang: Language) -> bool { /// Get a flag signaling if an authenticated user is expected #[fixture] fn auth_enabled(rp: RustyPipe) -> bool { - std::env::var("YT_AUTHENTICATED").is_ok() || rp.query().auth_enabled() + std::env::var("YT_AUTHENTICATED") + .map(|v| !v.is_empty() && v.to_ascii_lowercase() != "false") + .unwrap_or_default() + || rp.query().auth_enabled() } /* From 94194e019c46ca49c343086e80e8eb75c52f4bc6 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 27 Oct 2024 00:37:47 +0000 Subject: [PATCH 015/191] chore(deps): update rust crate fancy-regex to 0.14.0 (#14) --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 576f1e9..6da8a38 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ quick-js-dtp = { version = "0.4.1", default-features = false, features = [ ] } once_cell = "1.12.0" regex = "1.6.0" -fancy-regex = "0.13.0" +fancy-regex = "0.14.0" thiserror = "1.0.0" url = "2.2.0" reqwest = { version = "0.12.0", default-features = false } From 0662b5ccfccc922b28629f11ea52c3eb35f9efd2 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 28 Oct 2024 00:07:35 +0000 Subject: [PATCH 016/191] chore(deps): update rust crate quick-xml to 0.37.0 (#15) --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 6da8a38..61dc586 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ phf = "0.11.0" phf_codegen = "0.11.0" base64 = "0.22.0" urlencoding = "2.1.0" -quick-xml = { version = "0.36.0", features = ["serialize"] } +quick-xml = { version = "0.37.0", features = ["serialize"] } tracing = { version = "0.1.0", features = ["log"] } # CLI From 986a15418d9acb301a7c9b475f48af4e91bc5fa3 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 28 Oct 2024 01:35:35 +0100 Subject: [PATCH 017/191] chore(release): release rustypipe v0.6.0 --- CHANGELOG.md | 24 ++++++++++++++++++++++++ Cargo.toml | 4 ++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cdec64d..8840930 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. +## [v0.6.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.5.0..rustypipe/v0.6.0) - 2024-10-28 + +### 🚀 Features + +- [**breaking**] Remove TvHtml5Embed client as it got disabled - ([9e835c8](https://codeberg.org/ThetaDev/rustypipe/commit/9e835c8f38a3dd28c65561b2f9bb7a0f530c24f1)) +- [**breaking**] Generate random visitorData, remove `RustyPipeQuery::get_context` and `YTContext<'a>` from public API - ([7c4f44d](https://codeberg.org/ThetaDev/rustypipe/commit/7c4f44d09c4d813efff9e7d1059ddacd226b9e9d)) +- Add OAuth user login to access age-restricted videos - ([1cc3f9a](https://codeberg.org/ThetaDev/rustypipe/commit/1cc3f9ad74908d33e247ba6243103bfc22540164)) +- Add user_auth_logout method - ([9e2fe61](https://codeberg.org/ThetaDev/rustypipe/commit/9e2fe61267846ce216e0c498d8fa9ee672e03cbf)) +- Revoke OAuth token when logging out - ([62f8a92](https://codeberg.org/ThetaDev/rustypipe/commit/62f8a9210c23e1f02c711a2294af8766ca6b70e2)) + +### 🐛 Bug Fixes + +- Skip serializing empty cache entries - ([be18d89](https://codeberg.org/ThetaDev/rustypipe/commit/be18d89ea65e35ddcf0f31bea3360e5db209fb9f)) +- Fetch artist albums continuation - ([b589061](https://codeberg.org/ThetaDev/rustypipe/commit/b589061a40245637b4fe619a26892291d87d25e6)) +- Update channel order tokens - ([79a6281](https://codeberg.org/ThetaDev/rustypipe/commit/79a62816ff62d94e5c706f45b1ce5971e5e58a81)) +- Handle auth errors - ([512223f](https://codeberg.org/ThetaDev/rustypipe/commit/512223fd83fb1ba2ba7ad96ed050a70bb7ec294d)) +- Use same visitor data for fetching artist album continuations - ([7b0499f](https://codeberg.org/ThetaDev/rustypipe/commit/7b0499f6b7cbf6ac4b83695adadfebb3f30349c7)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate fancy-regex to 0.14.0 (#14) - ([94194e0](https://codeberg.org/ThetaDev/rustypipe/commit/94194e019c46ca49c343086e80e8eb75c52f4bc6)) +- *(deps)* Update rust crate quick-xml to 0.37.0 (#15) - ([0662b5c](https://codeberg.org/ThetaDev/rustypipe/commit/0662b5ccfccc922b28629f11ea52c3eb35f9efd2)) + + ## [v0.5.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.4.0..rustypipe/v0.5.0) - 2024-10-13 ### 🚀 Features diff --git a/Cargo.toml b/Cargo.toml index 61dc586..9ce2806 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.5.0" +version = "0.6.0" rust-version = "1.67.1" edition.workspace = true authors.workspace = true @@ -73,7 +73,7 @@ path_macro = "1.0.0" tracing-test = "0.2.5" # Included crates -rustypipe = { path = ".", version = "0.5.0", default-features = false } +rustypipe = { path = ".", version = "0.6.0", default-features = false } rustypipe-downloader = { path = "./downloader", version = "0.2.1", default-features = false, features = [ "indicatif", "audiotag", From d7ce5c8a56697076530e4ee5c6721f9d21edea1d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 28 Oct 2024 01:38:16 +0100 Subject: [PATCH 018/191] chore(release): release rustypipe-downloader v0.2.3 --- downloader/CHANGELOG.md | 7 +++++++ downloader/Cargo.toml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md index b0d30c1..f04f2cc 100644 --- a/downloader/CHANGELOG.md +++ b/downloader/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. +## [v0.2.3](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.2..rustypipe-downloader/v0.2.3) - 2024-10-28 + +### 🐛 Bug Fixes + +- Remove unnecessary image.rs dependencies - ([1b08166](https://codeberg.org/ThetaDev/rustypipe/commit/1b08166399cccb8394d2fdd82d54162c1a9e01be)) + + ## [v0.2.2](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.1..rustypipe-downloader/v0.2.2) - 2024-10-13 ### ⚙️ Miscellaneous Tasks diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 324ed2d..a4e56b3 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-downloader" -version = "0.2.2" +version = "0.2.3" rust-version = "1.67.1" edition.workspace = true authors.workspace = true From 577370b06d00e16922c80c8be5afff4debce0c72 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 28 Oct 2024 01:40:05 +0100 Subject: [PATCH 019/191] chore(release): release rustypipe-cli v0.3.0 --- cli/CHANGELOG.md | 9 +++++++++ cli/Cargo.toml | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 2a7635c..95c3024 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. +## [v0.3.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.2.2..rustypipe-cli/v0.3.0) - 2024-10-28 + +### 🚀 Features + +- [**breaking**] Remove TvHtml5Embed client as it got disabled - ([9e835c8](https://codeberg.org/ThetaDev/rustypipe/commit/9e835c8f38a3dd28c65561b2f9bb7a0f530c24f1)) +- Add OAuth user login to access age-restricted videos - ([1cc3f9a](https://codeberg.org/ThetaDev/rustypipe/commit/1cc3f9ad74908d33e247ba6243103bfc22540164)) +- Revoke OAuth token when logging out - ([62f8a92](https://codeberg.org/ThetaDev/rustypipe/commit/62f8a9210c23e1f02c711a2294af8766ca6b70e2)) + + ## [v0.2.2](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.2.1..rustypipe-cli/v0.2.2) - 2024-10-13 ### 🚀 Features diff --git a/cli/Cargo.toml b/cli/Cargo.toml index bbdd8d9..85c7791 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-cli" -version = "0.2.2" +version = "0.3.0" rust-version = "1.70.0" edition.workspace = true authors.workspace = true From 50010b7b0856d3ce05fe7a9d5989e526089bc2ef Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 9 Nov 2024 00:36:42 +0100 Subject: [PATCH 020/191] feat: allow searching for YTM users --- cli/src/main.rs | 46 +- src/client/music_search.rs | 11 +- src/client/response/music_item.rs | 39 +- src/client/response/url_endpoint.rs | 4 +- ..._tests__map_music_search_main_default.snap | 646 +- ...ch__tests__map_music_search_main_live.snap | 53 +- src/model/convert.rs | 19 +- src/model/mod.rs | 15 + src/model/traits.rs | 97 +- src/param/search_filter.rs | 15 +- testfiles/music_search/main_default.json | 10588 +++++++++++----- tests/youtube.rs | 27 + 12 files changed, 8224 insertions(+), 3336 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index 162ede9..3eb8a32 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -269,6 +269,7 @@ enum MusicSearchCategory { Albums, PlaylistsYtm, PlaylistsCommunity, + Users, } #[derive(Copy, Clone, PartialEq, Eq, ValueEnum)] @@ -348,8 +349,13 @@ fn print_data(data: &T, format: Format, pretty: bool) { }; } -fn print_entities(items: &[impl YtEntity]) { +fn print_entities(items: &[impl YtEntity], with_type: bool) { for e in items { + if with_type { + if let Some(t) = e.music_item_type() { + anstream::print!("{: >8} ", format!("{t:?}").dimmed()); + } + } anstream::print!("[{}] {}", e.id(), e.name().bold()); if let Some(n) = e.channel_name() { anstream::print!(" - {}", n.cyan()); @@ -399,6 +405,7 @@ fn print_music_search( data: &MusicSearchResult, format: Option, pretty: bool, + with_type: bool, ) { match format { Some(format) => print_data(data, format, pretty), @@ -406,7 +413,7 @@ fn print_music_search( if let Some(corr) = &data.corrected_query { anstream::println!("Did you mean `{}`?", corr.magenta()); } - print_entities(&data.items.items); + print_entities(&data.items.items, with_type); } } } @@ -788,7 +795,7 @@ async fn run() -> anyhow::Result<()> { print_description(Some(details.description.to_plaintext())); if !details.recommended.is_empty() { print_h2("Recommended"); - print_entities(&details.recommended.items); + print_entities(&details.recommended.items, false); } let comment_list = comments.map(|c| match c { CommentsOrder::Top => &details.top_comments.items, @@ -872,11 +879,11 @@ async fn run() -> anyhow::Result<()> { } if !artist.playlists.is_empty() { print_h2("Playlists"); - print_entities(&artist.playlists); + print_entities(&artist.playlists, false); } if !artist.similar_artists.is_empty() { print_h2("Similar artists"); - print_entities(&artist.similar_artists); + print_entities(&artist.similar_artists, false); } } } @@ -903,7 +910,7 @@ async fn run() -> anyhow::Result<()> { ); } println!(); - print_entities(&rss.videos); + print_entities(&rss.videos, false); } } } else { @@ -944,7 +951,7 @@ async fn run() -> anyhow::Result<()> { } print_description(Some(channel.description)); println!(); - print_entities(&channel.content.items); + print_entities(&channel.content.items, false); } } } @@ -973,7 +980,7 @@ async fn run() -> anyhow::Result<()> { anstream::println!("{} {}", "Videos:".blue(), vids); } println!(); - print_entities(&channel.content.items); + print_entities(&channel.content.items, false); } } } @@ -1077,7 +1084,7 @@ async fn run() -> anyhow::Result<()> { } print_description(playlist.description.map(|d| d.to_plaintext())); println!(); - print_entities(&playlist.videos.items); + print_entities(&playlist.videos.items, false); } } } @@ -1145,7 +1152,7 @@ async fn run() -> anyhow::Result<()> { } print_description(Some(channel.description)); println!(); - print_entities(&channel.content.items); + print_entities(&channel.content.items, false); } } } @@ -1167,34 +1174,34 @@ async fn run() -> anyhow::Result<()> { if let Some(corr) = res.corrected_query { anstream::println!("Did you mean `{}`?", corr.magenta()); } - print_entities(&res.items.items); + print_entities(&res.items.items, false); } } } }, Some(MusicSearchCategory::All) => { let res = rp.query().music_search_main(&query).await?; - print_music_search(&res, format, pretty); + print_music_search(&res, format, pretty, true); } Some(MusicSearchCategory::Tracks) => { let mut res = rp.query().music_search_tracks(&query).await?; res.items.extend_limit(rp.query(), limit).await?; - print_music_search(&res, format, pretty); + print_music_search(&res, format, pretty, false); } Some(MusicSearchCategory::Videos) => { let mut res = rp.query().music_search_videos(&query).await?; res.items.extend_limit(rp.query(), limit).await?; - print_music_search(&res, format, pretty); + print_music_search(&res, format, pretty, false); } Some(MusicSearchCategory::Artists) => { let mut res = rp.query().music_search_artists(&query).await?; res.items.extend_limit(rp.query(), limit).await?; - print_music_search(&res, format, pretty); + print_music_search(&res, format, pretty, false); } Some(MusicSearchCategory::Albums) => { let mut res = rp.query().music_search_albums(&query).await?; res.items.extend_limit(rp.query(), limit).await?; - print_music_search(&res, format, pretty); + print_music_search(&res, format, pretty, false); } Some(MusicSearchCategory::PlaylistsYtm | MusicSearchCategory::PlaylistsCommunity) => { let mut res = rp @@ -1205,7 +1212,12 @@ async fn run() -> anyhow::Result<()> { ) .await?; res.items.extend_limit(rp.query(), limit).await?; - print_music_search(&res, format, pretty); + print_music_search(&res, format, pretty, false); + } + Some(MusicSearchCategory::Users) => { + let mut res = rp.query().music_search_users(&query).await?; + res.items.extend_limit(rp.query(), limit).await?; + print_music_search(&res, format, pretty, false); } }, Commands::Vdata => { diff --git a/src/client/music_search.rs b/src/client/music_search.rs index d8548ed..9727d3b 100644 --- a/src/client/music_search.rs +++ b/src/client/music_search.rs @@ -9,7 +9,7 @@ use crate::{ paginator::{ContinuationEndpoint, Paginator}, traits::FromYtItem, AlbumItem, ArtistItem, MusicItem, MusicPlaylistItem, MusicSearchResult, - MusicSearchSuggestion, TrackItem, + MusicSearchSuggestion, TrackItem, UserItem, }, param::search_filter::MusicSearchFilter, serializer::MapResult, @@ -121,6 +121,15 @@ impl RustyPipeQuery { .await } + /// Search YouTube Music users + pub async fn music_search_users>( + &self, + query: S, + ) -> Result, Error> { + self.music_search(query, Some(MusicSearchFilter::Users)) + .await + } + /// Get YouTube Music search suggestions #[tracing::instrument(skip(self), level = "error")] pub async fn music_search_suggestion + Debug>( diff --git a/src/client/response/music_item.rs b/src/client/response/music_item.rs index 1282a8f..ab776c8 100644 --- a/src/client/response/music_item.rs +++ b/src/client/response/music_item.rs @@ -4,7 +4,7 @@ use serde_with::{rust::deserialize_ignore_any, serde_as, DefaultOnError, VecSkip use crate::{ model::{ self, traits::FromYtItem, AlbumId, AlbumItem, AlbumType, ArtistId, ArtistItem, ChannelId, - MusicItem, MusicItemType, MusicPlaylistItem, TrackItem, + MusicItem, MusicItemType, MusicPlaylistItem, TrackItem, UserItem, }, param::Language, serializer::{ @@ -535,7 +535,7 @@ impl MusicListMapper { etype } - /// Map a ListMusicItem (album/playlist tile) + /// Map a ListMusicItem (album/playlist item, search result) fn map_list_item(&mut self, item: ListMusicItem) -> Result, String> { let mut columns = item.flex_columns.into_iter(); let c1 = columns.next(); @@ -858,6 +858,19 @@ impl MusicListMapper { })); Ok(Some(MusicItemType::Playlist)) } + MusicPageType::User => { + // Part 1 may be the "Profile" label + let handle = map_channel_handle(subtitle_p2.as_ref()) + .or_else(|| map_channel_handle(subtitle_p1.as_ref())); + + self.items.push(MusicItem::User(UserItem { + id, + name: title, + handle, + avatar: item.thumbnail.into(), + })); + Ok(Some(MusicItemType::User)) + } MusicPageType::None => { // There may be broken YT channels from the artist search. They can be skipped. Ok(None) @@ -1009,7 +1022,7 @@ impl MusicListMapper { })); Ok(Some(MusicItemType::Playlist)) } - MusicPageType::None => Ok(None), + MusicPageType::None | MusicPageType::User => Ok(None), }, None => Err("could not determine item type".to_owned()), } @@ -1144,6 +1157,19 @@ impl MusicListMapper { })); Some(MusicItemType::Playlist) } + MusicPageType::User => { + // Part 1 may be the "Profile" label + let handle = map_channel_handle(subtitle_p2.as_ref()) + .or_else(|| map_channel_handle(subtitle_p1.as_ref())); + + self.items.push(MusicItem::User(UserItem { + id: music_page.id, + name: card.title, + handle, + avatar: card.thumbnail.into(), + })); + Some(MusicItemType::User) + } MusicPageType::None => None, }, None => { @@ -1206,6 +1232,7 @@ impl MusicListMapper { MusicItem::Album(album) => albums.push(album), MusicItem::Artist(artist) => artists.push(artist), MusicItem::Playlist(playlist) => playlists.push(playlist), + MusicItem::User(_) => {} } } @@ -1256,6 +1283,12 @@ fn map_artist_id_fallback( .or_else(|| fallback_artist.and_then(|a| a.id.clone())) } +fn map_channel_handle(st: Option<&TextComponents>) -> Option { + st.map(|t| t.first_str()) + .filter(|t| t.starts_with('@')) + .map(str::to_owned) +} + pub(crate) fn map_artist_id(entries: Vec) -> Option { entries.into_iter().find_map(|i| { if let NavigationEndpoint::Browse { diff --git a/src/client/response/url_endpoint.rs b/src/client/response/url_endpoint.rs index 1eb5786..2c551b8 100644 --- a/src/client/response/url_endpoint.rs +++ b/src/client/response/url_endpoint.rs @@ -227,6 +227,7 @@ pub(crate) enum MusicPageType { Album, Playlist, Track { vtype: MusicVideoType }, + User, None, } @@ -236,10 +237,11 @@ impl From for MusicPageType { PageType::Artist => MusicPageType::Artist, PageType::Album => MusicPageType::Album, PageType::Playlist | PageType::Podcast => MusicPageType::Playlist, - PageType::Channel | PageType::Unknown => MusicPageType::None, + PageType::Channel => MusicPageType::User, PageType::Episode => MusicPageType::Track { vtype: MusicVideoType::Episode, }, + PageType::Unknown => MusicPageType::None, } } } diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_default.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_default.snap index a49d8d4..71664ed 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_default.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_default.snap @@ -4,7 +4,7 @@ expression: map_res.c --- MusicSearchResult( items: Paginator( - count: Some(16), + count: Some(28), items: [ Track(TrackItem( id: "ZeerrnuLi5E", @@ -25,7 +25,79 @@ MusicSearchResult( ], artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, - view_count: Some(235000000), + view_count: Some(273000000), + is_video: true, + track_nr: None, + by_va: false, + )), + Track(TrackItem( + id: "NU611fxGyPU", + name: "Black Mamba", + duration: Some(175), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/NU611fxGyPU/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3md93InOvanuHclIZe1FpSmEVWGKw", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), + name: "aespa", + ), + ], + artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), + album: None, + view_count: Some(43000000), + is_video: true, + track_nr: None, + by_va: false, + )), + Track(TrackItem( + id: "Yi2nsnpw5h0", + name: "aespa - Black Mamba (Official Instrumental)", + duration: Some(175), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Yi2nsnpw5h0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3meMnbqX2Gi5z5lD0G6PeDxcp-zpA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: Some("UCx5Dw_5guQcKu_lMGCh-IuQ"), + name: "aesthetic inst.", + ), + ], + artist_id: Some("UCx5Dw_5guQcKu_lMGCh-IuQ"), + album: None, + view_count: Some(1500000), + is_video: true, + track_nr: None, + by_va: false, + )), + Track(TrackItem( + id: "2Qefh0W_H88", + name: "aespa - black mamba (𝒔𝒍𝒐𝒘𝒆𝒅 𝒏 𝒓𝒆𝒗𝒆𝒓𝒃)", + duration: Some(209), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/2Qefh0W_H88/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3knLw9_f0ukxeV-S6vS5_JOTXnaWQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: Some("UCrGYENbzwtva2X16bAPhTbA"), + name: "i n s o m n i o", + ), + ], + artist_id: Some("UCrGYENbzwtva2X16bAPhTbA"), + album: None, + view_count: Some(1500000), is_video: true, track_nr: None, by_va: false, @@ -57,110 +129,82 @@ MusicSearchResult( id: "MPREb_OpHWHwyNOuY", name: "Black Mamba", )), - view_count: None, + view_count: Some(544000000), is_video: false, track_nr: None, by_va: false, )), Track(TrackItem( - id: "cATe8Toht70", - name: "Black Mamba", - duration: Some(74), + id: "PpKu3UsHYrk", + name: "Ghetto Millionnaire", + duration: Some(263), cover: [ Thumbnail( - url: "https://lh3.googleusercontent.com/ZesxRmV1_bDW89z70eojCd6DofYPbzbgGaXSIRP3UjmE4nIAkOuWc8pXaozR4AwrzPQublDCKrg6vcxHOg=w60-h60-l90-rj", + url: "https://lh3.googleusercontent.com/p6AWfbIdksK7FGWMlutdCV0t449Nd_odfNnT9G80KDajqmXklX4H-nymvTADsn1JhEnRDaPSfbw_hmlKdg=w60-h60-l90-rj", width: 60, height: 60, ), Thumbnail( - url: "https://lh3.googleusercontent.com/ZesxRmV1_bDW89z70eojCd6DofYPbzbgGaXSIRP3UjmE4nIAkOuWc8pXaozR4AwrzPQublDCKrg6vcxHOg=w120-h120-l90-rj", + url: "https://lh3.googleusercontent.com/p6AWfbIdksK7FGWMlutdCV0t449Nd_odfNnT9G80KDajqmXklX4H-nymvTADsn1JhEnRDaPSfbw_hmlKdg=w120-h120-l90-rj", width: 120, height: 120, ), ], artists: [ ArtistId( - id: Some("UCfCNL5oajlQBAlyjWv1ChVw"), - name: "Hans Zimmer", - ), - ArtistId( - id: Some("UCvTXGTZf9EvuCAwZOkoR2iQ"), - name: "Lorne Balfe", + id: Some("UCxX9tNcQgCBuU56ezupriqg"), + name: "Black Mamba", ), ], - artist_id: Some("UCfCNL5oajlQBAlyjWv1ChVw"), + artist_id: Some("UCxX9tNcQgCBuU56ezupriqg"), album: Some(AlbumId( - id: "MPREb_UmDOhLpDsc0", - name: "Megamind (Music from the Motion Picture)", + id: "MPREb_miyMs44ZpHc", + name: "Ghetto Millionnaire", )), - view_count: None, + view_count: Some(1200000), is_video: false, track_nr: None, by_va: false, )), Track(TrackItem( - id: "WwNKyoizf8k", - name: "BLACK MAMBA", - duration: Some(182), + id: "jynOfK8JB0E", + name: "It Ain\'t You", + duration: Some(268), cover: [ Thumbnail( - url: "https://lh3.googleusercontent.com/gall0XXuwoV_SYR3S6EgtOGaBC3YOR5wOpQxCyqgxC3Xht3Jc95Y-sFg-sGAcQl946MfurGY_xSv0YBT=w60-h60-l90-rj", + url: "https://lh3.googleusercontent.com/ByZsPc5CHoZwtn-cl7e_nbhiVkWxoFJ2RHkNUvLTiowT8228-aVd6r2XT08Z8a32Qa7d-0-Go44sxkdf=w60-h60-l90-rj", width: 60, height: 60, ), Thumbnail( - url: "https://lh3.googleusercontent.com/gall0XXuwoV_SYR3S6EgtOGaBC3YOR5wOpQxCyqgxC3Xht3Jc95Y-sFg-sGAcQl946MfurGY_xSv0YBT=w120-h120-l90-rj", + url: "https://lh3.googleusercontent.com/ByZsPc5CHoZwtn-cl7e_nbhiVkWxoFJ2RHkNUvLTiowT8228-aVd6r2XT08Z8a32Qa7d-0-Go44sxkdf=w120-h120-l90-rj", width: 120, height: 120, ), ], artists: [ ArtistId( - id: Some("UCz6yr3CgFGrrrPDa2asbWMQ"), - name: "Bayamon PR Tribe", + id: Some("UCaDT20-B3U8h-tPg_VMvntw"), + name: "The Black Mamba", ), ], - artist_id: Some("UCz6yr3CgFGrrrPDa2asbWMQ"), + artist_id: Some("UCaDT20-B3U8h-tPg_VMvntw"), album: Some(AlbumId( - id: "MPREb_RV0PGHyGfkp", - name: "LISTEN ME", + id: "MPREb_hXasyBrDJm7", + name: "The Black Mamba", )), - view_count: None, + view_count: Some(1300000), is_video: false, track_nr: None, by_va: false, )), Track(TrackItem( - id: "yQUU29NwNF4", - name: "aespa(에스파) - Black Mamba @인기가요 inkigayo 20201122", - duration: Some(213), + id: "pgjQkcYD-rQ", + name: "Black Mamba (Techwear ver. Dance Practice)", + duration: Some(198), cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/yQUU29NwNF4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k0HD8CTPlz4YU0hvy1GqKSf2HKUQ", - width: 400, - height: 225, - ), - ], - artists: [ - ArtistId( - id: Some("UCS_hnpJLQTvBkqALgapi_4g"), - name: "스브스케이팝 X INKIGAYO", - ), - ], - artist_id: Some("UCS_hnpJLQTvBkqALgapi_4g"), - album: None, - view_count: Some(10000000), - is_video: true, - track_nr: None, - by_va: false, - )), - Track(TrackItem( - id: "Ky5RT5oGg0w", - name: "Black Mamba", - duration: Some(287), - cover: [ - Thumbnail( - url: "https://i.ytimg.com/vi/Ky5RT5oGg0w/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mB-DDgCruC-dhPM0v66ckiZJQnJg", + url: "https://i.ytimg.com/vi/pgjQkcYD-rQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k8ndHhyzqiuzAXoLwsrk-I7IKt5Q", width: 400, height: 225, ), @@ -173,18 +217,18 @@ MusicSearchResult( ], artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, - view_count: Some(18000000), + view_count: Some(9600000), is_video: true, track_nr: None, by_va: false, )), Track(TrackItem( - id: "dz9bieeSVRw", - name: "aespa - Black Mamba (Music Bank) | KBS WORLD TV 201127", - duration: Some(192), + id: "w2GXdb-pHo8", + name: "(Hot Debut) aespa - Black Mamba (Music Bank) | KBS WORLD TV 201120", + duration: None, cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/dz9bieeSVRw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lsJGKTqJhnt-ckrJtBLlvSp46Y5g", + url: "https://i.ytimg.com/vi/w2GXdb-pHo8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l5kwjfr-rdoZvgzcLk38ilMou95g", width: 400, height: 225, ), @@ -197,135 +241,223 @@ MusicSearchResult( ], artist_id: Some("UC5BMQOsAB8hKUyHu9KI6yig"), album: None, - view_count: Some(3200000), + view_count: None, + is_video: true, + track_nr: None, + by_va: false, + )), + Track(TrackItem( + id: "JepNreB58TA", + name: "aespa (에스파) - Black Mamba | Sydney - SYNK: Parallel Line | 4K60 직캠 Fancam Front Row", + duration: Some(170), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/JepNreB58TA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lhDLwngEone0tYZ0omfA6rs6Nj2w", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: Some("UCAOoElZAQnI0zN91qvzezCw"), + name: "yentaxi", + ), + ], + artist_id: Some("UCAOoElZAQnI0zN91qvzezCw"), + album: None, + view_count: Some(213000), is_video: true, track_nr: None, by_va: false, )), Album(AlbumItem( - id: "MPREb_OpHWHwyNOuY", + id: "MPREb_rR0VQ4fTxPM", + name: "black mamba", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/9H5D-h9AQdUQsPlq7emEOm4R6atXeOVsQl9CNFfKAXocK9UWVemlewjCc665YE_CJFJPQzm4euGmHDvl=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/9H5D-h9AQdUQsPlq7emEOm4R6atXeOVsQl9CNFfKAXocK9UWVemlewjCc665YE_CJFJPQzm4euGmHDvl=w120-h120-l90-rj", + width: 120, + height: 120, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/9H5D-h9AQdUQsPlq7emEOm4R6atXeOVsQl9CNFfKAXocK9UWVemlewjCc665YE_CJFJPQzm4euGmHDvl=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/9H5D-h9AQdUQsPlq7emEOm4R6atXeOVsQl9CNFfKAXocK9UWVemlewjCc665YE_CJFJPQzm4euGmHDvl=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClSZ2io808U-NOICSbjvwEg"), + name: "ff phonk", + ), + ], + artist_id: Some("UClSZ2io808U-NOICSbjvwEg"), + album_type: Single, + year: Some(2024), + by_va: false, + )), + Album(AlbumItem( + id: "MPREb_ZXbDKPXnct4", + name: "Mi Back", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/N1vPbX8Qwykpsx_bCguQKz4D6REvCvHSvgqpGKwN8Z1GIuZHblZalXlKZn-4IMe5Gxv3uSmNDRiagss3XA=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/N1vPbX8Qwykpsx_bCguQKz4D6REvCvHSvgqpGKwN8Z1GIuZHblZalXlKZn-4IMe5Gxv3uSmNDRiagss3XA=w120-h120-l90-rj", + width: 120, + height: 120, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/N1vPbX8Qwykpsx_bCguQKz4D6REvCvHSvgqpGKwN8Z1GIuZHblZalXlKZn-4IMe5Gxv3uSmNDRiagss3XA=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/N1vPbX8Qwykpsx_bCguQKz4D6REvCvHSvgqpGKwN8Z1GIuZHblZalXlKZn-4IMe5Gxv3uSmNDRiagss3XA=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCzKrKM1QQQyw8uZ_NcNldGQ"), + name: "Black Mamba & eLgozzy", + ), + ], + artist_id: Some("UCzKrKM1QQQyw8uZ_NcNldGQ"), + album_type: Single, + year: Some(2024), + by_va: false, + )), + Album(AlbumItem( + id: "MPREb_LGXKt36T0rM", name: "Black Mamba", cover: [ Thumbnail( - url: "https://lh3.googleusercontent.com/MOL4_Ula9hocErkX2xK_7mISFiWvQz51vReT14KCHF9wsqCEH6sO8iilFFelWMn7JOYIk2WFa-gMmw2uvw=w60-h60-l90-rj", + url: "https://lh3.googleusercontent.com/eusGkrg73YceOgTNl2na4Ywi2pKSdeIVCNYuebdd5nJ20Yw_L4wBTKKR0_Qj4W0-in32dKal-GYKNUGB=w60-h60-l90-rj", width: 60, height: 60, ), Thumbnail( - url: "https://lh3.googleusercontent.com/MOL4_Ula9hocErkX2xK_7mISFiWvQz51vReT14KCHF9wsqCEH6sO8iilFFelWMn7JOYIk2WFa-gMmw2uvw=w120-h120-l90-rj", + url: "https://lh3.googleusercontent.com/eusGkrg73YceOgTNl2na4Ywi2pKSdeIVCNYuebdd5nJ20Yw_L4wBTKKR0_Qj4W0-in32dKal-GYKNUGB=w120-h120-l90-rj", width: 120, height: 120, ), Thumbnail( - url: "https://lh3.googleusercontent.com/MOL4_Ula9hocErkX2xK_7mISFiWvQz51vReT14KCHF9wsqCEH6sO8iilFFelWMn7JOYIk2WFa-gMmw2uvw=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/eusGkrg73YceOgTNl2na4Ywi2pKSdeIVCNYuebdd5nJ20Yw_L4wBTKKR0_Qj4W0-in32dKal-GYKNUGB=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/MOL4_Ula9hocErkX2xK_7mISFiWvQz51vReT14KCHF9wsqCEH6sO8iilFFelWMn7JOYIk2WFa-gMmw2uvw=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/eusGkrg73YceOgTNl2na4Ywi2pKSdeIVCNYuebdd5nJ20Yw_L4wBTKKR0_Qj4W0-in32dKal-GYKNUGB=w544-h544-l90-rj", width: 544, height: 544, ), ], artists: [ ArtistId( - id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), - name: "aespa", + id: Some("UC7R_cJYLxanyOw9KsfOzu7Q"), + name: "MOGI (IL)", ), ], - artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), + artist_id: Some("UC7R_cJYLxanyOw9KsfOzu7Q"), album_type: Single, - year: Some(2020), + year: Some(2024), by_va: false, )), - Album(AlbumItem( - id: "MPREb_pvdHyqvGjbI", - name: "Girls - The 2nd Mini Album", - cover: [ + Playlist(MusicPlaylistItem( + id: "PLnAcDMIXVUFqVONj6hrtTb5jfumRjA6NF", + name: "Black Mamba Mixtape", + thumbnail: [ Thumbnail( - url: "https://lh3.googleusercontent.com/JYOTl7neLJLMUEVjdg_qIqz7XjUZB2AQAx_sRDlNVd5jSYiv1xA0v68ZN8Kn0KKf1fSfQnTaeakGeQgI=w60-h60-l90-rj", - width: 60, - height: 60, + url: "https://i.ytimg.com/vi/S3xisVb4Nt0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kHkhtnq5pAgdX7sVqd7699sdwzPw", + width: 400, + height: 225, ), Thumbnail( - url: "https://lh3.googleusercontent.com/JYOTl7neLJLMUEVjdg_qIqz7XjUZB2AQAx_sRDlNVd5jSYiv1xA0v68ZN8Kn0KKf1fSfQnTaeakGeQgI=w120-h120-l90-rj", - width: 120, - height: 120, + url: "https://i.ytimg.com/vi/S3xisVb4Nt0/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3kgdAd7dmEUsPEwH_QG1yjtHLfxNA", + width: 800, + height: 450, ), Thumbnail( - url: "https://lh3.googleusercontent.com/JYOTl7neLJLMUEVjdg_qIqz7XjUZB2AQAx_sRDlNVd5jSYiv1xA0v68ZN8Kn0KKf1fSfQnTaeakGeQgI=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/JYOTl7neLJLMUEVjdg_qIqz7XjUZB2AQAx_sRDlNVd5jSYiv1xA0v68ZN8Kn0KKf1fSfQnTaeakGeQgI=w544-h544-l90-rj", - width: 544, - height: 544, + url: "https://i.ytimg.com/vi/S3xisVb4Nt0/hq720.jpg?sqp=-oaymwEXCNUGEOADIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mLtxWlynBlNSCHsBbxPLxGUhcijQ", + width: 853, + height: 480, ), ], - artists: [ - ArtistId( - id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), - name: "aespa", - ), - ], - artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), - album_type: Album, - year: Some(2022), - by_va: false, + channel: Some(ChannelId( + id: "UCulZuGBZLHEu_9natGq9Q7g", + name: "Jay South Music", + )), + track_count: None, + from_ytm: false, )), - Album(AlbumItem( - id: "MPREb_CznUTKnATw6", - name: "Black Mamba (feat. Foolio)", - cover: [ + Playlist(MusicPlaylistItem( + id: "PL38uS170Dxaatridfyyj-fqjSOlwg7h5R", + name: "Black Mamba Man", + thumbnail: [ Thumbnail( - url: "https://lh3.googleusercontent.com/3ut0tvS5LYcfHjLwrYPSYNbraALbFb9ov28b2GXHB8ABaMGWILUko_BJa1jpsSVrELE_B8so3NtYMVfb1g=w60-h60-l90-rj", - width: 60, - height: 60, + url: "https://i.ytimg.com/vi/1jbpmnC_ox0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kZHx-HBttEizSkMOftu5xGb7CYYQ", + width: 400, + height: 225, ), Thumbnail( - url: "https://lh3.googleusercontent.com/3ut0tvS5LYcfHjLwrYPSYNbraALbFb9ov28b2GXHB8ABaMGWILUko_BJa1jpsSVrELE_B8so3NtYMVfb1g=w120-h120-l90-rj", - width: 120, - height: 120, + url: "https://i.ytimg.com/vi/1jbpmnC_ox0/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3kYUMfl3cLxq6_oUdli4dyGLPrJRA", + width: 800, + height: 450, ), Thumbnail( - url: "https://lh3.googleusercontent.com/3ut0tvS5LYcfHjLwrYPSYNbraALbFb9ov28b2GXHB8ABaMGWILUko_BJa1jpsSVrELE_B8so3NtYMVfb1g=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/3ut0tvS5LYcfHjLwrYPSYNbraALbFb9ov28b2GXHB8ABaMGWILUko_BJa1jpsSVrELE_B8so3NtYMVfb1g=w544-h544-l90-rj", - width: 544, - height: 544, + url: "https://i.ytimg.com/vi/1jbpmnC_ox0/hq720.jpg?sqp=-oaymwEXCNUGEOADIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3n_rKN8FnNasX2FNzN8_OtVyGmvBQ", + width: 853, + height: 480, ), ], - artists: [ - ArtistId( - id: Some("UCZK5n7V2-iPHfUXLV2tDvzw"), - name: "Cojack", - ), - ], - artist_id: Some("UCZK5n7V2-iPHfUXLV2tDvzw"), - album_type: Single, - year: Some(2020), - by_va: false, + channel: Some(ChannelId( + id: "UCNgek3KQIVQsT_2O2puCWRA", + name: "one day", + )), + track_count: None, + from_ytm: false, )), - Artist(ArtistItem( - id: "UCEdZAdnnKqbaHOlv8nM6OtA", - name: "aespa", - avatar: [ + Playlist(MusicPlaylistItem( + id: "PLEl8NhnoNOpbZ0HkkChu3xEhKShx_vtya", + name: "The Black Mamba", + thumbnail: [ Thumbnail( - url: "https://lh3.googleusercontent.com/gV8Sbt3iKraNm_H9ZaH3oh6ERRdN0Dj6qHmTLPiQQ4WS8uGNN09HlpujMJOWwei_z5yC9Th1cZXyOQ=w60-h60-p-l90-rj", - width: 60, - height: 60, + url: "https://yt3.ggpht.com/NtKO3BdJFpImVJNOTFMS2f1F6rK6ivWHVP3jGsYoERpvvBr7oXb7eWSwhIZBYRCEtW_Qvyib9KH2=s192", + width: 192, + height: 192, ), Thumbnail( - url: "https://lh3.googleusercontent.com/gV8Sbt3iKraNm_H9ZaH3oh6ERRdN0Dj6qHmTLPiQQ4WS8uGNN09HlpujMJOWwei_z5yC9Th1cZXyOQ=w120-h120-p-l90-rj", - width: 120, - height: 120, + url: "https://yt3.ggpht.com/NtKO3BdJFpImVJNOTFMS2f1F6rK6ivWHVP3jGsYoERpvvBr7oXb7eWSwhIZBYRCEtW_Qvyib9KH2=s576", + width: 576, + height: 576, + ), + Thumbnail( + url: "https://yt3.ggpht.com/NtKO3BdJFpImVJNOTFMS2f1F6rK6ivWHVP3jGsYoERpvvBr7oXb7eWSwhIZBYRCEtW_Qvyib9KH2=s1200", + width: 1200, + height: 1200, ), ], - subscriber_count: Some(4120000), + channel: Some(ChannelId( + id: "UCCE3DsIpCrNWQMICx-zMNew", + name: "MoveAMente", + )), + track_count: None, + from_ytm: false, )), Artist(ArtistItem( id: "UCaDT20-B3U8h-tPg_VMvntw", @@ -342,19 +474,36 @@ MusicSearchResult( height: 120, ), ], - subscriber_count: Some(2640), + subscriber_count: Some(2890), + )), + Artist(ArtistItem( + id: "UCRpi1gBlax4sK3dNNxIxxFg", + name: "Black Mamba Official", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/DBaVgQwyirgH4_Rg6w7jQBTP1fyHl5dNMK91dLZD5q2lFLoijOK3Or53rVnNgYfTQwDIofcLrG2QtxKQoQ=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/DBaVgQwyirgH4_Rg6w7jQBTP1fyHl5dNMK91dLZD5q2lFLoijOK3Or53rVnNgYfTQwDIofcLrG2QtxKQoQ=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: Some(140), )), Artist(ArtistItem( id: "UCLcwLJIGBDDvbfq8JERV6Ag", name: "Black Mamba", avatar: [ Thumbnail( - url: "https://lh3.googleusercontent.com/qPN6oDatmKgTxytO4b8ScN1qGGMBpsF2_vH9OG1sSDn8Hew28J8vy9y4WNWOJYvSCyHbghIs_B5aGgkJ=w60-h60-l90-rj", + url: "https://lh3.googleusercontent.com/qorCs0oXX4VRdkGM6T6pG9IEugjWfeA9hWoGSzkH427PkRcMi5cJR6Vy4m_FTw-Bhmnj-sAHH54i7PI2=w60-h60-l90-rj", width: 60, height: 60, ), Thumbnail( - url: "https://lh3.googleusercontent.com/qPN6oDatmKgTxytO4b8ScN1qGGMBpsF2_vH9OG1sSDn8Hew28J8vy9y4WNWOJYvSCyHbghIs_B5aGgkJ=w120-h120-l90-rj", + url: "https://lh3.googleusercontent.com/qorCs0oXX4VRdkGM6T6pG9IEugjWfeA9hWoGSzkH427PkRcMi5cJR6Vy4m_FTw-Bhmnj-sAHH54i7PI2=w120-h120-l90-rj", width: 120, height: 120, ), @@ -362,86 +511,205 @@ MusicSearchResult( subscriber_count: Some(9), )), Playlist(MusicPlaylistItem( - id: "PLk76iSbFqNJsu_Gozn9SkEXxQ7t-bpXid", - name: "IRMA MIRTILLA Black Mamba", + id: "PLF1nPSf9c6AdlQDKMe5gW0ztSNR4GPrcl", + name: "The Mamba + Maddy Show", thumbnail: [ Thumbnail( - url: "https://i.ytimg.com/vi/md19pon3B9o/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kR84wE4E_UufGzATfZhAsFWEieaA", - width: 400, - height: 225, + url: "https://i.ytimg.com/pl_c/PLF1nPSf9c6AdlQDKMe5gW0ztSNR4GPrcl/studio_square_thumbnail.jpg?sqp=CM3xtbkG-oaymwEICDwQPCAASFqi85f_AwYI3OWhtAY&rs=AMzJL3m9ePMyYiazdHhl0bve79YoANXNHA", + width: 60, + height: 60, ), Thumbnail( - url: "https://i.ytimg.com/vi/md19pon3B9o/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nxumiGKYWYiiTokZB8M6rwtK5mRw", - width: 800, - height: 450, + url: "https://i.ytimg.com/pl_c/PLF1nPSf9c6AdlQDKMe5gW0ztSNR4GPrcl/studio_square_thumbnail.jpg?sqp=CM3xtbkG-oaymwEICHgQeCAASFqi85f_AwYI3OWhtAY&rs=AMzJL3kBrm54WfDV1202bhc_7NnFtuR2QA", + width: 120, + height: 120, ), Thumbnail( - url: "https://i.ytimg.com/vi/md19pon3B9o/hq720.jpg?sqp=-oaymwEXCNUGEOADIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mEU1yvpIHQXYgVnCyXx8Rlzilg6Q", - width: 853, - height: 480, + url: "https://i.ytimg.com/pl_c/PLF1nPSf9c6AdlQDKMe5gW0ztSNR4GPrcl/studio_square_thumbnail.jpg?sqp=CM3xtbkG-oaymwEKCOIBEOIBIABIWqLzl_8DBgjc5aG0Bg&rs=AMzJL3moPZlY6pebVzsucNM0hFJg6E1iOA", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://i.ytimg.com/pl_c/PLF1nPSf9c6AdlQDKMe5gW0ztSNR4GPrcl/studio_square_thumbnail.jpg?sqp=CM3xtbkG-oaymwEKCKAEEKAEIABIWqLzl_8DBgjc5aG0Bg&rs=AMzJL3kK8BcSgB8AnNLvrIlo25u5ldoy9A", + width: 544, + height: 544, ), ], - channel: Some(ChannelId( - id: "UCtZaFx5MXZHIh7VTItJK1lQ", - name: "Lajos Fülöp", - )), + channel: None, track_count: None, from_ytm: false, )), Playlist(MusicPlaylistItem( - id: "PLIL9Q2jz6euDEJZKHd4QaG4iic944_vKY", - name: "Black Mamba", + id: "PL4OEJAvKcBHAe32md9b1c9kEUNi6Ifbqu", + name: "Tooth & Claw Podcast", thumbnail: [ Thumbnail( - url: "https://yt3.ggpht.com/jsvBK6isPIQ0ERSc1xV6PoaYxbYZqCzqr90lHZNEfUcQL2lP0oNzrdimX8KIBchE6X8myc58zwyS=s192", - width: 192, - height: 192, + url: "https://i.ytimg.com/vi/s7sLjdWb-D4/hqdefault.jpg?sqp=-oaymwExCI4CEI4CIAQqCggAEOADGC0guwJIWvKriqkDFZoCEgg0EDgYFyABLQAAoEE1zcxMPw&rs=AMzJL3m2chIFdDJTYKB7dW_xtWdZcsZg3A", + width: 270, + height: 270, ), Thumbnail( - url: "https://yt3.ggpht.com/jsvBK6isPIQ0ERSc1xV6PoaYxbYZqCzqr90lHZNEfUcQL2lP0oNzrdimX8KIBchE6X8myc58zwyS=s576", - width: 576, - height: 576, - ), - Thumbnail( - url: "https://yt3.ggpht.com/jsvBK6isPIQ0ERSc1xV6PoaYxbYZqCzqr90lHZNEfUcQL2lP0oNzrdimX8KIBchE6X8myc58zwyS=s1200", - width: 1200, - height: 1200, + url: "https://i.ytimg.com/vi/s7sLjdWb-D4/hq720.jpg?sqp=-oaymwElCNAFENAFIAZIWvKriqkDFZoCEgg0EDgYFyABLQAAoEE1zcxMPw&rs=AMzJL3klUEptMBmqrEkpdCBn4cnZ_dnaXw", + width: 720, + height: 720, ), ], - channel: Some(ChannelId( - id: "UCwFT0vvkbtbohtzVbwx7WjQ", - name: "Toshihiko KOMINAMI", - )), + channel: None, track_count: None, from_ytm: false, )), Playlist(MusicPlaylistItem( - id: "PLinm7-cvTdN7RqadpfNrncUGqkdyKNpn6", - name: "Black Mamba", + id: "PLQ0daRB_QJ_ZkIhLnp_nPeURDM4vQM5yg", + name: "You Should Know Podcast", thumbnail: [ Thumbnail( - url: "https://yt3.ggpht.com/hj6EywHSUD3UEnRQPHaEjHPC1VRi9UcsrkW8zGiOaXhRGlyNikLw6Iv0VnHTSuo2MlVBiQaskqo=s192", - width: 192, - height: 192, + url: "https://yt3.googleusercontent.com/n4-LrAD8Piik4s3N4OKu3gmotbTnjlJ30twT8IrUVMoNvSHBrCiFppALvovh52qVhvWifoR7jA=w60-c-h60-k-c0x00ffffff-no-l90-rj", + width: 60, + height: 60, ), Thumbnail( - url: "https://yt3.ggpht.com/hj6EywHSUD3UEnRQPHaEjHPC1VRi9UcsrkW8zGiOaXhRGlyNikLw6Iv0VnHTSuo2MlVBiQaskqo=s576", - width: 576, - height: 576, + url: "https://yt3.googleusercontent.com/n4-LrAD8Piik4s3N4OKu3gmotbTnjlJ30twT8IrUVMoNvSHBrCiFppALvovh52qVhvWifoR7jA=w120-c-h120-k-c0x00ffffff-no-l90-rj", + width: 120, + height: 120, ), Thumbnail( - url: "https://yt3.ggpht.com/hj6EywHSUD3UEnRQPHaEjHPC1VRi9UcsrkW8zGiOaXhRGlyNikLw6Iv0VnHTSuo2MlVBiQaskqo=s1200", - width: 1200, - height: 1200, + url: "https://yt3.googleusercontent.com/n4-LrAD8Piik4s3N4OKu3gmotbTnjlJ30twT8IrUVMoNvSHBrCiFppALvovh52qVhvWifoR7jA=w226-c-h226-k-c0x00ffffff-no-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/n4-LrAD8Piik4s3N4OKu3gmotbTnjlJ30twT8IrUVMoNvSHBrCiFppALvovh52qVhvWifoR7jA=w544-c-h544-k-c0x00ffffff-no-l90-rj", + width: 544, + height: 544, ), ], - channel: Some(ChannelId( - id: "UCEdZAdnnKqbaHOlv8nM6OtA", - name: "aespa", - )), + channel: None, track_count: None, from_ytm: false, )), + Track(TrackItem( + id: "xd-9D3GzUpo", + name: "MAMBA MENTALITY - Kobe Bryant Motivational Speech", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/xd-9D3GzUpo/hqdefault.jpg?sqp=-oaymwEWCOADEI4CIAQqCggAEOADGC0guwJIWg&rs=AMzJL3k3TxrniLSRkQR1LMtpKFsrd-x-Vg", + width: 480, + height: 270, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Discipline Motivation - Best Motivational Speeches By Motiversity", + ), + ], + artist_id: None, + album: None, + view_count: None, + is_video: true, + track_nr: None, + by_va: false, + )), + Track(TrackItem( + id: "GE0UAdxPTc0", + name: "THE MAMBA MENTALITY - Kobe Bryant Motivational Speech Compilation", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/GE0UAdxPTc0/hqdefault.jpg?sqp=-oaymwEWCOADEI4CIAQqCggAEOADGC0guwJIWg&rs=AMzJL3mI3Lbo29pKfU9Qpv3lLY04Fi0yLg", + width: 480, + height: 270, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Motivation Daily by Motiversity", + ), + ], + artist_id: None, + album: None, + view_count: None, + is_video: true, + track_nr: None, + by_va: false, + )), + Track(TrackItem( + id: "4gi9y3sTrXE", + name: "Mamba Mentality - Kobe Bryant (Motivational Video)", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/4gi9y3sTrXE/hqdefault.jpg?sqp=-oaymwEWCOADEI4CIAQqCggAEOADGC0guwJIWg&rs=AMzJL3mi8Id0rBphHeAUx35-u2iDbL2liQ", + width: 480, + height: 270, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Powerful Motivational Speech (Chispa Motivation)", + ), + ], + artist_id: None, + album: None, + view_count: None, + is_video: true, + track_nr: None, + by_va: false, + )), + User(UserItem( + id: "UCOeTBeQwhOSvNcaZhxM1PUg", + name: "Black Mamba", + handle: Some("@blackmambagyn"), + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/WR8-SnEMVJ-FRQxo0M_nsOO5ceDql9vWSZ8Os4pyrPd6gLE_cLm3K68F6Ozh38gKoYke9FSL1g=w60-c-h60-k-c0x00ffffff-no-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/WR8-SnEMVJ-FRQxo0M_nsOO5ceDql9vWSZ8Os4pyrPd6gLE_cLm3K68F6Ozh38gKoYke9FSL1g=w120-c-h120-k-c0x00ffffff-no-l90-rj", + width: 120, + height: 120, + ), + ], + )), + User(UserItem( + id: "UCpxiesQUPBb1H-rCNR9vU-w", + name: "BLACK MAMBA", + handle: Some("@BLACKMAMBA-lv4xw"), + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/TunC2xLBq7LNTJHQYyRKFqyUp6QNUl0ZNDo3axPBiDIWMDAsaOvHPi6cHqzdONhLXcFOPCU2FA=w60-c-h60-k-c0x00ffffff-no-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/TunC2xLBq7LNTJHQYyRKFqyUp6QNUl0ZNDo3axPBiDIWMDAsaOvHPi6cHqzdONhLXcFOPCU2FA=w120-c-h120-k-c0x00ffffff-no-l90-rj", + width: 120, + height: 120, + ), + ], + )), + User(UserItem( + id: "UC04-OP5K9gQ_0x39dERUBQw", + name: "Black Mamba", + handle: Some("@blackmamba1294"), + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_n4zT7h4GQ1HWesFb706jhqzxvNRZlV3oAmF4ug-OU=w60-c-h60-k-c0x00ffffff-no-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_n4zT7h4GQ1HWesFb706jhqzxvNRZlV3oAmF4ug-OU=w120-c-h120-k-c0x00ffffff-no-l90-rj", + width: 120, + height: 120, + ), + ], + )), ], ctoken: None, endpoint: music_search, diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_live.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_live.snap index 187099c..449f0c2 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_live.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_live.snap @@ -4,7 +4,7 @@ expression: map_res.c --- MusicSearchResult( items: Paginator( - count: Some(24), + count: Some(27), items: [ Playlist(MusicPlaylistItem( id: "RDATficG9wIHJhZGlv", @@ -650,6 +650,57 @@ MusicSearchResult( track_nr: None, by_va: false, )), + User(UserItem( + id: "UCdQrWgvHD9f-caMSn3SS-WQ", + name: "Pop Hist Radio", + handle: Some("@PopHistRadio"), + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/2Py1-HUmfdmgxE3PEL-EdCE4lgGktuklnIOPdBy0N1_51Ne65bW5gJnxcc-eJB9vxhbU4-JQCg=w60-c-h60-k-c0x00ffffff-no-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/2Py1-HUmfdmgxE3PEL-EdCE4lgGktuklnIOPdBy0N1_51Ne65bW5gJnxcc-eJB9vxhbU4-JQCg=w120-c-h120-k-c0x00ffffff-no-l90-rj", + width: 120, + height: 120, + ), + ], + )), + User(UserItem( + id: "UC-j25R4eGB_pjsaRxF5WOoQ", + name: "HMD RADIO POP", + handle: Some("@hmdradiopop5581"), + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_kuTfeNrt95jHhzzMfQoqFSGWo2cCfUsZ_OHH5zpeM=w60-c-h60-k-c0x00ffffff-no-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_kuTfeNrt95jHhzzMfQoqFSGWo2cCfUsZ_OHH5zpeM=w120-c-h120-k-c0x00ffffff-no-l90-rj", + width: 120, + height: 120, + ), + ], + )), + User(UserItem( + id: "UCRkEipin-M9fQ12UWxc9UGQ", + name: "MUSIC RADIO", + handle: Some("@musicradio8514"), + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/evLHWABaoAFyXkfnSH95NZ7Fj96AmPW4iHp7pQckNn48PBmKeIvrkgnMtSdwQCOuqLx3tpQIuA=w60-c-h60-k-c0x00ffffff-no-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/evLHWABaoAFyXkfnSH95NZ7Fj96AmPW4iHp7pQckNn48PBmKeIvrkgnMtSdwQCOuqLx3tpQIuA=w120-c-h120-k-c0x00ffffff-no-l90-rj", + width: 120, + height: 120, + ), + ], + )), ], ctoken: None, endpoint: music_search, diff --git a/src/model/convert.rs b/src/model/convert.rs index 0800006..5610014 100644 --- a/src/model/convert.rs +++ b/src/model/convert.rs @@ -1,7 +1,7 @@ use super::{ AlbumItem, ArtistId, ArtistItem, Channel, ChannelId, ChannelItem, ChannelRssVideo, ChannelTag, - MusicArtist, MusicItem, MusicPlaylistItem, PlaylistItem, TrackItem, VideoId, VideoItem, - YouTubeItem, + MusicArtist, MusicItem, MusicPlaylistItem, PlaylistItem, TrackItem, UserItem, VideoId, + VideoItem, YouTubeItem, }; /// Trait for casting generic YouTube/YouTube music items to a specific kind. @@ -139,6 +139,21 @@ impl From for MusicItem { } } +impl FromYtItem for UserItem { + fn from_ytm_item(item: MusicItem) -> Option { + match item { + MusicItem::User(user) => Some(user), + _ => None, + } + } +} + +impl From for MusicItem { + fn from(value: UserItem) -> Self { + Self::User(value) + } +} + impl From> for ChannelTag { fn from(channel: Channel) -> Self { Self { diff --git a/src/model/mod.rs b/src/model/mod.rs index 7adaeac..973e981 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -964,6 +964,19 @@ pub struct ArtistItem { pub subscriber_count: Option, } +/// YouTube Music user item +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +pub struct UserItem { + /// Unique YouTube user ID + pub id: String, + /// User name + pub name: String, + /// YouTube channel handle (e.g. `@EEVblog`) + pub handle: Option, + /// User avatar/profile picture + pub avatar: Vec, +} + /// YouTube Music artist identifier #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] @@ -1140,6 +1153,7 @@ pub enum MusicItem { Album(AlbumItem), Artist(ArtistItem), Playlist(MusicPlaylistItem), + User(UserItem), } /// YouTube Music item type @@ -1150,6 +1164,7 @@ pub enum MusicItemType { Album, Artist, Playlist, + User, } /// YouTube Music search result diff --git a/src/model/traits.rs b/src/model/traits.rs index 30451a8..d4f6253 100644 --- a/src/model/traits.rs +++ b/src/model/traits.rs @@ -143,10 +143,12 @@ pub trait YtEntity { /// /// `None` if the entity does not belong to a channel fn channel_name(&self) -> Option<&str>; + /// YTM item type + fn music_item_type(&self) -> Option; } macro_rules! yt_entity { - ($entity_type:ty) => { + ($entity_type:ty, $music_item_type:expr) => { impl YtEntity for $entity_type { fn id(&self) -> &str { &self.id @@ -163,12 +165,16 @@ macro_rules! yt_entity { fn channel_name(&self) -> Option<&str> { None } + + fn music_item_type(&self) -> Option { + $music_item_type + } } }; } macro_rules! yt_entity_owner { - ($entity_type:ty) => { + ($entity_type:ty, $music_item_type:expr) => { impl YtEntity for $entity_type { fn id(&self) -> &str { &self.id @@ -185,12 +191,16 @@ macro_rules! yt_entity_owner { fn channel_name(&self) -> Option<&str> { Some(&self.channel.name) } + + fn music_item_type(&self) -> Option { + Some($music_item_type) + } } }; } macro_rules! yt_entity_owner_opt { - ($entity_type:ty) => { + ($entity_type:ty, $music_item_type:expr) => { impl YtEntity for $entity_type { fn id(&self) -> &str { &self.id @@ -207,12 +217,16 @@ macro_rules! yt_entity_owner_opt { fn channel_name(&self) -> Option<&str> { self.channel.as_ref().map(|c| c.name.as_str()) } + + fn music_item_type(&self) -> Option { + Some($music_item_type) + } } }; } macro_rules! yt_entity_owner_music { - ($entity_type:ty) => { + ($entity_type:ty, $music_item_type:expr) => { impl YtEntity for $entity_type { fn id(&self) -> &str { &self.id @@ -233,6 +247,10 @@ macro_rules! yt_entity_owner_music { self.artists.first().map(|a| a.name.as_str()) } } + + fn music_item_type(&self) -> Option { + Some($music_item_type) + } } }; } @@ -253,6 +271,10 @@ impl YtEntity for Channel { fn channel_name(&self) -> Option<&str> { None } + + fn music_item_type(&self) -> Option { + Some(MusicItemType::User) + } } impl YtEntity for YouTubeItem { @@ -287,6 +309,14 @@ impl YtEntity for YouTubeItem { YouTubeItem::Channel(_) => None, } } + + fn music_item_type(&self) -> Option { + Some(match self { + YouTubeItem::Video(_) => MusicItemType::Track, + YouTubeItem::Playlist(_) => MusicItemType::Playlist, + YouTubeItem::Channel(_) => MusicItemType::User, + }) + } } impl YtEntity for MusicItem { @@ -296,6 +326,7 @@ impl YtEntity for MusicItem { MusicItem::Album(b) => &b.id, MusicItem::Artist(a) => &a.id, MusicItem::Playlist(p) => &p.id, + MusicItem::User(u) => &u.id, } } @@ -305,6 +336,7 @@ impl YtEntity for MusicItem { MusicItem::Album(b) => &b.name, MusicItem::Artist(a) => &a.name, MusicItem::Playlist(p) => &p.name, + MusicItem::User(u) => &u.name, } } @@ -312,7 +344,7 @@ impl YtEntity for MusicItem { match self { MusicItem::Track(t) => t.channel_id(), MusicItem::Album(b) => b.channel_id(), - MusicItem::Artist(_) => None, + MusicItem::Artist(_) | MusicItem::User(_) => None, MusicItem::Playlist(p) => p.channel_id(), } } @@ -321,29 +353,40 @@ impl YtEntity for MusicItem { match self { MusicItem::Track(t) => t.channel_name(), MusicItem::Album(b) => b.channel_name(), - MusicItem::Artist(_) => None, - MusicItem::Playlist(p) => p.channel_id(), + MusicItem::Artist(_) | MusicItem::User(_) => None, + MusicItem::Playlist(p) => p.channel_name(), } } + + fn music_item_type(&self) -> Option { + Some(match self { + MusicItem::Track(_) => MusicItemType::Track, + MusicItem::Album(_) => MusicItemType::Album, + MusicItem::Artist(_) => MusicItemType::Artist, + MusicItem::Playlist(_) => MusicItemType::Playlist, + MusicItem::User(_) => MusicItemType::User, + }) + } } -yt_entity_owner_opt! {Playlist} -yt_entity! {ChannelId} -yt_entity_owner! {VideoDetails} -yt_entity! {ChannelTag} -yt_entity! {ChannelRss} -yt_entity! {ChannelRssVideo} -yt_entity_owner_opt! {VideoItem} -yt_entity! {ChannelItem} -yt_entity_owner_opt! {PlaylistItem} -yt_entity! {VideoId} -yt_entity_owner_music! {TrackItem} -yt_entity! {ArtistItem} -yt_entity_owner_music! {AlbumItem} -yt_entity_owner_opt! {MusicPlaylistItem} -yt_entity! {AlbumId} -yt_entity_owner_opt! {MusicPlaylist} -yt_entity_owner_music! {MusicAlbum} -yt_entity! {MusicArtist} -yt_entity! {MusicGenreItem} -yt_entity! {MusicGenre} +yt_entity_owner_opt! {Playlist, MusicItemType::Playlist} +yt_entity! {ChannelId, Some(MusicItemType::User)} +yt_entity_owner! {VideoDetails, MusicItemType::Track} +yt_entity! {ChannelTag, Some(MusicItemType::User)} +yt_entity! {ChannelRss, Some(MusicItemType::User)} +yt_entity! {ChannelRssVideo, Some(MusicItemType::Track)} +yt_entity_owner_opt! {VideoItem, MusicItemType::Track} +yt_entity! {ChannelItem, Some(MusicItemType::User)} +yt_entity_owner_opt! {PlaylistItem, MusicItemType::Playlist} +yt_entity! {VideoId, Some(MusicItemType::Track)} +yt_entity_owner_music! {TrackItem, MusicItemType::Track} +yt_entity! {ArtistItem, Some(MusicItemType::Artist)} +yt_entity_owner_music! {AlbumItem, MusicItemType::Album} +yt_entity_owner_opt! {MusicPlaylistItem, MusicItemType::Playlist} +yt_entity! {AlbumId, Some(MusicItemType::Album)} +yt_entity_owner_opt! {MusicPlaylist, MusicItemType::Playlist} +yt_entity_owner_music! {MusicAlbum, MusicItemType::Album} +yt_entity! {MusicArtist, Some(MusicItemType::Artist)} +yt_entity! {UserItem, Some(MusicItemType::User)} +yt_entity! {MusicGenreItem, None} +yt_entity! {MusicGenre, None} diff --git a/src/param/search_filter.rs b/src/param/search_filter.rs index 9dbbb8f..c0f18ee 100644 --- a/src/param/search_filter.rs +++ b/src/param/search_filter.rs @@ -236,17 +236,20 @@ pub enum MusicSearchFilter { YtmPlaylists, /// Playlists created by YouTube users CommunityPlaylists, + /// Users + Users, } impl MusicSearchFilter { pub(crate) fn params(self) -> &'static str { match self { - MusicSearchFilter::Tracks => "EgWKAQIIAWoMEAMQBBAJEA4QChAF", - MusicSearchFilter::Videos => "EgWKAQIQAWoMEAMQBBAJEA4QChAF", - MusicSearchFilter::Albums => "EgWKAQIYAWoMEAMQBBAJEA4QChAF", - MusicSearchFilter::Artists => "EgWKAQIgAWoMEAMQBBAJEA4QChAF", - MusicSearchFilter::YtmPlaylists => "EgeKAQQoADgBagwQAxAEEAkQDhAKEAU%3D", - MusicSearchFilter::CommunityPlaylists => "EgeKAQQoAEABagwQAxAEEAkQDhAKEAU%3D", + MusicSearchFilter::Tracks => "EgWKAQIIAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", + MusicSearchFilter::Videos => "EgWKAQIQAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", + MusicSearchFilter::Albums => "EgWKAQIYAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", + MusicSearchFilter::Artists => "EgWKAQIgAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", + MusicSearchFilter::YtmPlaylists => "EgeKAQQoADgBahIQAxAEEAkQDhAKEAUQERAQEBU%3D", + MusicSearchFilter::CommunityPlaylists => "EgeKAQQoAEABahAQAxAEEAkQChAFEBEQEBAV", + MusicSearchFilter::Users => "EgWKAQJYAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", } } } diff --git a/testfiles/music_search/main_default.json b/testfiles/music_search/main_default.json index 8a8ab88..eeb2a33 100644 --- a/testfiles/music_search/main_default.json +++ b/testfiles/music_search/main_default.json @@ -20,7 +20,7 @@ "iconPosition": "BUTTON_ICON_POSITION_TYPE_RIGHT_OF_TEXT", "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "COkBEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CPICEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", "urlEndpoint": { "target": "TARGET_NEW_WINDOW", "url": "https://www.youtube.com/howyoutubeworks/product-features/search/" @@ -30,22 +30,144 @@ "text": { "simpleText": "About these results" }, - "trackingParams": "COkBEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CPICEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "style": { "value": "RENDER_STYLE_PANEL" }, - "trackingParams": "COgBEJY7GAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CPECEJY7GAAiEwjXycDE2cuJAxW130IFHXHTAXU=" } } ], - "trackingParams": "COcBELsvGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CPACELsvGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { - "musicShelfRenderer": { + "musicCardShelfRenderer": { + "buttons": [ + { + "buttonRenderer": { + "accessibility": { + "label": "PLAY ALL" + }, + "accessibilityData": { + "accessibilityData": { + "label": "PLAY ALL" + } + }, + "command": { + "clickTrackingParams": "CMICEJTSBRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1MgZzZWFyY2hSC2JsYWNrIG1hbWJhmgEDEPQk", + "watchEndpoint": { + "params": "wAEB", + "videoId": "ZeerrnuLi5E", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "icon": { + "iconType": "PLAY_ARROW" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DARK_ON_WHITE", + "text": { + "runs": [ + { + "text": "Play" + } + ] + }, + "trackingParams": "CMICEJTSBRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "buttonRenderer": { + "accessibility": { + "label": "Save to playlist" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Save to playlist" + } + }, + "command": { + "clickTrackingParams": "CMACEJimCBgFIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMECEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMECEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "style": "STYLE_WHITE_TRANSLUCENT", + "text": { + "runs": [ + { + "text": "Save" + } + ] + }, + "trackingParams": "CMACEJimCBgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + ], "contents": [ + { + "messageRenderer": { + "style": { + "value": "RENDER_STYLE_SIMPLE_HEADER" + }, + "text": { + "runs": [ + { + "text": "More from YouTube" + } + ] + }, + "trackingParams": "CO4CEJY7GAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, { "musicResponsiveListItemRenderer": { "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", @@ -57,9 +179,9 @@ "runs": [ { "navigationEndpoint": { - "clickTrackingParams": "CNgBENNoGAAiEwiAuaHGkYn7AhWq7BEIHeCyArGaAQMQ9CQ=", + "clickTrackingParams": "CN8CEMGhCBgBIhMI18nAxNnLiQMVtd9CBR1x0wF1mgEDEPQk", "watchEndpoint": { - "videoId": "ZeerrnuLi5E", + "videoId": "NU611fxGyPU", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" @@ -77,6 +199,11 @@ "musicResponsiveListItemFlexColumnRenderer": { "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", "text": { + "accessibility": { + "accessibilityData": { + "label": "Video • aespa • 43M views • 2 minutes, 55 seconds" + } + }, "runs": [ { "text": "Video" @@ -94,7 +221,7 @@ }, "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" }, - "clickTrackingParams": "CNgBENNoGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CN8CEMGhCBgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" }, "text": "aespa" }, @@ -102,505 +229,7 @@ "text": " • " }, { - "text": "235M views" - }, - { - "text": " • " - }, - { - "text": "3:50" - } - ] - } - } - } - ], - "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", - "menu": { - "menuRenderer": { - "accessibility": { - "accessibilityData": { - "label": "Action menu" - } - }, - "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "COQBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKxmgEDEPQk", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk1aZWVycm51TGk1RQ%3D%3D" - } - }, - "params": "wAEB", - "playlistId": "RDAMVMZeerrnuLi5E", - "videoId": "ZeerrnuLi5E", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "COQBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "COIBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song will play next" - } - ] - }, - "trackingParams": "COMBEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" - } - } - }, - "clickTrackingParams": "COIBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "videoId": "ZeerrnuLi5E" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "COIBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "COABEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song added to queue" - } - ] - }, - "trackingParams": "COEBEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" - } - } - }, - "clickTrackingParams": "COABEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "videoId": "ZeerrnuLi5E" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "COABEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "FAVORITE" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CN4BEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CN8BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CN8BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - "content": { - "runs": [ - { - "text": "Improve recommendations and save music after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Like this song" - } - ] - } - } - } - } - }, - "defaultText": { - "runs": [ - { - "text": "Add to liked songs" - } - ] - }, - "toggledIcon": { - "iconType": "UNFAVORITE" - }, - "toggledText": { - "runs": [ - { - "text": "Remove from liked songs" - } - ] - }, - "trackingParams": "CN4BEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNwBEMOUBhgEIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CN0BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CN0BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - "content": { - "runs": [ - { - "text": "Make playlists and share them after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Save this for later" - } - ] - } - } - } - } - }, - "text": { - "runs": [ - { - "text": "Add to playlist" - } - ] - }, - "trackingParams": "CNwBEMOUBhgEIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" - }, - "clickTrackingParams": "CNsBEJD7BRgFIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CNsBEJD7BRgFIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNoBEJH7BRgGIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "shareEntityEndpoint": { - "serializedShareEntity": "CgtaZWVycm51TGk1RQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CNoBEJH7BRgGIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - } - ], - "trackingParams": "CNkBEKc7IhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - "overlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "3422552064", - "3422552064" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Black Mamba - aespa" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Black Mamba - aespa" - } - }, - "activeBackgroundColor": 0, - "activeScaleFactor": 1, - "backgroundColor": 0, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", - "iconColor": 4294967295, - "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "COUBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==", - "watchEndpoint": { - "videoId": "ZeerrnuLi5E", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "COUBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==" - } - }, - "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", - "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" - } - }, - "playlistItemData": { - "videoId": "ZeerrnuLi5E" - }, - "thumbnail": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 225, - "url": "https://i.ytimg.com/vi/ZeerrnuLi5E/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3maNxpYzTFmXZBd8s1w1iE6rTBDaw", - "width": 400 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "COYBEIS_AiITCIC5ocaRifsCFarsEQgd4LICsQ==" - } - }, - "trackingParams": "CNgBENNoGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - } - ], - "shelfDivider": { - "musicShelfDividerRenderer": { - "hidden": true - } - }, - "title": { - "runs": [ - { - "text": "Top result" - } - ] - }, - "trackingParams": "CNcBEPleGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "musicShelfRenderer": { - "bottomEndpoint": { - "clickTrackingParams": "CKYBEPleGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "searchEndpoint": { - "params": "EgWKAQIIAWoKEAMQBBAJEAUQCg%3D%3D", - "query": "black mamba" - } - }, - "bottomText": { - "runs": [ - { - "text": "Show all" - } - ] - }, - "contents": [ - { - "musicResponsiveListItemRenderer": { - "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", - "flexColumns": [ - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", - "text": { - "runs": [ - { - "navigationEndpoint": { - "clickTrackingParams": "CMcBEOFnGAAiEwiAuaHGkYn7AhWq7BEIHeCyArGaAQMQ9CQ=", - "watchEndpoint": { - "videoId": "BL-aIpCLWnU", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" - } - } - } - }, - "text": "Black Mamba" - } - ] - } - } - }, - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", - "text": { - "runs": [ - { - "text": "Song" - }, - { - "text": " • " - }, - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" - }, - "clickTrackingParams": "CMcBEOFnGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - }, - "text": "aespa" - }, - { - "text": " • " - }, - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_OpHWHwyNOuY" - }, - "clickTrackingParams": "CMcBEOFnGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - }, - "text": "Black Mamba" + "text": "43M views" }, { "text": " • " @@ -628,19 +257,19 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CNQBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKxmgEDEPQk", + "clickTrackingParams": "COsCEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1mgEDEPQk", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk1CTC1hSXBDTFduVQ%3D%3D" + "serializedContextData": "GhFSREFNVk1OVTYxMWZ4R3lQVQ%3D%3D" } }, "params": "wAEB", - "playlistId": "RDAMVMBL-aIpCLWnU", - "videoId": "BL-aIpCLWnU", + "playlistId": "RDAMVMNU611fxGyPU", + "videoId": "NU611fxGyPU", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" } } } @@ -652,7 +281,7 @@ } ] }, - "trackingParams": "CNQBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "COsCEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -661,7 +290,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CNIBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "COkCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", "queueAddEndpoint": { "commands": [ { @@ -675,16 +304,22 @@ } ] }, - "trackingParams": "CNMBEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "COoCEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } }, - "clickTrackingParams": "CNIBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "COkCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "videoId": "BL-aIpCLWnU" + "onEmptyQueue": { + "clickTrackingParams": "COkCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "NU611fxGyPU" + } + }, + "videoId": "NU611fxGyPU" } } }, @@ -695,7 +330,7 @@ } ] }, - "trackingParams": "CNIBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "COkCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -704,7 +339,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CNABEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "COcCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", "queueAddEndpoint": { "commands": [ { @@ -718,16 +353,22 @@ } ] }, - "trackingParams": "CNEBEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "COgCEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } }, - "clickTrackingParams": "CNABEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "COcCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "videoId": "BL-aIpCLWnU" + "onEmptyQueue": { + "clickTrackingParams": "COcCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "NU611fxGyPU" + } + }, + "videoId": "NU611fxGyPU" } } }, @@ -738,7 +379,7 @@ } ] }, - "trackingParams": "CNABEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "COcCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -747,7 +388,7 @@ "iconType": "FAVORITE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CM4BEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "COUCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -755,7 +396,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CM8BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "COYCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", "signInEndpoint": { "hack": true } @@ -768,7 +409,7 @@ } ] }, - "trackingParams": "CM8BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "COYCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "content": { @@ -806,7 +447,7 @@ } ] }, - "trackingParams": "CM4BEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "COUCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -815,7 +456,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CMwBEMOUBhgEIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "COMCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -823,7 +464,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CM0BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "COQCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", "signInEndpoint": { "hack": true } @@ -836,7 +477,7 @@ } ] }, - "trackingParams": "CM0BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "COQCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "content": { @@ -860,37 +501,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CMwBEMOUBhgEIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ALBUM" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_OpHWHwyNOuY" - }, - "clickTrackingParams": "CMsBEI_7BRgFIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - }, - "text": { - "runs": [ - { - "text": "Go to album" - } - ] - }, - "trackingParams": "CMsBEI_7BRgFIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "COMCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -907,7 +522,7 @@ }, "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" }, - "clickTrackingParams": "CMoBEJD7BRgGIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "COICEJD7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" }, "text": { "runs": [ @@ -916,7 +531,7 @@ } ] }, - "trackingParams": "CMoBEJD7BRgGIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "COICEJD7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -925,9 +540,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CMkBEJH7BRgHIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "COECEJH7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1", "shareEntityEndpoint": { - "serializedShareEntity": "CgtCTC1hSXBDTFduVQ%3D%3D", + "serializedShareEntity": "CgtOVTYxMWZ4R3lQVQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -938,11 +553,11 @@ } ] }, - "trackingParams": "CMkBEJH7BRgHIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "COECEJH7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" } } ], - "trackingParams": "CMgBEKc7IhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "COACEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "overlay": { @@ -973,7 +588,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -981,7 +596,1930 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CNUBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==", + "clickTrackingParams": "COwCEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "watchEndpoint": { + "videoId": "NU611fxGyPU", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "COwCEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "NU611fxGyPU" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 225, + "url": "https://i.ytimg.com/vi/NU611fxGyPU/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3md93InOvanuHclIZe1FpSmEVWGKw", + "width": 400 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CO0CEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "trackingParams": "CN8CEMGhCBgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CNECEMGhCBgCIhMI18nAxNnLiQMVtd9CBR1x0wF1mgEDEPQk", + "watchEndpoint": { + "videoId": "Yi2nsnpw5h0", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + }, + "text": "aespa - Black Mamba (Official Instrumental)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "accessibility": { + "accessibilityData": { + "label": "Video • aesthetic inst. • 1.5M views • 2 minutes, 55 seconds" + } + }, + "runs": [ + { + "text": "Video" + }, + { + "text": " • " + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + }, + "browseId": "UCx5Dw_5guQcKu_lMGCh-IuQ" + }, + "clickTrackingParams": "CNECEMGhCBgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "text": "aesthetic inst." + }, + { + "text": " • " + }, + { + "text": "1.5M views" + }, + { + "text": " • " + }, + { + "text": "2:55" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNwCEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1mgEDEPQk", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1ZaTJuc25wdzVoMA%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMYi2nsnpw5h0", + "videoId": "Yi2nsnpw5h0", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CNwCEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNoCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CNsCEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CNoCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNoCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "Yi2nsnpw5h0" + } + }, + "videoId": "Yi2nsnpw5h0" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CNoCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNgCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CNkCEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CNgCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNgCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "Yi2nsnpw5h0" + } + }, + "videoId": "Yi2nsnpw5h0" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNgCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNYCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNcCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNcCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + } + } + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "trackingParams": "CNYCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNQCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNUCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNUCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CNQCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNMCEJH7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtZaTJuc25wdzVoMA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNMCEJH7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + ], + "trackingParams": "CNICEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause aespa - Black Mamba (Official Instrumental) - aesthetic inst." + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play aespa - Black Mamba (Official Instrumental) - aesthetic inst." + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CN0CEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "watchEndpoint": { + "videoId": "Yi2nsnpw5h0", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CN0CEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "Yi2nsnpw5h0" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 225, + "url": "https://i.ytimg.com/vi/Yi2nsnpw5h0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3meMnbqX2Gi5z5lD0G6PeDxcp-zpA", + "width": 400 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CN4CEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "trackingParams": "CNECEMGhCBgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CMMCEMGhCBgDIhMI18nAxNnLiQMVtd9CBR1x0wF1mgEDEPQk", + "watchEndpoint": { + "videoId": "2Qefh0W_H88", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + }, + "text": "aespa - black mamba (𝒔𝒍𝒐𝒘𝒆𝒅 𝒏 𝒓𝒆𝒗𝒆𝒓𝒃)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "accessibility": { + "accessibilityData": { + "label": "Video • i n s o m n i o • 1.5M views • 3 minutes, 29 seconds" + } + }, + "runs": [ + { + "text": "Video" + }, + { + "text": " • " + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + }, + "browseId": "UCrGYENbzwtva2X16bAPhTbA" + }, + "clickTrackingParams": "CMMCEMGhCBgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "text": "i n s o m n i o" + }, + { + "text": " • " + }, + { + "text": "1.5M views" + }, + { + "text": " • " + }, + { + "text": "3:29" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM4CEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1mgEDEPQk", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0yUWVmaDBXX0g4OA%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVM2Qefh0W_H88", + "videoId": "2Qefh0W_H88", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CM4CEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CM0CEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CMwCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMwCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "2Qefh0W_H88" + } + }, + "videoId": "2Qefh0W_H88" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CMwCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMoCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CMsCEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CMoCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMoCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "2Qefh0W_H88" + } + }, + "videoId": "2Qefh0W_H88" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMoCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMgCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMkCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMkCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + } + } + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "trackingParams": "CMgCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMYCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMcCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMcCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMYCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMUCEJH7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "shareEntityEndpoint": { + "serializedShareEntity": "CgsyUWVmaDBXX0g4OA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMUCEJH7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + ], + "trackingParams": "CMQCEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause aespa - black mamba (𝒔𝒍𝒐𝒘𝒆𝒅 𝒏 𝒓𝒆𝒗𝒆𝒓𝒃) - i n s o m n i o" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play aespa - black mamba (𝒔𝒍𝒐𝒘𝒆𝒅 𝒏 𝒓𝒆𝒗𝒆𝒓𝒃) - i n s o m n i o" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CM8CEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "watchEndpoint": { + "videoId": "2Qefh0W_H88", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CM8CEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "2Qefh0W_H88" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 225, + "url": "https://i.ytimg.com/vi/2Qefh0W_H88/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3knLw9_f0ukxeV-S6vS5_JOTXnaWQ", + "width": 400 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CNACEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "trackingParams": "CMMCEMGhCBgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + ], + "header": { + "musicCardShelfHeaderBasicRenderer": { + "title": { + "runs": [ + { + "text": "Top result" + } + ] + }, + "trackingParams": "CLMCEO6gASITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CL8CEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1mgEDEPQk", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1aZWVycm51TGk1RQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMZeerrnuLi5E", + "videoId": "ZeerrnuLi5E", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CL8CEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0CEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CL4CEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CL0CEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CL0CEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "ZeerrnuLi5E" + } + }, + "videoId": "ZeerrnuLi5E" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CL0CEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLsCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CLwCEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CLsCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLsCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "ZeerrnuLi5E" + } + }, + "videoId": "ZeerrnuLi5E" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLsCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLkCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CLoCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CLoCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + } + } + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "trackingParams": "CLkCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLcCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CLgCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CLgCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLcCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" + }, + "clickTrackingParams": "CLYCEJD7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CLYCEJD7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLUCEJH7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtaZWVycm51TGk1RQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLUCEJH7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + ], + "trackingParams": "CLQCEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "onTap": { + "clickTrackingParams": "CLECEPqRBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1MgZzZWFyY2hIkZeu3Of16vNlUgtibGFjayBtYW1iYZoBAxD0JA==", + "watchEndpoint": { + "videoId": "ZeerrnuLi5E", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "subtitle": { + "accessibility": { + "accessibilityData": { + "label": "Video • aespa • 273M views • 3 minutes, 50 seconds" + } + }, + "runs": [ + { + "text": "Video" + }, + { + "text": " • " + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" + }, + "clickTrackingParams": "CLECEPqRBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "text": "aespa" + }, + { + "text": " • " + }, + { + "text": "273M views" + }, + { + "text": " • " + }, + { + "text": "3:50" + } + ] + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 225, + "url": "https://i.ytimg.com/vi/ZeerrnuLi5E/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3maNxpYzTFmXZBd8s1w1iE6rTBDaw", + "width": 400 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CO8CEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Black Mamba - aespa" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Black Mamba - aespa" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_LARGE", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CLICEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "watchEndpoint": { + "videoId": "ZeerrnuLi5E", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CLICEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CLECEPqRBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "ZeerrnuLi5E", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "text": "Black Mamba" + } + ] + }, + "trackingParams": "CLECEPqRBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "musicShelfRenderer": { + "bottomEndpoint": { + "clickTrackingParams": "CP8BEPleGAIiEwjXycDE2cuJAxW130IFHXHTAXU=", + "searchEndpoint": { + "params": "EgWKAQIIAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", + "query": "black mamba" + } + }, + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CKACEOFnGAAiEwjXycDE2cuJAxW130IFHXHTAXWaAQMQ9CQ=", + "watchEndpoint": { + "videoId": "BL-aIpCLWnU", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Black Mamba" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "accessibility": { + "accessibilityData": { + "label": "aespa • Black Mamba • 2 minutes, 55 seconds" + } + }, + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" + }, + "clickTrackingParams": "CKACEOFnGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "text": "aespa" + }, + { + "text": " • " + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_OpHWHwyNOuY" + }, + "clickTrackingParams": "CKACEOFnGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "text": "Black Mamba" + }, + { + "text": " • " + }, + { + "text": "2:55" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "544M plays" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CK4CEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1mgEDEPQk", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1CTC1hSXBDTFduVQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMBL-aIpCLWnU", + "videoId": "BL-aIpCLWnU", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CK4CEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CK0CEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CKwCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKwCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "BL-aIpCLWnU" + } + }, + "videoId": "BL-aIpCLWnU" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CKwCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKoCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CKsCEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CKoCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKoCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "BL-aIpCLWnU" + } + }, + "videoId": "BL-aIpCLWnU" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKoCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKgCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKkCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKkCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + } + } + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "trackingParams": "CKgCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKYCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKcCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKcCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKYCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_OpHWHwyNOuY" + }, + "clickTrackingParams": "CKUCEI_7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CKUCEI_7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" + }, + "clickTrackingParams": "CKQCEJD7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CKQCEJD7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCBL-aIpCLWnU" + }, + "clickTrackingParams": "CKMCEK-jChgHIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CKMCEK-jChgHIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKICEJH7BRgIIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtCTC1hSXBDTFduVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKICEJH7BRgIIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + ], + "trackingParams": "CKECEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Black Mamba - aespa" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Black Mamba - aespa" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CK8CEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "watchEndpoint": { "videoId": "BL-aIpCLWnU", "watchEndpointMusicSupportedConfigs": { @@ -995,7 +2533,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CNUBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CK8CEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -1023,10 +2561,10 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CNYBEIS_AiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CLACEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, - "trackingParams": "CMcBEOFnGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CKACEOFnGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { @@ -1040,9 +2578,9 @@ "runs": [ { "navigationEndpoint": { - "clickTrackingParams": "CLcBEOFnGAEiEwiAuaHGkYn7AhWq7BEIHeCyArGaAQMQ9CQ=", + "clickTrackingParams": "CJACEOFnGAEiEwjXycDE2cuJAxW130IFHXHTAXWaAQMQ9CQ=", "watchEndpoint": { - "videoId": "cATe8Toht70", + "videoId": "PpKu3UsHYrk", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" @@ -1050,53 +2588,35 @@ } } }, + "text": "Ghetto Millionnaire" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "accessibility": { + "accessibilityData": { + "label": "Black Mamba • Ghetto Millionnaire • 4 minutes, 23 seconds" + } + }, + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCxX9tNcQgCBuU56ezupriqg" + }, + "clickTrackingParams": "CJACEOFnGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, "text": "Black Mamba" - } - ] - } - } - }, - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", - "text": { - "runs": [ - { - "text": "Song" - }, - { - "text": " • " - }, - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCfCNL5oajlQBAlyjWv1ChVw" - }, - "clickTrackingParams": "CLcBEOFnGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - }, - "text": "Hans Zimmer" - }, - { - "text": " & " - }, - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCvTXGTZf9EvuCAwZOkoR2iQ" - }, - "clickTrackingParams": "CLcBEOFnGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - }, - "text": "Lorne Balfe" }, { "text": " • " @@ -1109,17 +2629,29 @@ "pageType": "MUSIC_PAGE_TYPE_ALBUM" } }, - "browseId": "MPREb_UmDOhLpDsc0" + "browseId": "MPREb_miyMs44ZpHc" }, - "clickTrackingParams": "CLcBEOFnGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CJACEOFnGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" }, - "text": "Megamind (Music from the Motion Picture)" + "text": "Ghetto Millionnaire" }, { "text": " • " }, { - "text": "1:14" + "text": "4:23" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "1.2M plays" } ] } @@ -1141,16 +2673,16 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CMQBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKxmgEDEPQk", + "clickTrackingParams": "CJ0CEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1mgEDEPQk", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk1jQVRlOFRvaHQ3MA%3D%3D" + "serializedContextData": "GhFSREFNVk1QcEt1M1VzSFlyaw%3D%3D" } }, "params": "wAEB", - "playlistId": "RDAMVMcATe8Toht70", - "videoId": "cATe8Toht70", + "playlistId": "RDAMVMPpKu3UsHYrk", + "videoId": "PpKu3UsHYrk", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" @@ -1165,7 +2697,7 @@ } ] }, - "trackingParams": "CMQBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CJ0CEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1174,7 +2706,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CMIBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CJsCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", "queueAddEndpoint": { "commands": [ { @@ -1188,16 +2720,22 @@ } ] }, - "trackingParams": "CMMBEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CJwCEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } }, - "clickTrackingParams": "CMIBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "CJsCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "videoId": "cATe8Toht70" + "onEmptyQueue": { + "clickTrackingParams": "CJsCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "PpKu3UsHYrk" + } + }, + "videoId": "PpKu3UsHYrk" } } }, @@ -1208,7 +2746,7 @@ } ] }, - "trackingParams": "CMIBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CJsCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1217,7 +2755,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CMABEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CJkCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", "queueAddEndpoint": { "commands": [ { @@ -1231,16 +2769,22 @@ } ] }, - "trackingParams": "CMEBEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CJoCEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } }, - "clickTrackingParams": "CMABEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "CJkCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "videoId": "cATe8Toht70" + "onEmptyQueue": { + "clickTrackingParams": "CJkCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "PpKu3UsHYrk" + } + }, + "videoId": "PpKu3UsHYrk" } } }, @@ -1251,7 +2795,7 @@ } ] }, - "trackingParams": "CMABEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CJkCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1260,7 +2804,7 @@ "iconType": "FAVORITE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CL4BEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CJcCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -1268,7 +2812,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CL8BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CJgCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", "signInEndpoint": { "hack": true } @@ -1281,7 +2825,7 @@ } ] }, - "trackingParams": "CL8BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CJgCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "content": { @@ -1319,7 +2863,7 @@ } ] }, - "trackingParams": "CL4BEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CJcCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1328,7 +2872,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CLwBEMOUBhgEIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CJUCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -1336,7 +2880,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CL0BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CJYCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", "signInEndpoint": { "hack": true } @@ -1349,7 +2893,7 @@ } ] }, - "trackingParams": "CL0BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CJYCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "content": { @@ -1373,11 +2917,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CLwBEMOUBhgEIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CJUCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1392,9 +2936,9 @@ "pageType": "MUSIC_PAGE_TYPE_ALBUM" } }, - "browseId": "MPREb_UmDOhLpDsc0" + "browseId": "MPREb_miyMs44ZpHc" }, - "clickTrackingParams": "CLsBEI_7BRgFIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "CJQCEI_7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" }, "text": { "runs": [ @@ -1403,7 +2947,7 @@ } ] }, - "trackingParams": "CLsBEI_7BRgFIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CJQCEI_7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1418,9 +2962,9 @@ "pageType": "MUSIC_PAGE_TYPE_ARTIST" } }, - "browseId": "UCfCNL5oajlQBAlyjWv1ChVw" + "browseId": "UCxX9tNcQgCBuU56ezupriqg" }, - "clickTrackingParams": "CLoBEJD7BRgGIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "CJMCEJD7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" }, "text": { "runs": [ @@ -1429,7 +2973,7 @@ } ] }, - "trackingParams": "CLoBEJD7BRgGIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CJMCEJD7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1438,9 +2982,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CLkBEJH7BRgHIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CJICEJH7BRgHIhMI18nAxNnLiQMVtd9CBR1x0wF1", "shareEntityEndpoint": { - "serializedShareEntity": "CgtjQVRlOFRvaHQ3MA%3D%3D", + "serializedShareEntity": "CgtQcEt1M1VzSFlyaw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -1451,11 +2995,11 @@ } ] }, - "trackingParams": "CLkBEJH7BRgHIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CJICEJH7BRgHIhMI18nAxNnLiQMVtd9CBR1x0wF1" } } ], - "trackingParams": "CLgBEKc7IhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CJECEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "overlay": { @@ -1472,12 +3016,12 @@ "musicPlayButtonRenderer": { "accessibilityPauseData": { "accessibilityData": { - "label": "Pause Black Mamba - Hans Zimmer" + "label": "Pause Ghetto Millionnaire - Black Mamba" } }, "accessibilityPlayData": { "accessibilityData": { - "label": "Play Black Mamba - Hans Zimmer" + "label": "Play Ghetto Millionnaire - Black Mamba" } }, "activeBackgroundColor": 0, @@ -1486,7 +3030,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -1494,9 +3038,9 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CMUBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==", + "clickTrackingParams": "CJ4CEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "watchEndpoint": { - "videoId": "cATe8Toht70", + "videoId": "PpKu3UsHYrk", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" @@ -1508,7 +3052,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CMUBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CJ4CEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -1516,7 +3060,7 @@ } }, "playlistItemData": { - "videoId": "cATe8Toht70" + "videoId": "PpKu3UsHYrk" }, "thumbnail": { "musicThumbnailRenderer": { @@ -1524,22 +3068,22 @@ "thumbnails": [ { "height": 60, - "url": "https://lh3.googleusercontent.com/ZesxRmV1_bDW89z70eojCd6DofYPbzbgGaXSIRP3UjmE4nIAkOuWc8pXaozR4AwrzPQublDCKrg6vcxHOg=w60-h60-l90-rj", + "url": "https://lh3.googleusercontent.com/p6AWfbIdksK7FGWMlutdCV0t449Nd_odfNnT9G80KDajqmXklX4H-nymvTADsn1JhEnRDaPSfbw_hmlKdg=w60-h60-l90-rj", "width": 60 }, { "height": 120, - "url": "https://lh3.googleusercontent.com/ZesxRmV1_bDW89z70eojCd6DofYPbzbgGaXSIRP3UjmE4nIAkOuWc8pXaozR4AwrzPQublDCKrg6vcxHOg=w120-h120-l90-rj", + "url": "https://lh3.googleusercontent.com/p6AWfbIdksK7FGWMlutdCV0t449Nd_odfNnT9G80KDajqmXklX4H-nymvTADsn1JhEnRDaPSfbw_hmlKdg=w120-h120-l90-rj", "width": 120 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CMYBEIS_AiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CJ8CEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, - "trackingParams": "CLcBEOFnGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CJACEOFnGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { @@ -1553,9 +3097,9 @@ "runs": [ { "navigationEndpoint": { - "clickTrackingParams": "CKcBEOFnGAIiEwiAuaHGkYn7AhWq7BEIHeCyArGaAQMQ9CQ=", + "clickTrackingParams": "CIACEOFnGAIiEwjXycDE2cuJAxW130IFHXHTAXWaAQMQ9CQ=", "watchEndpoint": { - "videoId": "WwNKyoizf8k", + "videoId": "jynOfK8JB0E", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" @@ -1563,7 +3107,7 @@ } } }, - "text": "BLACK MAMBA" + "text": "It Ain't You" } ] } @@ -1573,13 +3117,12 @@ "musicResponsiveListItemFlexColumnRenderer": { "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", "text": { + "accessibility": { + "accessibilityData": { + "label": "The Black Mamba • The Black Mamba • 4 minutes, 28 seconds" + } + }, "runs": [ - { - "text": "Song" - }, - { - "text": " • " - }, { "navigationEndpoint": { "browseEndpoint": { @@ -1588,11 +3131,11 @@ "pageType": "MUSIC_PAGE_TYPE_ARTIST" } }, - "browseId": "UCz6yr3CgFGrrrPDa2asbWMQ" + "browseId": "UCaDT20-B3U8h-tPg_VMvntw" }, - "clickTrackingParams": "CKcBEOFnGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CIACEOFnGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" }, - "text": "Bayamon PR Tribe" + "text": "The Black Mamba" }, { "text": " • " @@ -1605,17 +3148,29 @@ "pageType": "MUSIC_PAGE_TYPE_ALBUM" } }, - "browseId": "MPREb_RV0PGHyGfkp" + "browseId": "MPREb_hXasyBrDJm7" }, - "clickTrackingParams": "CKcBEOFnGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CIACEOFnGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" }, - "text": "LISTEN ME" + "text": "The Black Mamba" }, { "text": " • " }, { - "text": "3:02" + "text": "4:28" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "1.3M plays" } ] } @@ -1637,16 +3192,16 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CLQBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKxmgEDEPQk", + "clickTrackingParams": "CI0CEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1mgEDEPQk", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk1Xd05LeW9pemY4aw%3D%3D" + "serializedContextData": "GhFSREFNVk1qeW5PZks4SkIwRQ%3D%3D" } }, "params": "wAEB", - "playlistId": "RDAMVMWwNKyoizf8k", - "videoId": "WwNKyoizf8k", + "playlistId": "RDAMVMjynOfK8JB0E", + "videoId": "jynOfK8JB0E", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" @@ -1661,7 +3216,7 @@ } ] }, - "trackingParams": "CLQBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CI0CEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1670,7 +3225,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CLIBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CIsCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", "queueAddEndpoint": { "commands": [ { @@ -1684,16 +3239,22 @@ } ] }, - "trackingParams": "CLMBEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CIwCEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } }, - "clickTrackingParams": "CLIBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "CIsCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "videoId": "WwNKyoizf8k" + "onEmptyQueue": { + "clickTrackingParams": "CIsCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "jynOfK8JB0E" + } + }, + "videoId": "jynOfK8JB0E" } } }, @@ -1704,7 +3265,7 @@ } ] }, - "trackingParams": "CLIBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CIsCEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1713,7 +3274,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CLABEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CIkCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", "queueAddEndpoint": { "commands": [ { @@ -1727,16 +3288,22 @@ } ] }, - "trackingParams": "CLEBEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CIoCEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } }, - "clickTrackingParams": "CLABEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "CIkCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "videoId": "WwNKyoizf8k" + "onEmptyQueue": { + "clickTrackingParams": "CIkCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "jynOfK8JB0E" + } + }, + "videoId": "jynOfK8JB0E" } } }, @@ -1747,7 +3314,7 @@ } ] }, - "trackingParams": "CLABEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CIkCEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1756,7 +3323,7 @@ "iconType": "FAVORITE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CK4BEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CIcCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -1764,7 +3331,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CK8BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CIgCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", "signInEndpoint": { "hack": true } @@ -1777,7 +3344,7 @@ } ] }, - "trackingParams": "CK8BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CIgCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "content": { @@ -1815,7 +3382,7 @@ } ] }, - "trackingParams": "CK4BEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CIcCEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1824,7 +3391,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CKwBEMOUBhgEIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CIUCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -1832,7 +3399,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CK0BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CIYCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", "signInEndpoint": { "hack": true } @@ -1845,7 +3412,7 @@ } ] }, - "trackingParams": "CK0BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CIYCEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "content": { @@ -1869,11 +3436,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CKwBEMOUBhgEIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CIUCEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1888,9 +3455,9 @@ "pageType": "MUSIC_PAGE_TYPE_ALBUM" } }, - "browseId": "MPREb_RV0PGHyGfkp" + "browseId": "MPREb_hXasyBrDJm7" }, - "clickTrackingParams": "CKsBEI_7BRgFIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "CIQCEI_7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" }, "text": { "runs": [ @@ -1899,7 +3466,7 @@ } ] }, - "trackingParams": "CKsBEI_7BRgFIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CIQCEI_7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1914,9 +3481,9 @@ "pageType": "MUSIC_PAGE_TYPE_ARTIST" } }, - "browseId": "UCz6yr3CgFGrrrPDa2asbWMQ" + "browseId": "UCaDT20-B3U8h-tPg_VMvntw" }, - "clickTrackingParams": "CKoBEJD7BRgGIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "CIMCEJD7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" }, "text": { "runs": [ @@ -1925,7 +3492,7 @@ } ] }, - "trackingParams": "CKoBEJD7BRgGIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CIMCEJD7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -1934,9 +3501,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CKkBEJH7BRgHIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CIICEJH7BRgHIhMI18nAxNnLiQMVtd9CBR1x0wF1", "shareEntityEndpoint": { - "serializedShareEntity": "CgtXd05LeW9pemY4aw%3D%3D", + "serializedShareEntity": "CgtqeW5PZks4SkIwRQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -1947,11 +3514,11 @@ } ] }, - "trackingParams": "CKkBEJH7BRgHIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CIICEJH7BRgHIhMI18nAxNnLiQMVtd9CBR1x0wF1" } } ], - "trackingParams": "CKgBEKc7IhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CIECEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "overlay": { @@ -1968,12 +3535,12 @@ "musicPlayButtonRenderer": { "accessibilityPauseData": { "accessibilityData": { - "label": "Pause BLACK MAMBA - Bayamon PR Tribe" + "label": "Pause It Ain't You - The Black Mamba" } }, "accessibilityPlayData": { "accessibilityData": { - "label": "Play BLACK MAMBA - Bayamon PR Tribe" + "label": "Play It Ain't You - The Black Mamba" } }, "activeBackgroundColor": 0, @@ -1982,7 +3549,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -1990,9 +3557,9 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CLUBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==", + "clickTrackingParams": "CI4CEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "watchEndpoint": { - "videoId": "WwNKyoizf8k", + "videoId": "jynOfK8JB0E", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" @@ -2004,7 +3571,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLUBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CI4CEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -2012,7 +3579,7 @@ } }, "playlistItemData": { - "videoId": "WwNKyoizf8k" + "videoId": "jynOfK8JB0E" }, "thumbnail": { "musicThumbnailRenderer": { @@ -2020,22 +3587,22 @@ "thumbnails": [ { "height": 60, - "url": "https://lh3.googleusercontent.com/gall0XXuwoV_SYR3S6EgtOGaBC3YOR5wOpQxCyqgxC3Xht3Jc95Y-sFg-sGAcQl946MfurGY_xSv0YBT=w60-h60-l90-rj", + "url": "https://lh3.googleusercontent.com/ByZsPc5CHoZwtn-cl7e_nbhiVkWxoFJ2RHkNUvLTiowT8228-aVd6r2XT08Z8a32Qa7d-0-Go44sxkdf=w60-h60-l90-rj", "width": 60 }, { "height": 120, - "url": "https://lh3.googleusercontent.com/gall0XXuwoV_SYR3S6EgtOGaBC3YOR5wOpQxCyqgxC3Xht3Jc95Y-sFg-sGAcQl946MfurGY_xSv0YBT=w120-h120-l90-rj", + "url": "https://lh3.googleusercontent.com/ByZsPc5CHoZwtn-cl7e_nbhiVkWxoFJ2RHkNUvLTiowT8228-aVd6r2XT08Z8a32Qa7d-0-Go44sxkdf=w120-h120-l90-rj", "width": 120 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CLYBEIS_AiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CI8CEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, - "trackingParams": "CKcBEOFnGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CIACEOFnGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" } } ], @@ -2051,15 +3618,15 @@ } ] }, - "trackingParams": "CKYBEPleGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CP8BEPleGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { "musicShelfRenderer": { "bottomEndpoint": { - "clickTrackingParams": "CHoQ-V4YAyITCIC5ocaRifsCFarsEQgd4LICsQ==", + "clickTrackingParams": "CNMBEPleGAMiEwjXycDE2cuJAxW130IFHXHTAXU=", "searchEndpoint": { - "params": "EgWKAQIQAWoKEAMQBBAJEAUQCg%3D%3D", + "params": "EgWKAQIQAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", "query": "black mamba" } }, @@ -2082,437 +3649,9 @@ "runs": [ { "navigationEndpoint": { - "clickTrackingParams": "CJgBENNoGAAiEwiAuaHGkYn7AhWq7BEIHeCyArGaAQMQ9CQ=", + "clickTrackingParams": "CPABENNoGAAiEwjXycDE2cuJAxW130IFHXHTAXWaAQMQ9CQ=", "watchEndpoint": { - "videoId": "yQUU29NwNF4", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" - } - } - } - }, - "text": "aespa(에스파) - Black Mamba @인기가요 inkigayo 20201122" - } - ] - } - } - }, - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", - "text": { - "runs": [ - { - "text": "Video" - }, - { - "text": " • " - }, - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" - } - }, - "browseId": "UCS_hnpJLQTvBkqALgapi_4g" - }, - "clickTrackingParams": "CJgBENNoGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - }, - "text": "스브스케이팝 X INKIGAYO" - }, - { - "text": " • " - }, - { - "text": "10M views" - }, - { - "text": " • " - }, - { - "text": "3:33" - } - ] - } - } - } - ], - "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", - "menu": { - "menuRenderer": { - "accessibility": { - "accessibilityData": { - "label": "Action menu" - } - }, - "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKMBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKxmgEDEPQk", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk15UVVVMjlOd05GNA%3D%3D" - } - }, - "params": "wAEB", - "playlistId": "RDAMVMyQUU29NwNF4", - "videoId": "yQUU29NwNF4", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" - } - } - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CKMBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKEBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song will play next" - } - ] - }, - "trackingParams": "CKIBEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" - } - } - }, - "clickTrackingParams": "CKEBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "videoId": "yQUU29NwNF4" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CKEBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJ8BEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song added to queue" - } - ] - }, - "trackingParams": "CKABEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" - } - } - }, - "clickTrackingParams": "CJ8BEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "videoId": "yQUU29NwNF4" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CJ8BEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "FAVORITE" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CJ0BEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJ4BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJ4BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - "content": { - "runs": [ - { - "text": "Improve recommendations and save music after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Like this song" - } - ] - } - } - } - } - }, - "defaultText": { - "runs": [ - { - "text": "Add to liked songs" - } - ] - }, - "toggledIcon": { - "iconType": "UNFAVORITE" - }, - "toggledText": { - "runs": [ - { - "text": "Remove from liked songs" - } - ] - }, - "trackingParams": "CJ0BEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJsBEMOUBhgEIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJwBEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJwBEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - "content": { - "runs": [ - { - "text": "Make playlists and share them after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Save this for later" - } - ] - } - } - } - } - }, - "text": { - "runs": [ - { - "text": "Add to playlist" - } - ] - }, - "trackingParams": "CJsBEMOUBhgEIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJoBEJH7BRgFIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "shareEntityEndpoint": { - "serializedShareEntity": "Cgt5UVVVMjlOd05GNA%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CJoBEJH7BRgFIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - } - ], - "trackingParams": "CJkBEKc7IhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - "overlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "3422552064", - "3422552064" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause aespa(에스파) - Black Mamba @인기가요 inkigayo 20201122 - 스브스케이팝 X INKIGAYO" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play aespa(에스파) - Black Mamba @인기가요 inkigayo 20201122 - 스브스케이팝 X INKIGAYO" - } - }, - "activeBackgroundColor": 0, - "activeScaleFactor": 1, - "backgroundColor": 0, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", - "iconColor": 4294967295, - "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CKQBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==", - "watchEndpoint": { - "videoId": "yQUU29NwNF4", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" - } - } - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKQBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==" - } - }, - "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", - "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" - } - }, - "playlistItemData": { - "videoId": "yQUU29NwNF4" - }, - "thumbnail": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 225, - "url": "https://i.ytimg.com/vi/yQUU29NwNF4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k0HD8CTPlz4YU0hvy1GqKSf2HKUQ", - "width": 400 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CKUBEIS_AiITCIC5ocaRifsCFarsEQgd4LICsQ==" - } - }, - "trackingParams": "CJgBENNoGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "musicResponsiveListItemRenderer": { - "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", - "flexColumns": [ - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", - "text": { - "runs": [ - { - "navigationEndpoint": { - "clickTrackingParams": "CIkBENNoGAEiEwiAuaHGkYn7AhWq7BEIHeCyArGaAQMQ9CQ=", - "watchEndpoint": { - "videoId": "Ky5RT5oGg0w", + "videoId": "pgjQkcYD-rQ", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" @@ -2520,7 +3659,7 @@ } } }, - "text": "Black Mamba" + "text": "Black Mamba (Techwear ver. Dance Practice)" } ] } @@ -2530,6 +3669,11 @@ "musicResponsiveListItemFlexColumnRenderer": { "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", "text": { + "accessibility": { + "accessibilityData": { + "label": "Video • aespa • 9.6M views • 3 minutes, 18 seconds" + } + }, "runs": [ { "text": "Video" @@ -2547,7 +3691,7 @@ }, "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" }, - "clickTrackingParams": "CIkBENNoGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CPABENNoGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" }, "text": "aespa" }, @@ -2555,13 +3699,13 @@ "text": " • " }, { - "text": "18M views" + "text": "9.6M views" }, { "text": " • " }, { - "text": "4:47" + "text": "3:18" } ] } @@ -2583,16 +3727,16 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CJUBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKxmgEDEPQk", + "clickTrackingParams": "CPwBEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1mgEDEPQk", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk1LeTVSVDVvR2cwdw%3D%3D" + "serializedContextData": "GhFSREFNVk1wZ2pRa2NZRC1yUQ%3D%3D" } }, "params": "wAEB", - "playlistId": "RDAMVMKy5RT5oGg0w", - "videoId": "Ky5RT5oGg0w", + "playlistId": "RDAMVMpgjQkcYD-rQ", + "videoId": "pgjQkcYD-rQ", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" @@ -2607,7 +3751,7 @@ } ] }, - "trackingParams": "CJUBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CPwBEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -2616,7 +3760,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CJMBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CPoBEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", "queueAddEndpoint": { "commands": [ { @@ -2630,16 +3774,22 @@ } ] }, - "trackingParams": "CJQBEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CPsBEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } }, - "clickTrackingParams": "CJMBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "CPoBEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "videoId": "Ky5RT5oGg0w" + "onEmptyQueue": { + "clickTrackingParams": "CPoBEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "pgjQkcYD-rQ" + } + }, + "videoId": "pgjQkcYD-rQ" } } }, @@ -2650,7 +3800,7 @@ } ] }, - "trackingParams": "CJMBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CPoBEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -2659,7 +3809,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CJEBEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CPgBEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", "queueAddEndpoint": { "commands": [ { @@ -2673,16 +3823,22 @@ } ] }, - "trackingParams": "CJIBEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CPkBEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } }, - "clickTrackingParams": "CJEBEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "CPgBEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "videoId": "Ky5RT5oGg0w" + "onEmptyQueue": { + "clickTrackingParams": "CPgBEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "pgjQkcYD-rQ" + } + }, + "videoId": "pgjQkcYD-rQ" } } }, @@ -2693,7 +3849,7 @@ } ] }, - "trackingParams": "CJEBEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CPgBEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -2702,7 +3858,7 @@ "iconType": "FAVORITE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CI8BEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CPYBEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -2710,7 +3866,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJABEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CPcBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", "signInEndpoint": { "hack": true } @@ -2723,7 +3879,7 @@ } ] }, - "trackingParams": "CJABEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CPcBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "content": { @@ -2761,7 +3917,7 @@ } ] }, - "trackingParams": "CI8BEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CPYBEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -2770,7 +3926,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CI0BEMOUBhgEIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CPQBEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -2778,7 +3934,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CI4BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CPUBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", "signInEndpoint": { "hack": true } @@ -2791,7 +3947,7 @@ } ] }, - "trackingParams": "CI4BEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CPUBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "content": { @@ -2815,11 +3971,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CI0BEMOUBhgEIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CPQBEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -2836,7 +3992,7 @@ }, "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" }, - "clickTrackingParams": "CIwBEJD7BRgFIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "CPMBEJD7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" }, "text": { "runs": [ @@ -2845,7 +4001,7 @@ } ] }, - "trackingParams": "CIwBEJD7BRgFIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CPMBEJD7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -2854,9 +4010,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CIsBEJH7BRgGIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CPIBEJH7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1", "shareEntityEndpoint": { - "serializedShareEntity": "CgtLeTVSVDVvR2cwdw%3D%3D", + "serializedShareEntity": "CgtwZ2pRa2NZRC1yUQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -2867,11 +4023,11 @@ } ] }, - "trackingParams": "CIsBEJH7BRgGIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CPIBEJH7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" } } ], - "trackingParams": "CIoBEKc7IhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CPEBEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "overlay": { @@ -2888,12 +4044,12 @@ "musicPlayButtonRenderer": { "accessibilityPauseData": { "accessibilityData": { - "label": "Pause Black Mamba - aespa" + "label": "Pause Black Mamba (Techwear ver. Dance Practice) - aespa" } }, "accessibilityPlayData": { "accessibilityData": { - "label": "Play Black Mamba - aespa" + "label": "Play Black Mamba (Techwear ver. Dance Practice) - aespa" } }, "activeBackgroundColor": 0, @@ -2902,7 +4058,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -2910,9 +4066,9 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CJYBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==", + "clickTrackingParams": "CP0BEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "watchEndpoint": { - "videoId": "Ky5RT5oGg0w", + "videoId": "pgjQkcYD-rQ", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" @@ -2924,7 +4080,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJYBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CP0BEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -2932,7 +4088,7 @@ } }, "playlistItemData": { - "videoId": "Ky5RT5oGg0w" + "videoId": "pgjQkcYD-rQ" }, "thumbnail": { "musicThumbnailRenderer": { @@ -2940,17 +4096,17 @@ "thumbnails": [ { "height": 225, - "url": "https://i.ytimg.com/vi/Ky5RT5oGg0w/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mB-DDgCruC-dhPM0v66ckiZJQnJg", + "url": "https://i.ytimg.com/vi/pgjQkcYD-rQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k8ndHhyzqiuzAXoLwsrk-I7IKt5Q", "width": 400 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CJcBEIS_AiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CP4BEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, - "trackingParams": "CIkBENNoGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CPABENNoGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { @@ -2964,17 +4120,17 @@ "runs": [ { "navigationEndpoint": { - "clickTrackingParams": "CHsQ02gYAiITCIC5ocaRifsCFarsEQgd4LICsZoBAxD0JA==", - "watchEndpoint": { - "videoId": "dz9bieeSVRw", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_NON_MUSIC_AUDIO_TRACK_PAGE" } - } - } + }, + "browseId": "MPEDw2GXdb-pHo8" + }, + "clickTrackingParams": "COIBEO3gCBgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" }, - "text": "aespa - Black Mamba (Music Bank) | KBS WORLD TV 201127" + "text": "(Hot Debut) aespa - Black Mamba (Music Bank) | KBS WORLD TV 201120" } ] } @@ -2984,6 +4140,448 @@ "musicResponsiveListItemFlexColumnRenderer": { "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", "text": { + "accessibility": { + "accessibilityData": { + "label": "Episode • Nov 20, 2020 • KBS WORLD TV" + } + }, + "runs": [ + { + "text": "Episode" + }, + { + "text": " • " + }, + { + "text": "Nov 20, 2020" + }, + { + "text": " • " + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + }, + "browseId": "UC5BMQOsAB8hKUyHu9KI6yig" + }, + "clickTrackingParams": "COIBEO3gCBgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "text": "KBS WORLD TV" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COwBEL7uBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode will play next" + } + ] + }, + "trackingParams": "CO0BEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "COwBEL7uBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COwBEL7uBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "w2GXdb-pHo8" + } + }, + "videoId": "w2GXdb-pHo8" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "COwBEL7uBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COoBEPvvBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode added to queue" + } + ] + }, + "trackingParams": "COsBEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "COoBEPvvBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COoBEPvvBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "w2GXdb-pHo8" + } + }, + "videoId": "w2GXdb-pHo8" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COoBEPvvBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "COgBEMOUBhgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COkBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COkBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "COgBEMOUBhgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COcBEJH7BRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgt3MkdYZGItcEhvOA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COcBEJH7BRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "dislikeNavigationEndpoint": { + "clickTrackingParams": "COQBEKVBGAQiEwjXycDE2cuJAxW130IFHXHTAXU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COYBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COYBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Improve your recommendations after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Not a fan?" + } + ] + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "COQBEKVBGAQiEwjXycDE2cuJAxW130IFHXHTAXU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COUBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COUBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + } + } + } + } + }, + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "target": { + "videoId": "w2GXdb-pHo8" + }, + "trackingParams": "COQBEKVBGAQiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + } + ], + "trackingParams": "COMBEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause (Hot Debut) aespa - Black Mamba (Music Bank) | KBS WORLD TV 201120 - KBS WORLD TV" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play (Hot Debut) aespa - Black Mamba (Music Bank) | KBS WORLD TV 201120 - KBS WORLD TV" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CO4BEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "watchEndpoint": { + "params": "8gEDmAEI", + "videoId": "w2GXdb-pHo8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_PODCAST_EPISODE" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CO4BEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "w2GXdb-pHo8" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 225, + "url": "https://i.ytimg.com/vi/w2GXdb-pHo8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l5kwjfr-rdoZvgzcLk38ilMou95g", + "width": 400 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CO8BEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "trackingParams": "COIBEO3gCBgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CNQBENNoGAIiEwjXycDE2cuJAxW130IFHXHTAXWaAQMQ9CQ=", + "watchEndpoint": { + "videoId": "JepNreB58TA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + }, + "text": "aespa (에스파) - Black Mamba | Sydney - SYNK: Parallel Line | 4K60 직캠 Fancam Front Row" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "accessibility": { + "accessibilityData": { + "label": "Video • yentaxi • 213K views • 2 minutes, 50 seconds" + } + }, "runs": [ { "text": "Video" @@ -2999,23 +4597,23 @@ "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" } }, - "browseId": "UC5BMQOsAB8hKUyHu9KI6yig" + "browseId": "UCAOoElZAQnI0zN91qvzezCw" }, - "clickTrackingParams": "CHsQ02gYAiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "clickTrackingParams": "CNQBENNoGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" }, - "text": "KBS WORLD TV" + "text": "yentaxi" }, { "text": " • " }, { - "text": "3.2M views" + "text": "213K views" }, { "text": " • " }, { - "text": "3:12" + "text": "2:50" } ] } @@ -3037,16 +4635,16 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CIYBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKxmgEDEPQk", + "clickTrackingParams": "CN8BEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1mgEDEPQk", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk1kejliaWVlU1ZSdw%3D%3D" + "serializedContextData": "GhFSREFNVk1KZXBOcmVCNThUQQ%3D%3D" } }, "params": "wAEB", - "playlistId": "RDAMVMdz9bieeSVRw", - "videoId": "dz9bieeSVRw", + "playlistId": "RDAMVMJepNreB58TA", + "videoId": "JepNreB58TA", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" @@ -3061,7 +4659,7 @@ } ] }, - "trackingParams": "CIYBEJvzBRgAIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CN8BEJvzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -3070,7 +4668,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CIQBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CN0BEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", "queueAddEndpoint": { "commands": [ { @@ -3084,16 +4682,22 @@ } ] }, - "trackingParams": "CIUBEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CN4BEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } }, - "clickTrackingParams": "CIQBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "CN0BEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "videoId": "dz9bieeSVRw" + "onEmptyQueue": { + "clickTrackingParams": "CN0BEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "JepNreB58TA" + } + }, + "videoId": "JepNreB58TA" } } }, @@ -3104,7 +4708,7 @@ } ] }, - "trackingParams": "CIQBEL7uBRgBIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CN0BEL7uBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -3113,7 +4717,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CIIBEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CNsBEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", "queueAddEndpoint": { "commands": [ { @@ -3127,16 +4731,22 @@ } ] }, - "trackingParams": "CIMBEMrHAyITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CNwBEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } }, - "clickTrackingParams": "CIIBEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "clickTrackingParams": "CNsBEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "videoId": "dz9bieeSVRw" + "onEmptyQueue": { + "clickTrackingParams": "CNsBEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "videoId": "JepNreB58TA" + } + }, + "videoId": "JepNreB58TA" } } }, @@ -3147,7 +4757,7 @@ } ] }, - "trackingParams": "CIIBEPvvBRgCIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CNsBEPvvBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -3156,7 +4766,7 @@ "iconType": "FAVORITE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CIABEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CNkBEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -3164,7 +4774,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CIEBEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CNoBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", "signInEndpoint": { "hack": true } @@ -3177,7 +4787,7 @@ } ] }, - "trackingParams": "CIEBEPBbIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CNoBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "content": { @@ -3215,7 +4825,7 @@ } ] }, - "trackingParams": "CIABEIyfBhgDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CNkBEIyfBhgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -3224,7 +4834,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CH4Qw5QGGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CNcBEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -3232,7 +4842,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CH8Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CNgBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", "signInEndpoint": { "hack": true } @@ -3245,7 +4855,7 @@ } ] }, - "trackingParams": "CH8Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CNgBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "content": { @@ -3269,11 +4879,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CH4Qw5QGGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CNcBEMOUBhgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -3282,9 +4892,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CH0QkfsFGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CNYBEJH7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1", "shareEntityEndpoint": { - "serializedShareEntity": "CgtkejliaWVlU1ZSdw%3D%3D", + "serializedShareEntity": "CgtKZXBOcmVCNThUQQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -3295,11 +4905,11 @@ } ] }, - "trackingParams": "CH0QkfsFGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CNYBEJH7BRgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" } } ], - "trackingParams": "CHwQpzsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CNUBEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "overlay": { @@ -3316,12 +4926,12 @@ "musicPlayButtonRenderer": { "accessibilityPauseData": { "accessibilityData": { - "label": "Pause aespa - Black Mamba (Music Bank) | KBS WORLD TV 201127 - KBS WORLD TV" + "label": "Pause aespa (에스파) - Black Mamba | Sydney - SYNK: Parallel Line | 4K60 직캠 Fancam Front Row - yentaxi" } }, "accessibilityPlayData": { "accessibilityData": { - "label": "Play aespa - Black Mamba (Music Bank) | KBS WORLD TV 201127 - KBS WORLD TV" + "label": "Play aespa (에스파) - Black Mamba | Sydney - SYNK: Parallel Line | 4K60 직캠 Fancam Front Row - yentaxi" } }, "activeBackgroundColor": 0, @@ -3330,7 +4940,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -3338,9 +4948,9 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CIcBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==", + "clickTrackingParams": "COABEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "watchEndpoint": { - "videoId": "dz9bieeSVRw", + "videoId": "JepNreB58TA", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" @@ -3352,7 +4962,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIcBEMjeAiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "COABEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -3360,7 +4970,7 @@ } }, "playlistItemData": { - "videoId": "dz9bieeSVRw" + "videoId": "JepNreB58TA" }, "thumbnail": { "musicThumbnailRenderer": { @@ -3368,17 +4978,17 @@ "thumbnails": [ { "height": 225, - "url": "https://i.ytimg.com/vi/dz9bieeSVRw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lsJGKTqJhnt-ckrJtBLlvSp46Y5g", + "url": "https://i.ytimg.com/vi/JepNreB58TA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lhDLwngEone0tYZ0omfA6rs6Nj2w", "width": 400 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CIgBEIS_AiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "COEBEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, - "trackingParams": "CHsQ02gYAiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CNQBENNoGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" } } ], @@ -3394,15 +5004,15 @@ } ] }, - "trackingParams": "CHoQ-V4YAyITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CNMBEPleGAMiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { "musicShelfRenderer": { "bottomEndpoint": { - "clickTrackingParams": "CEgQ-V4YBCITCIC5ocaRifsCFarsEQgd4LICsQ==", + "clickTrackingParams": "CKEBEPleGAQiEwjXycDE2cuJAxW130IFHXHTAXU=", "searchEndpoint": { - "params": "EgWKAQIYAWoKEAMQBBAJEAUQCg%3D%3D", + "params": "EgWKAQIYAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", "query": "black mamba" } }, @@ -3414,6 +5024,984 @@ ] }, "contents": [ + { + "musicResponsiveListItemRenderer": { + "badges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CMMBEKHtAhgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + ], + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "black mamba" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClSZ2io808U-NOICSbjvwEg" + }, + "clickTrackingParams": "CMIBENRoGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "text": "ff phonk" + }, + { + "text": " • " + }, + { + "text": "2024" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNABEJrzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lIP2xAM_xxj1aAiDw8OSe4KLWos_6TKOw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CNABEJrzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM8BEJvzBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lIP2xAM_xxj1aAiDw8OSe4KLWos_6TKOw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CM8BEJvzBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0BEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CM4BEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CM0BEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CM0BEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "playlistId": "OLAK5uy_lIP2xAM_xxj1aAiDw8OSe4KLWos_6TKOw" + } + }, + "playlistId": "OLAK5uy_lIP2xAM_xxj1aAiDw8OSe4KLWos_6TKOw" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CM0BEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMsBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CMwBEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CMsBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMsBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "playlistId": "OLAK5uy_lIP2xAM_xxj1aAiDw8OSe4KLWos_6TKOw" + } + }, + "playlistId": "OLAK5uy_lIP2xAM_xxj1aAiDw8OSe4KLWos_6TKOw" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMsBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMkBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMoBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMoBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMkBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lIP2xAM_xxj1aAiDw8OSe4KLWos_6TKOw" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CMkBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMcBEMOUBhgFIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMgBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMgBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMcBEMOUBhgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClSZ2io808U-NOICSbjvwEg" + }, + "clickTrackingParams": "CMYBEJD7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CMYBEJD7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMUBEJH7BRgHIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xJUDJ4QU1feHhqMWFBaUR3OE9TZTRLTFdvc182VEtPdw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMUBEJH7BRgHIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + ], + "trackingParams": "CMQBEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_rR0VQ4fTxPM" + }, + "clickTrackingParams": "CMIBENRoGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause black mamba" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play black mamba" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CNEBEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lIP2xAM_xxj1aAiDw8OSe4KLWos_6TKOw" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CNEBEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/9H5D-h9AQdUQsPlq7emEOm4R6atXeOVsQl9CNFfKAXocK9UWVemlewjCc665YE_CJFJPQzm4euGmHDvl=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/9H5D-h9AQdUQsPlq7emEOm4R6atXeOVsQl9CNFfKAXocK9UWVemlewjCc665YE_CJFJPQzm4euGmHDvl=w120-h120-l90-rj", + "width": 120 + }, + { + "height": 226, + "url": "https://lh3.googleusercontent.com/9H5D-h9AQdUQsPlq7emEOm4R6atXeOVsQl9CNFfKAXocK9UWVemlewjCc665YE_CJFJPQzm4euGmHDvl=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/9H5D-h9AQdUQsPlq7emEOm4R6atXeOVsQl9CNFfKAXocK9UWVemlewjCc665YE_CJFJPQzm4euGmHDvl=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CNIBEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "trackingParams": "CMIBENRoGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Mi Back" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "Black Mamba & eLgozzy" + }, + { + "text": " • " + }, + { + "text": "2024" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CL8BEJrzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nH2O8tAltn7k_mSWPmX7XFQi_OAL0Hric" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CL8BEJrzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CL4BEJvzBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nH2O8tAltn7k_mSWPmX7XFQi_OAL0Hric" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CL4BEJvzBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CL0BEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CLwBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLwBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "playlistId": "OLAK5uy_nH2O8tAltn7k_mSWPmX7XFQi_OAL0Hric" + } + }, + "playlistId": "OLAK5uy_nH2O8tAltn7k_mSWPmX7XFQi_OAL0Hric" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CLwBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLoBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CLsBEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CLoBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLoBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "playlistId": "OLAK5uy_nH2O8tAltn7k_mSWPmX7XFQi_OAL0Hric" + } + }, + "playlistId": "OLAK5uy_nH2O8tAltn7k_mSWPmX7XFQi_OAL0Hric" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLoBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLgBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CLkBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CLkBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLgBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nH2O8tAltn7k_mSWPmX7XFQi_OAL0Hric" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CLgBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLYBEMOUBhgFIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CLcBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CLcBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLYBEMOUBhgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCzKrKM1QQQyw8uZ_NcNldGQ" + }, + "clickTrackingParams": "CLUBEJD7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CLUBEJD7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLQBEJH7BRgHIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25IMk84dEFsdG43a19tU1dQbVg3WEZRaV9PQUwwSHJpYw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLQBEJH7BRgHIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + ], + "trackingParams": "CLMBEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_ZXbDKPXnct4" + }, + "clickTrackingParams": "CLIBENRoGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Mi Back" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Mi Back" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CMABEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nH2O8tAltn7k_mSWPmX7XFQi_OAL0Hric" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CMABEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/N1vPbX8Qwykpsx_bCguQKz4D6REvCvHSvgqpGKwN8Z1GIuZHblZalXlKZn-4IMe5Gxv3uSmNDRiagss3XA=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/N1vPbX8Qwykpsx_bCguQKz4D6REvCvHSvgqpGKwN8Z1GIuZHblZalXlKZn-4IMe5Gxv3uSmNDRiagss3XA=w120-h120-l90-rj", + "width": 120 + }, + { + "height": 226, + "url": "https://lh3.googleusercontent.com/N1vPbX8Qwykpsx_bCguQKz4D6REvCvHSvgqpGKwN8Z1GIuZHblZalXlKZn-4IMe5Gxv3uSmNDRiagss3XA=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/N1vPbX8Qwykpsx_bCguQKz4D6REvCvHSvgqpGKwN8Z1GIuZHblZalXlKZn-4IMe5Gxv3uSmNDRiagss3XA=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CMEBEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "trackingParams": "CLIBENRoGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, { "musicResponsiveListItemRenderer": { "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", @@ -3449,17 +6037,17 @@ "pageType": "MUSIC_PAGE_TYPE_ARTIST" } }, - "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" + "browseId": "UC7R_cJYLxanyOw9KsfOzu7Q" }, - "clickTrackingParams": "CGoQ1GgYACITCIC5ocaRifsCFarsEQgd4LICsQ==" + "clickTrackingParams": "CKIBENRoGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" }, - "text": "aespa" + "text": "MOGI (IL)" }, { "text": " • " }, { - "text": "2020" + "text": "2024" } ] } @@ -3481,10 +6069,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CHcQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CK8BEJrzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mqlH5GE7aO-Zfdvc_8pWJ2W1gGI-qDpgs" + "playlistId": "OLAK5uy_m44aqxKamQqxjygVUF9Ce3XZHMc9R1hPk" } }, "text": { @@ -3494,7 +6082,7 @@ } ] }, - "trackingParams": "CHcQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CK8BEJrzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -3503,10 +6091,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CHYQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CK4BEJvzBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mqlH5GE7aO-Zfdvc_8pWJ2W1gGI-qDpgs" + "playlistId": "RDAMPLOLAK5uy_m44aqxKamQqxjygVUF9Ce3XZHMc9R1hPk" } }, "text": { @@ -3516,7 +6104,7 @@ } ] }, - "trackingParams": "CHYQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CK4BEJvzBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -3525,7 +6113,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CHQQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CKwBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", "queueAddEndpoint": { "commands": [ { @@ -3539,16 +6127,22 @@ } ] }, - "trackingParams": "CHUQyscDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CK0BEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } }, - "clickTrackingParams": "CHQQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CKwBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_mqlH5GE7aO-Zfdvc_8pWJ2W1gGI-qDpgs" + "onEmptyQueue": { + "clickTrackingParams": "CKwBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "playlistId": "OLAK5uy_m44aqxKamQqxjygVUF9Ce3XZHMc9R1hPk" + } + }, + "playlistId": "OLAK5uy_m44aqxKamQqxjygVUF9Ce3XZHMc9R1hPk" } } }, @@ -3559,7 +6153,7 @@ } ] }, - "trackingParams": "CHQQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CKwBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -3568,7 +6162,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CHIQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CKoBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", "queueAddEndpoint": { "commands": [ { @@ -3582,16 +6176,22 @@ } ] }, - "trackingParams": "CHMQyscDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CKsBEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } }, - "clickTrackingParams": "CHIQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CKoBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_mqlH5GE7aO-Zfdvc_8pWJ2W1gGI-qDpgs" + "onEmptyQueue": { + "clickTrackingParams": "CKoBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "playlistId": "OLAK5uy_m44aqxKamQqxjygVUF9Ce3XZHMc9R1hPk" + } + }, + "playlistId": "OLAK5uy_m44aqxKamQqxjygVUF9Ce3XZHMc9R1hPk" } } }, @@ -3602,7 +6202,7 @@ } ] }, - "trackingParams": "CHIQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CKoBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -3611,7 +6211,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CHAQhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CKgBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -3619,7 +6219,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CHEQ8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CKkBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", "signInEndpoint": { "hack": true } @@ -3632,13 +6232,13 @@ } ] }, - "trackingParams": "CHEQ8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CKkBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -3656,19 +6256,19 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, "toggledIcon": { - "iconType": "LIBRARY_REMOVE" + "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CHAQhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CKgBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_mqlH5GE7aO-Zfdvc_8pWJ2W1gGI-qDpgs" + "playlistId": "OLAK5uy_m44aqxKamQqxjygVUF9Ce3XZHMc9R1hPk" } } }, @@ -3679,7 +6279,7 @@ } ] }, - "trackingParams": "CHAQhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CKgBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -3688,7 +6288,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CG4Qw5QGGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CKYBEMOUBhgFIhMI18nAxNnLiQMVtd9CBR1x0wF1", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -3696,7 +6296,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CG8Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CKcBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", "signInEndpoint": { "hack": true } @@ -3709,7 +6309,7 @@ } ] }, - "trackingParams": "CG8Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CKcBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "content": { @@ -3733,11 +6333,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CG4Qw5QGGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CKYBEMOUBhgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -3752,9 +6352,9 @@ "pageType": "MUSIC_PAGE_TYPE_ARTIST" } }, - "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" + "browseId": "UC7R_cJYLxanyOw9KsfOzu7Q" }, - "clickTrackingParams": "CG0QkPsFGAYiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CKUBEJD7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" }, "text": { "runs": [ @@ -3763,7 +6363,7 @@ } ] }, - "trackingParams": "CG0QkPsFGAYiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CKUBEJD7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -3772,9 +6372,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CGwQkfsFGAciEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CKQBEJH7BRgHIhMI18nAxNnLiQMVtd9CBR1x0wF1", "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X21xbEg1R0U3YU8tWmZkdmNfOHBXSjJXMWdHSS1xRHBncw%3D%3D", + "serializedShareEntity": "EilPTEFLNXV5X200NGFxeEthbVFxeGp5Z1ZVRjlDZTNYWkhNYzlSMWhQaw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -3785,11 +6385,11 @@ } ] }, - "trackingParams": "CGwQkfsFGAciEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CKQBEJH7BRgHIhMI18nAxNnLiQMVtd9CBR1x0wF1" } } ], - "trackingParams": "CGsQpzsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CKMBEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "navigationEndpoint": { @@ -3799,9 +6399,9 @@ "pageType": "MUSIC_PAGE_TYPE_ALBUM" } }, - "browseId": "MPREb_OpHWHwyNOuY" + "browseId": "MPREb_LGXKt36T0rM" }, - "clickTrackingParams": "CGoQ1GgYACITCIC5ocaRifsCFarsEQgd4LICsQ==" + "clickTrackingParams": "CKIBENRoGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" }, "overlay": { "musicItemThumbnailOverlayRenderer": { @@ -3831,7 +6431,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -3839,16 +6439,16 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CHgQyN4CIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CLABEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_mqlH5GE7aO-Zfdvc_8pWJ2W1gGI-qDpgs" + "playlistId": "OLAK5uy_m44aqxKamQqxjygVUF9Ce3XZHMc9R1hPk" } }, "playingIcon": { "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CHgQyN4CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CLABEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -3861,997 +6461,32 @@ "thumbnails": [ { "height": 60, - "url": "https://lh3.googleusercontent.com/MOL4_Ula9hocErkX2xK_7mISFiWvQz51vReT14KCHF9wsqCEH6sO8iilFFelWMn7JOYIk2WFa-gMmw2uvw=w60-h60-l90-rj", + "url": "https://lh3.googleusercontent.com/eusGkrg73YceOgTNl2na4Ywi2pKSdeIVCNYuebdd5nJ20Yw_L4wBTKKR0_Qj4W0-in32dKal-GYKNUGB=w60-h60-l90-rj", "width": 60 }, { "height": 120, - "url": "https://lh3.googleusercontent.com/MOL4_Ula9hocErkX2xK_7mISFiWvQz51vReT14KCHF9wsqCEH6sO8iilFFelWMn7JOYIk2WFa-gMmw2uvw=w120-h120-l90-rj", + "url": "https://lh3.googleusercontent.com/eusGkrg73YceOgTNl2na4Ywi2pKSdeIVCNYuebdd5nJ20Yw_L4wBTKKR0_Qj4W0-in32dKal-GYKNUGB=w120-h120-l90-rj", "width": 120 }, { "height": 226, - "url": "https://lh3.googleusercontent.com/MOL4_Ula9hocErkX2xK_7mISFiWvQz51vReT14KCHF9wsqCEH6sO8iilFFelWMn7JOYIk2WFa-gMmw2uvw=w226-h226-l90-rj", + "url": "https://lh3.googleusercontent.com/eusGkrg73YceOgTNl2na4Ywi2pKSdeIVCNYuebdd5nJ20Yw_L4wBTKKR0_Qj4W0-in32dKal-GYKNUGB=w226-h226-l90-rj", "width": 226 }, { "height": 544, - "url": "https://lh3.googleusercontent.com/MOL4_Ula9hocErkX2xK_7mISFiWvQz51vReT14KCHF9wsqCEH6sO8iilFFelWMn7JOYIk2WFa-gMmw2uvw=w544-h544-l90-rj", + "url": "https://lh3.googleusercontent.com/eusGkrg73YceOgTNl2na4Ywi2pKSdeIVCNYuebdd5nJ20Yw_L4wBTKKR0_Qj4W0-in32dKal-GYKNUGB=w544-h544-l90-rj", "width": 544 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CHkQhL8CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CLEBEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, - "trackingParams": "CGoQ1GgYACITCIC5ocaRifsCFarsEQgd4LICsQ==" - } - }, - { - "musicResponsiveListItemRenderer": { - "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", - "flexColumns": [ - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", - "text": { - "runs": [ - { - "text": "Girls - The 2nd Mini Album" - } - ] - } - } - }, - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", - "text": { - "runs": [ - { - "text": "Album" - }, - { - "text": " • " - }, - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" - }, - "clickTrackingParams": "CFoQ1GgYASITCIC5ocaRifsCFarsEQgd4LICsQ==" - }, - "text": "aespa" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - } - } - } - ], - "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", - "menu": { - "menuRenderer": { - "accessibility": { - "accessibilityData": { - "label": "Action menu" - } - }, - "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MUSIC_SHUFFLE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CGcQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_k2vy8IgtwqNMTL-y2HMAS9LSCRqs95xyk" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CGcQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CGYQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_k2vy8IgtwqNMTL-y2HMAS9LSCRqs95xyk" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CGYQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CGQQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CGUQyscDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - } - }, - "clickTrackingParams": "CGQQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_k2vy8IgtwqNMTL-y2HMAS9LSCRqs95xyk" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CGQQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CGIQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CGMQyscDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - } - }, - "clickTrackingParams": "CGIQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_k2vy8IgtwqNMTL-y2HMAS9LSCRqs95xyk" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CGIQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CGAQhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CGEQ8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CGEQ8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - "content": { - "runs": [ - { - "text": "Add favorites to your library after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Save this for later" - } - ] - } - } - } - } - }, - "defaultText": { - "runs": [ - { - "text": "Add album to library" - } - ] - }, - "toggledIcon": { - "iconType": "LIBRARY_REMOVE" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CGAQhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_k2vy8IgtwqNMTL-y2HMAS9LSCRqs95xyk" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CGAQhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CF4Qw5QGGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CF8Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CF8Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - "content": { - "runs": [ - { - "text": "Make playlists and share them after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Save this for later" - } - ] - } - } - } - } - }, - "text": { - "runs": [ - { - "text": "Add to playlist" - } - ] - }, - "trackingParams": "CF4Qw5QGGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" - }, - "clickTrackingParams": "CF0QkPsFGAYiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CF0QkPsFGAYiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CFwQkfsFGAciEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2sydnk4SWd0d3FOTVRMLXkySE1BUzlMU0NScXM5NXh5aw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CFwQkfsFGAciEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - } - ], - "trackingParams": "CFsQpzsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_pvdHyqvGjbI" - }, - "clickTrackingParams": "CFoQ1GgYASITCIC5ocaRifsCFarsEQgd4LICsQ==" - }, - "overlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "3422552064", - "3422552064" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Girls - The 2nd Mini Album" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Girls - The 2nd Mini Album" - } - }, - "activeBackgroundColor": 0, - "activeScaleFactor": 1, - "backgroundColor": 0, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", - "iconColor": 4294967295, - "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CGgQyN4CIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_k2vy8IgtwqNMTL-y2HMAS9LSCRqs95xyk" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CGgQyN4CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", - "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" - } - }, - "thumbnail": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 60, - "url": "https://lh3.googleusercontent.com/JYOTl7neLJLMUEVjdg_qIqz7XjUZB2AQAx_sRDlNVd5jSYiv1xA0v68ZN8Kn0KKf1fSfQnTaeakGeQgI=w60-h60-l90-rj", - "width": 60 - }, - { - "height": 120, - "url": "https://lh3.googleusercontent.com/JYOTl7neLJLMUEVjdg_qIqz7XjUZB2AQAx_sRDlNVd5jSYiv1xA0v68ZN8Kn0KKf1fSfQnTaeakGeQgI=w120-h120-l90-rj", - "width": 120 - }, - { - "height": 226, - "url": "https://lh3.googleusercontent.com/JYOTl7neLJLMUEVjdg_qIqz7XjUZB2AQAx_sRDlNVd5jSYiv1xA0v68ZN8Kn0KKf1fSfQnTaeakGeQgI=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/JYOTl7neLJLMUEVjdg_qIqz7XjUZB2AQAx_sRDlNVd5jSYiv1xA0v68ZN8Kn0KKf1fSfQnTaeakGeQgI=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CGkQhL8CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - "trackingParams": "CFoQ1GgYASITCIC5ocaRifsCFarsEQgd4LICsQ==" - } - }, - { - "musicResponsiveListItemRenderer": { - "badges": [ - { - "musicInlineBadgeRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Explicit" - } - }, - "icon": { - "iconType": "MUSIC_EXPLICIT_BADGE" - }, - "trackingParams": "CEoQoe0CGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - } - ], - "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", - "flexColumns": [ - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", - "text": { - "runs": [ - { - "text": "Black Mamba (feat. Foolio)" - } - ] - } - } - }, - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", - "text": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCZK5n7V2-iPHfUXLV2tDvzw" - }, - "clickTrackingParams": "CEkQ1GgYAiITCIC5ocaRifsCFarsEQgd4LICsQ==" - }, - "text": "Cojack" - }, - { - "text": " • " - }, - { - "text": "2020" - } - ] - } - } - } - ], - "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", - "menu": { - "menuRenderer": { - "accessibility": { - "accessibilityData": { - "label": "Action menu" - } - }, - "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MUSIC_SHUFFLE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CFcQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_k9mG4pUmK3kyL2Z9LjJ3ApmXu0JWU_Xhc" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CFcQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CFYQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_k9mG4pUmK3kyL2Z9LjJ3ApmXu0JWU_Xhc" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CFYQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CFQQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CFUQyscDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - } - }, - "clickTrackingParams": "CFQQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_k9mG4pUmK3kyL2Z9LjJ3ApmXu0JWU_Xhc" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CFQQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CFIQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CFMQyscDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - } - }, - "clickTrackingParams": "CFIQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_k9mG4pUmK3kyL2Z9LjJ3ApmXu0JWU_Xhc" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CFIQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CFAQhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CFEQ8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CFEQ8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - "content": { - "runs": [ - { - "text": "Add favorites to your library after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Save this for later" - } - ] - } - } - } - } - }, - "defaultText": { - "runs": [ - { - "text": "Add album to library" - } - ] - }, - "toggledIcon": { - "iconType": "LIBRARY_REMOVE" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CFAQhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_k9mG4pUmK3kyL2Z9LjJ3ApmXu0JWU_Xhc" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CFAQhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CE4Qw5QGGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CE8Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CE8Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - "content": { - "runs": [ - { - "text": "Make playlists and share them after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Save this for later" - } - ] - } - } - } - } - }, - "text": { - "runs": [ - { - "text": "Add to playlist" - } - ] - }, - "trackingParams": "CE4Qw5QGGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCZK5n7V2-iPHfUXLV2tDvzw" - }, - "clickTrackingParams": "CE0QkPsFGAYiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CE0QkPsFGAYiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CEwQkfsFGAciEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2s5bUc0cFVtSzNreUwyWjlMakozQXBtWHUwSldVX1hoYw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CEwQkfsFGAciEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - } - ], - "trackingParams": "CEsQpzsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_CznUTKnATw6" - }, - "clickTrackingParams": "CEkQ1GgYAiITCIC5ocaRifsCFarsEQgd4LICsQ==" - }, - "overlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "3422552064", - "3422552064" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Black Mamba" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Black Mamba" - } - }, - "activeBackgroundColor": 0, - "activeScaleFactor": 1, - "backgroundColor": 0, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", - "iconColor": 4294967295, - "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CFgQyN4CIhMIgLmhxpGJ-wIVquwRCB3gsgKx", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_k9mG4pUmK3kyL2Z9LjJ3ApmXu0JWU_Xhc" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CFgQyN4CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", - "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" - } - }, - "thumbnail": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 60, - "url": "https://lh3.googleusercontent.com/3ut0tvS5LYcfHjLwrYPSYNbraALbFb9ov28b2GXHB8ABaMGWILUko_BJa1jpsSVrELE_B8so3NtYMVfb1g=w60-h60-l90-rj", - "width": 60 - }, - { - "height": 120, - "url": "https://lh3.googleusercontent.com/3ut0tvS5LYcfHjLwrYPSYNbraALbFb9ov28b2GXHB8ABaMGWILUko_BJa1jpsSVrELE_B8so3NtYMVfb1g=w120-h120-l90-rj", - "width": 120 - }, - { - "height": 226, - "url": "https://lh3.googleusercontent.com/3ut0tvS5LYcfHjLwrYPSYNbraALbFb9ov28b2GXHB8ABaMGWILUko_BJa1jpsSVrELE_B8so3NtYMVfb1g=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/3ut0tvS5LYcfHjLwrYPSYNbraALbFb9ov28b2GXHB8ABaMGWILUko_BJa1jpsSVrELE_B8so3NtYMVfb1g=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CFkQhL8CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - }, - "trackingParams": "CEkQ1GgYAiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CKIBENRoGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" } } ], @@ -4867,15 +6502,15 @@ } ] }, - "trackingParams": "CEgQ-V4YBCITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CKEBEPleGAQiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { "musicShelfRenderer": { "bottomEndpoint": { - "clickTrackingParams": "CDcQ-V4YBSITCIC5ocaRifsCFarsEQgd4LICsQ==", + "clickTrackingParams": "CHMQ-V4YBSITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "searchEndpoint": { - "params": "EgWKAQIgAWoKEAMQBBAJEAUQCg%3D%3D", + "params": "EgeKAQQoAEABahAQAxAEEAkQChAFEBEQEBAV", "query": "black mamba" } }, @@ -4897,7 +6532,7 @@ "text": { "runs": [ { - "text": "aespa" + "text": "Black Mamba Mixtape" } ] } @@ -4909,13 +6544,30 @@ "text": { "runs": [ { - "text": "Artist" + "text": "Playlist" }, { "text": " • " }, { - "text": "4.12M subscribers" + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + }, + "browseId": "UCulZuGBZLHEu_9natGq9Q7g" + }, + "clickTrackingParams": "CJIBENafBxgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "text": "Jay South Music" + }, + { + "text": " • " + }, + { + "text": "9 views" } ] } @@ -4937,10 +6589,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CEYQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CJ4BEJrzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1", "watchPlaylistEndpoint": { - "params": "wAEB8gECGAE%3D", - "playlistId": "RDAOTnJyQwichmgzz3NRIPueWQ" + "params": "wAEB8gECKAE%3D", + "playlistId": "PLnAcDMIXVUFqVONj6hrtTb5jfumRjA6NF" } }, "text": { @@ -4950,7 +6602,7 @@ } ] }, - "trackingParams": "CEYQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CJ4BEJrzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -4959,10 +6611,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CEUQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CJ0BEJvzBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDEMTnJyQwichmgzz3NRIPueWQ" + "playlistId": "RDAMPLPLnAcDMIXVUFqVONj6hrtTb5jfumRjA6NF" } }, "text": { @@ -4972,7 +6624,240 @@ } ] }, - "trackingParams": "CEUQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CJ0BEJvzBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CJwBEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CJsBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJsBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "playlistId": "PLnAcDMIXVUFqVONj6hrtTb5jfumRjA6NF" + } + }, + "playlistId": "PLnAcDMIXVUFqVONj6hrtTb5jfumRjA6NF" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJsBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CJoBEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CJkBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJkBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "playlistId": "PLnAcDMIXVUFqVONj6hrtTb5jfumRjA6NF" + } + }, + "playlistId": "PLnAcDMIXVUFqVONj6hrtTb5jfumRjA6NF" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJkBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJcBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJgBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJgBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Save playlist to library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJcBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "PLnAcDMIXVUFqVONj6hrtTb5jfumRjA6NF" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "trackingParams": "CJcBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJUBEMOUBhgFIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJYBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJYBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJUBEMOUBhgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, { @@ -4981,9 +6866,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CEQQkfsFGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CJQBEJH7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1", "shareEntityEndpoint": { - "serializedShareEntity": "GhhVQ0VkWkFkbm5LcWJhSE9sdjhuTTZPdEE%3D", + "serializedShareEntity": "EiJQTG5BY0RNSVhWVUZxVk9OajZocnRUYjVqZnVtUmpBNk5G", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -4994,48 +6879,1053 @@ } ] }, - "trackingParams": "CEQQkfsFGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CJQBEJH7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" } } ], - "trackingParams": "CEMQpzsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CJMBEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "navigationEndpoint": { "browseEndpoint": { "browseEndpointContextSupportedConfigs": { "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" } }, - "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" + "browseId": "VLPLnAcDMIXVUFqVONj6hrtTb5jfumRjA6NF" }, - "clickTrackingParams": "CEIQ1WgYACITCIC5ocaRifsCFarsEQgd4LICsQ==" + "clickTrackingParams": "CJIBENafBxgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Black Mamba Mixtape" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Black Mamba Mixtape" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CJ8BEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "PLnAcDMIXVUFqVONj6hrtTb5jfumRjA6NF" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJ8BEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } }, "thumbnail": { "musicThumbnailRenderer": { "thumbnail": { "thumbnails": [ { - "height": 60, - "url": "https://lh3.googleusercontent.com/gV8Sbt3iKraNm_H9ZaH3oh6ERRdN0Dj6qHmTLPiQQ4WS8uGNN09HlpujMJOWwei_z5yC9Th1cZXyOQ=w60-h60-p-l90-rj", - "width": 60 + "height": 225, + "url": "https://i.ytimg.com/vi/S3xisVb4Nt0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kHkhtnq5pAgdX7sVqd7699sdwzPw", + "width": 400 }, { - "height": 120, - "url": "https://lh3.googleusercontent.com/gV8Sbt3iKraNm_H9ZaH3oh6ERRdN0Dj6qHmTLPiQQ4WS8uGNN09HlpujMJOWwei_z5yC9Th1cZXyOQ=w120-h120-p-l90-rj", - "width": 120 + "height": 450, + "url": "https://i.ytimg.com/vi/S3xisVb4Nt0/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3kgdAd7dmEUsPEwH_QG1yjtHLfxNA", + "width": 800 + }, + { + "height": 480, + "url": "https://i.ytimg.com/vi/S3xisVb4Nt0/hq720.jpg?sqp=-oaymwEXCNUGEOADIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mLtxWlynBlNSCHsBbxPLxGUhcijQ", + "width": 853 } ] }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CEcQhL8CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKABEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, - "trackingParams": "CEIQ1WgYACITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CJIBENafBxgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Black Mamba Man" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Playlist" + }, + { + "text": " • " + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + }, + "browseId": "UCNgek3KQIVQsT_2O2puCWRA" + }, + "clickTrackingParams": "CIMBENafBxgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "text": "one day" + }, + { + "text": " • " + }, + { + "text": "122 views" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI8BEJrzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "PL38uS170Dxaatridfyyj-fqjSOlwg7h5R" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CI8BEJrzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI4BEJvzBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLPL38uS170Dxaatridfyyj-fqjSOlwg7h5R" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CI4BEJvzBRgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CI0BEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CIwBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIwBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "playlistId": "PL38uS170Dxaatridfyyj-fqjSOlwg7h5R" + } + }, + "playlistId": "PL38uS170Dxaatridfyyj-fqjSOlwg7h5R" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIwBEL7uBRgCIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIoBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CIsBEMrHAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + }, + "clickTrackingParams": "CIoBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIoBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "playlistId": "PL38uS170Dxaatridfyyj-fqjSOlwg7h5R" + } + }, + "playlistId": "PL38uS170Dxaatridfyyj-fqjSOlwg7h5R" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIoBEPvvBRgDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIgBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIkBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIkBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Save playlist to library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIgBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "PL38uS170Dxaatridfyyj-fqjSOlwg7h5R" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "trackingParams": "CIgBEIT_BRgEIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIYBEMOUBhgFIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIcBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIcBEPBbIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CIYBEMOUBhgFIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIUBEJH7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "shareEntityEndpoint": { + "serializedShareEntity": "EiJQTDM4dVMxNzBEeGFhdHJpZGZ5eWotZnFqU09sd2c3aDVS", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIUBEJH7BRgGIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + ], + "trackingParams": "CIQBEKc7IhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLPL38uS170Dxaatridfyyj-fqjSOlwg7h5R" + }, + "clickTrackingParams": "CIMBENafBxgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Black Mamba Man" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Black Mamba Man" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CJABEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "PL38uS170Dxaatridfyyj-fqjSOlwg7h5R" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJABEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 225, + "url": "https://i.ytimg.com/vi/1jbpmnC_ox0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kZHx-HBttEizSkMOftu5xGb7CYYQ", + "width": 400 + }, + { + "height": 450, + "url": "https://i.ytimg.com/vi/1jbpmnC_ox0/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3kYUMfl3cLxq6_oUdli4dyGLPrJRA", + "width": 800 + }, + { + "height": 480, + "url": "https://i.ytimg.com/vi/1jbpmnC_ox0/hq720.jpg?sqp=-oaymwEXCNUGEOADIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3n_rKN8FnNasX2FNzN8_OtVyGmvBQ", + "width": 853 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJEBEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "trackingParams": "CIMBENafBxgBIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "The Black Mamba" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Playlist" + }, + { + "text": " • " + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + }, + "browseId": "UCCE3DsIpCrNWQMICx-zMNew" + }, + "clickTrackingParams": "CHQQ1p8HGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "text": "MoveAMente" + }, + { + "text": " • " + }, + { + "text": "21 views" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIABEJrzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "PLEl8NhnoNOpbZ0HkkChu3xEhKShx_vtya" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CIABEJrzBRgAIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CH8Qm_MFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLPLEl8NhnoNOpbZ0HkkChu3xEhKShx_vtya" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CH8Qm_MFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CH0Qvu4FGAIiEwjXycDE2cuJAxW130IFHXHTAXU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CH4QyscDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + }, + "clickTrackingParams": "CH0Qvu4FGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CH0Qvu4FGAIiEwjXycDE2cuJAxW130IFHXHTAXU=", + "watchEndpoint": { + "playlistId": "PLEl8NhnoNOpbZ0HkkChu3xEhKShx_vtya" + } + }, + "playlistId": "PLEl8NhnoNOpbZ0HkkChu3xEhKShx_vtya" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CH0Qvu4FGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHsQ--8FGAMiEwjXycDE2cuJAxW130IFHXHTAXU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CHwQyscDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + }, + "clickTrackingParams": "CHsQ--8FGAMiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CHsQ--8FGAMiEwjXycDE2cuJAxW130IFHXHTAXU=", + "watchEndpoint": { + "playlistId": "PLEl8NhnoNOpbZ0HkkChu3xEhKShx_vtya" + } + }, + "playlistId": "PLEl8NhnoNOpbZ0HkkChu3xEhKShx_vtya" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CHsQ--8FGAMiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CHkQhP8FGAQiEwjXycDE2cuJAxW130IFHXHTAXU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CHoQ8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CHoQ8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Save playlist to library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CHkQhP8FGAQiEwjXycDE2cuJAxW130IFHXHTAXU=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "PLEl8NhnoNOpbZ0HkkChu3xEhKShx_vtya" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "trackingParams": "CHkQhP8FGAQiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHcQw5QGGAUiEwjXycDE2cuJAxW130IFHXHTAXU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CHgQ8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CHgQ8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CHcQw5QGGAUiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHYQkfsFGAYiEwjXycDE2cuJAxW130IFHXHTAXU=", + "shareEntityEndpoint": { + "serializedShareEntity": "EiJQTEVsOE5obm9OT3BiWjBIa2tDaHUzeEVoS1NoeF92dHlh", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CHYQkfsFGAYiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + } + ], + "trackingParams": "CHUQpzsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLPLEl8NhnoNOpbZ0HkkChu3xEhKShx_vtya" + }, + "clickTrackingParams": "CHQQ1p8HGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause The Black Mamba" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play The Black Mamba" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CIEBEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "PLEl8NhnoNOpbZ0HkkChu3xEhKShx_vtya" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CIEBEMjeAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 192, + "url": "https://yt3.ggpht.com/NtKO3BdJFpImVJNOTFMS2f1F6rK6ivWHVP3jGsYoERpvvBr7oXb7eWSwhIZBYRCEtW_Qvyib9KH2=s192", + "width": 192 + }, + { + "height": 576, + "url": "https://yt3.ggpht.com/NtKO3BdJFpImVJNOTFMS2f1F6rK6ivWHVP3jGsYoERpvvBr7oXb7eWSwhIZBYRCEtW_Qvyib9KH2=s576", + "width": 576 + }, + { + "height": 1200, + "url": "https://yt3.ggpht.com/NtKO3BdJFpImVJNOTFMS2f1F6rK6ivWHVP3jGsYoERpvvBr7oXb7eWSwhIZBYRCEtW_Qvyib9KH2=s1200", + "width": 1200 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIIBEIS_AiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + "trackingParams": "CHQQ1p8HGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + } + ], + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + }, + "title": { + "runs": [ + { + "text": "Community playlists" + } + ] + }, + "trackingParams": "CHMQ-V4YBSITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + { + "musicShelfRenderer": { + "bottomEndpoint": { + "clickTrackingParams": "CGAQ-V4YBiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "searchEndpoint": { + "params": "EgWKAQIgAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", + "query": "black mamba" + } + }, + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "contents": [ { "musicResponsiveListItemRenderer": { "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", @@ -5064,7 +7954,7 @@ "text": " • " }, { - "text": "2.64K subscribers" + "text": "2.89K subscribers" } ] } @@ -5086,7 +7976,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CEAQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CHEQmvMFGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", "playlistId": "RDAOd5icaKq1AVsST3072Cl87w" @@ -5099,7 +7989,7 @@ } ] }, - "trackingParams": "CEAQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CHEQmvMFGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { @@ -5108,7 +7998,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CD8Qm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CHAQm_MFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDEMd5icaKq1AVsST3072Cl87w" @@ -5121,7 +8011,7 @@ } ] }, - "trackingParams": "CD8Qm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CHAQm_MFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { @@ -5130,7 +8020,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CD4QkfsFGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CG8QkfsFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=", "shareEntityEndpoint": { "serializedShareEntity": "GhhVQ2FEVDIwLUIzVThoLXRQZ19WTXZudHc%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -5143,11 +8033,11 @@ } ] }, - "trackingParams": "CD4QkfsFGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CG8QkfsFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" } } ], - "trackingParams": "CD0QpzsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CG4QpzsiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, "navigationEndpoint": { @@ -5159,7 +8049,7 @@ }, "browseId": "UCaDT20-B3U8h-tPg_VMvntw" }, - "clickTrackingParams": "CDwQ1WgYASITCIC5ocaRifsCFarsEQgd4LICsQ==" + "clickTrackingParams": "CG0Q1WgYACITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" }, "thumbnail": { "musicThumbnailRenderer": { @@ -5179,10 +8069,159 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CEEQhL8CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CHIQhL8CIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, - "trackingParams": "CDwQ1WgYASITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CG0Q1WgYACITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Black Mamba Official" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Artist" + }, + { + "text": " • " + }, + { + "text": "140 subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGsQmvMFGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOWJPnBm4VgnCnTMooY29KBw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CGsQmvMFGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGoQm_MFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMWJPnBm4VgnCnTMooY29KBw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CGoQm_MFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGkQkfsFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ1JwaTFnQmxheDRzSzNkTk54SXh4Rmc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CGkQkfsFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + } + ], + "trackingParams": "CGgQpzsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCRpi1gBlax4sK3dNNxIxxFg" + }, + "clickTrackingParams": "CGcQ1WgYASITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/DBaVgQwyirgH4_Rg6w7jQBTP1fyHl5dNMK91dLZD5q2lFLoijOK3Or53rVnNgYfTQwDIofcLrG2QtxKQoQ=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/DBaVgQwyirgH4_Rg6w7jQBTP1fyHl5dNMK91dLZD5q2lFLoijOK3Or53rVnNgYfTQwDIofcLrG2QtxKQoQ=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CGwQhL8CIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "trackingParams": "CGcQ1WgYASITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, { @@ -5229,13 +8268,57 @@ } }, "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGUQmvMFGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOh15G0k0xYqEqz7Qec1ER7A" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CGUQmvMFGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGQQm_MFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMh15G0k0xYqEqz7Qec1ER7A" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CGQQm_MFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, { "menuNavigationItemRenderer": { "icon": { "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CDoQkfsFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CGMQkfsFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=", "shareEntityEndpoint": { "serializedShareEntity": "GhhVQ0xjd0xKSUdCRER2YmZxOEpFUlY2QWc%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -5248,11 +8331,11 @@ } ] }, - "trackingParams": "CDoQkfsFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CGMQkfsFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" } } ], - "trackingParams": "CDkQpzsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CGIQpzsiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, "navigationEndpoint": { @@ -5264,7 +8347,7 @@ }, "browseId": "UCLcwLJIGBDDvbfq8JERV6Ag" }, - "clickTrackingParams": "CDgQ1WgYAiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "clickTrackingParams": "CGEQ1WgYAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" }, "thumbnail": { "musicThumbnailRenderer": { @@ -5272,22 +8355,22 @@ "thumbnails": [ { "height": 60, - "url": "https://lh3.googleusercontent.com/qPN6oDatmKgTxytO4b8ScN1qGGMBpsF2_vH9OG1sSDn8Hew28J8vy9y4WNWOJYvSCyHbghIs_B5aGgkJ=w60-h60-l90-rj", + "url": "https://lh3.googleusercontent.com/qorCs0oXX4VRdkGM6T6pG9IEugjWfeA9hWoGSzkH427PkRcMi5cJR6Vy4m_FTw-Bhmnj-sAHH54i7PI2=w60-h60-l90-rj", "width": 60 }, { "height": 120, - "url": "https://lh3.googleusercontent.com/qPN6oDatmKgTxytO4b8ScN1qGGMBpsF2_vH9OG1sSDn8Hew28J8vy9y4WNWOJYvSCyHbghIs_B5aGgkJ=w120-h120-l90-rj", + "url": "https://lh3.googleusercontent.com/qorCs0oXX4VRdkGM6T6pG9IEugjWfeA9hWoGSzkH427PkRcMi5cJR6Vy4m_FTw-Bhmnj-sAHH54i7PI2=w120-h120-l90-rj", "width": 120 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CDsQhL8CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CGYQhL8CIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, - "trackingParams": "CDgQ1WgYAiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CGEQ1WgYAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } ], @@ -5303,15 +8386,15 @@ } ] }, - "trackingParams": "CDcQ-V4YBSITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CGAQ-V4YBiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } }, { "musicShelfRenderer": { "bottomEndpoint": { - "clickTrackingParams": "CAkQ-V4YBiITCIC5ocaRifsCFarsEQgd4LICsQ==", + "clickTrackingParams": "CEoQ-V4YByITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "searchEndpoint": { - "params": "EgeKAQQoAEABagoQAxAEEAkQBRAK", + "params": "EgWKAQJQAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", "query": "black mamba" } }, @@ -5333,7 +8416,7 @@ "text": { "runs": [ { - "text": "IRMA MIRTILLA Black Mamba" + "text": "The Mamba + Maddy Show" } ] } @@ -5345,7 +8428,7 @@ "text": { "runs": [ { - "text": "Playlist" + "text": "Podcast" }, { "text": " • " @@ -5358,17 +8441,11 @@ "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" } }, - "browseId": "UCtZaFx5MXZHIh7VTItJK1lQ" + "browseId": "UCN0ds-ql5XLUeT7IF2oK2Vw" }, - "clickTrackingParams": "CCgQ1p8HGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CFkQ7uAIGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" }, - "text": "Lajos Fülöp" - }, - { - "text": " • " - }, - { - "text": "29 songs" + "text": "Daniel Mamba Odoi" } ] } @@ -5384,143 +8461,13 @@ } }, "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MUSIC_SHUFFLE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CDQQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "PLk76iSbFqNJsu_Gozn9SkEXxQ7t-bpXid" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CDQQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CDMQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLPLk76iSbFqNJsu_Gozn9SkEXxQ7t-bpXid" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CDMQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CDEQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Playlist will play next" - } - ] - }, - "trackingParams": "CDIQyscDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - } - }, - "clickTrackingParams": "CDEQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "PLk76iSbFqNJsu_Gozn9SkEXxQ7t-bpXid" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CDEQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CC8Q--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Playlist added to queue" - } - ] - }, - "trackingParams": "CDAQyscDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - } - }, - "clickTrackingParams": "CC8Q--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "PLk76iSbFqNJsu_Gozn9SkEXxQ7t-bpXid" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CC8Q--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, { "toggleMenuServiceItemRenderer": { "defaultIcon": { "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CC0QhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CFwQhP8FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -5528,7 +8475,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CC4Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CF0Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", "signInEndpoint": { "hack": true } @@ -5541,13 +8488,13 @@ } ] }, - "trackingParams": "CC4Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CF0Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -5565,88 +8512,30 @@ "defaultText": { "runs": [ { - "text": "Add playlist to library" + "text": "Save to library" } ] }, "toggledIcon": { - "iconType": "LIBRARY_REMOVE" + "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CC0QhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CFwQhP8FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "PLk76iSbFqNJsu_Gozn9SkEXxQ7t-bpXid" + "playlistId": "PLF1nPSf9c6AdlQDKMe5gW0ztSNR4GPrcl" } } }, "toggledText": { "runs": [ { - "text": "Remove playlist from library" + "text": "Remove from library" } ] }, - "trackingParams": "CC0QhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CCsQw5QGGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CCwQ8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CCwQ8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - "content": { - "runs": [ - { - "text": "Make playlists and share them after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Save this for later" - } - ] - } - } - } - } - }, - "text": { - "runs": [ - { - "text": "Add to playlist" - } - ] - }, - "trackingParams": "CCsQw5QGGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CFwQhP8FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { @@ -5655,9 +8544,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CCoQkfsFGAYiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CFsQkfsFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=", "shareEntityEndpoint": { - "serializedShareEntity": "EiJQTGs3NmlTYkZxTkpzdV9Hb3puOVNrRVh4UTd0LWJwWGlk", + "serializedShareEntity": "EiJQTEYxblBTZjljNkFkbFFES01lNWdXMHp0U05SNEdQcmNs", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -5668,23 +8557,23 @@ } ] }, - "trackingParams": "CCoQkfsFGAYiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CFsQkfsFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" } } ], - "trackingParams": "CCkQpzsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CFoQpzsiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, "navigationEndpoint": { "browseEndpoint": { "browseEndpointContextSupportedConfigs": { "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" } }, - "browseId": "VLPLk76iSbFqNJsu_Gozn9SkEXxQ7t-bpXid" + "browseId": "MPSPPLF1nPSf9c6AdlQDKMe5gW0ztSNR4GPrcl" }, - "clickTrackingParams": "CCgQ1p8HGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CFkQ7uAIGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" }, "overlay": { "musicItemThumbnailOverlayRenderer": { @@ -5700,12 +8589,12 @@ "musicPlayButtonRenderer": { "accessibilityPauseData": { "accessibilityData": { - "label": "Pause IRMA MIRTILLA Black Mamba" + "label": "Pause The Mamba + Maddy Show" } }, "accessibilityPlayData": { "accessibilityData": { - "label": "Play IRMA MIRTILLA Black Mamba" + "label": "Play The Mamba + Maddy Show" } }, "activeBackgroundColor": 0, @@ -5714,7 +8603,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -5722,17 +8611,16 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CDUQyN4CIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CF4QyN4CIhMI18nAxNnLiQMVtd9CBR1x0wF1", "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "PLk76iSbFqNJsu_Gozn9SkEXxQ7t-bpXid" + "playlistId": "PLF1nPSf9c6AdlQDKMe5gW0ztSNR4GPrcl" } }, "playingIcon": { "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CDUQyN4CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CF4QyN4CIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -5744,28 +8632,33 @@ "thumbnail": { "thumbnails": [ { - "height": 225, - "url": "https://i.ytimg.com/vi/md19pon3B9o/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kR84wE4E_UufGzATfZhAsFWEieaA", - "width": 400 + "height": 60, + "url": "https://i.ytimg.com/pl_c/PLF1nPSf9c6AdlQDKMe5gW0ztSNR4GPrcl/studio_square_thumbnail.jpg?sqp=CM3xtbkG-oaymwEICDwQPCAASFqi85f_AwYI3OWhtAY&rs=AMzJL3m9ePMyYiazdHhl0bve79YoANXNHA", + "width": 60 }, { - "height": 450, - "url": "https://i.ytimg.com/vi/md19pon3B9o/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nxumiGKYWYiiTokZB8M6rwtK5mRw", - "width": 800 + "height": 120, + "url": "https://i.ytimg.com/pl_c/PLF1nPSf9c6AdlQDKMe5gW0ztSNR4GPrcl/studio_square_thumbnail.jpg?sqp=CM3xtbkG-oaymwEICHgQeCAASFqi85f_AwYI3OWhtAY&rs=AMzJL3kBrm54WfDV1202bhc_7NnFtuR2QA", + "width": 120 }, { - "height": 480, - "url": "https://i.ytimg.com/vi/md19pon3B9o/hq720.jpg?sqp=-oaymwEXCNUGEOADIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mEU1yvpIHQXYgVnCyXx8Rlzilg6Q", - "width": 853 + "height": 226, + "url": "https://i.ytimg.com/pl_c/PLF1nPSf9c6AdlQDKMe5gW0ztSNR4GPrcl/studio_square_thumbnail.jpg?sqp=CM3xtbkG-oaymwEKCOIBEOIBIABIWqLzl_8DBgjc5aG0Bg&rs=AMzJL3moPZlY6pebVzsucNM0hFJg6E1iOA", + "width": 226 + }, + { + "height": 544, + "url": "https://i.ytimg.com/pl_c/PLF1nPSf9c6AdlQDKMe5gW0ztSNR4GPrcl/studio_square_thumbnail.jpg?sqp=CM3xtbkG-oaymwEKCKAEEKAEIABIWqLzl_8DBgjc5aG0Bg&rs=AMzJL3kK8BcSgB8AnNLvrIlo25u5ldoy9A", + "width": 544 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CDYQhL8CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CF8QhL8CIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, - "trackingParams": "CCgQ1p8HGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CFkQ7uAIGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { @@ -5778,7 +8671,7 @@ "text": { "runs": [ { - "text": "Black Mamba" + "text": "Tooth & Claw Podcast" } ] } @@ -5790,7 +8683,7 @@ "text": { "runs": [ { - "text": "Playlist" + "text": "Podcast" }, { "text": " • " @@ -5803,17 +8696,11 @@ "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" } }, - "browseId": "UCwFT0vvkbtbohtzVbwx7WjQ" + "browseId": "UCQa7Fx0iviBTecqv7GJ7lQg" }, - "clickTrackingParams": "CBkQ1p8HGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CFIQ7uAIGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" }, - "text": "Toshihiko KOMINAMI" - }, - { - "text": " • " - }, - { - "text": "6 songs" + "text": "Tooth & Claw" } ] } @@ -5829,143 +8716,13 @@ } }, "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MUSIC_SHUFFLE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CCUQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "PLIL9Q2jz6euDEJZKHd4QaG4iic944_vKY" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CCUQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CCQQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLPLIL9Q2jz6euDEJZKHd4QaG4iic944_vKY" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CCQQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CCIQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Playlist will play next" - } - ] - }, - "trackingParams": "CCMQyscDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - } - }, - "clickTrackingParams": "CCIQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "PLIL9Q2jz6euDEJZKHd4QaG4iic944_vKY" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CCIQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CCAQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Playlist added to queue" - } - ] - }, - "trackingParams": "CCEQyscDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - } - }, - "clickTrackingParams": "CCAQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "PLIL9Q2jz6euDEJZKHd4QaG4iic944_vKY" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CCAQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, { "toggleMenuServiceItemRenderer": { "defaultIcon": { "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CB4QhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CFUQhP8FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -5973,7 +8730,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CB8Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CFYQ8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", "signInEndpoint": { "hack": true } @@ -5986,13 +8743,13 @@ } ] }, - "trackingParams": "CB8Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CFYQ8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -6010,88 +8767,30 @@ "defaultText": { "runs": [ { - "text": "Add playlist to library" + "text": "Save to library" } ] }, "toggledIcon": { - "iconType": "LIBRARY_REMOVE" + "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CB4QhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CFUQhP8FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "PLIL9Q2jz6euDEJZKHd4QaG4iic944_vKY" + "playlistId": "PL4OEJAvKcBHAe32md9b1c9kEUNi6Ifbqu" } } }, "toggledText": { "runs": [ { - "text": "Remove playlist from library" + "text": "Remove from library" } ] }, - "trackingParams": "CB4QhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CBwQw5QGGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CB0Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CB0Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - "content": { - "runs": [ - { - "text": "Make playlists and share them after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Save this for later" - } - ] - } - } - } - } - }, - "text": { - "runs": [ - { - "text": "Add to playlist" - } - ] - }, - "trackingParams": "CBwQw5QGGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CFUQhP8FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { @@ -6100,9 +8799,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CBsQkfsFGAYiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CFQQkfsFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=", "shareEntityEndpoint": { - "serializedShareEntity": "EiJQTElMOVEyano2ZXVERUpaS0hkNFFhRzRpaWM5NDRfdktZ", + "serializedShareEntity": "EiJQTDRPRUpBdktjQkhBZTMybWQ5YjFjOWtFVU5pNklmYnF1", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -6113,23 +8812,23 @@ } ] }, - "trackingParams": "CBsQkfsFGAYiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CFQQkfsFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" } } ], - "trackingParams": "CBoQpzsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CFMQpzsiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, "navigationEndpoint": { "browseEndpoint": { "browseEndpointContextSupportedConfigs": { "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" } }, - "browseId": "VLPLIL9Q2jz6euDEJZKHd4QaG4iic944_vKY" + "browseId": "MPSPPL4OEJAvKcBHAe32md9b1c9kEUNi6Ifbqu" }, - "clickTrackingParams": "CBkQ1p8HGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CFIQ7uAIGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" }, "overlay": { "musicItemThumbnailOverlayRenderer": { @@ -6145,12 +8844,12 @@ "musicPlayButtonRenderer": { "accessibilityPauseData": { "accessibilityData": { - "label": "Pause Black Mamba" + "label": "Pause Tooth & Claw Podcast" } }, "accessibilityPlayData": { "accessibilityData": { - "label": "Play Black Mamba" + "label": "Play Tooth & Claw Podcast" } }, "activeBackgroundColor": 0, @@ -6159,7 +8858,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -6167,17 +8866,16 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CCYQyN4CIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CFcQyN4CIhMI18nAxNnLiQMVtd9CBR1x0wF1", "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "PLIL9Q2jz6euDEJZKHd4QaG4iic944_vKY" + "playlistId": "PL4OEJAvKcBHAe32md9b1c9kEUNi6Ifbqu" } }, "playingIcon": { "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CCYQyN4CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CFcQyN4CIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -6189,28 +8887,23 @@ "thumbnail": { "thumbnails": [ { - "height": 192, - "url": "https://yt3.ggpht.com/jsvBK6isPIQ0ERSc1xV6PoaYxbYZqCzqr90lHZNEfUcQL2lP0oNzrdimX8KIBchE6X8myc58zwyS=s192", - "width": 192 + "height": 270, + "url": "https://i.ytimg.com/vi/s7sLjdWb-D4/hqdefault.jpg?sqp=-oaymwExCI4CEI4CIAQqCggAEOADGC0guwJIWvKriqkDFZoCEgg0EDgYFyABLQAAoEE1zcxMPw&rs=AMzJL3m2chIFdDJTYKB7dW_xtWdZcsZg3A", + "width": 270 }, { - "height": 576, - "url": "https://yt3.ggpht.com/jsvBK6isPIQ0ERSc1xV6PoaYxbYZqCzqr90lHZNEfUcQL2lP0oNzrdimX8KIBchE6X8myc58zwyS=s576", - "width": 576 - }, - { - "height": 1200, - "url": "https://yt3.ggpht.com/jsvBK6isPIQ0ERSc1xV6PoaYxbYZqCzqr90lHZNEfUcQL2lP0oNzrdimX8KIBchE6X8myc58zwyS=s1200", - "width": 1200 + "height": 720, + "url": "https://i.ytimg.com/vi/s7sLjdWb-D4/hq720.jpg?sqp=-oaymwElCNAFENAFIAZIWvKriqkDFZoCEgg0EDgYFyABLQAAoEE1zcxMPw&rs=AMzJL3klUEptMBmqrEkpdCBn4cnZ_dnaXw", + "width": 720 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CCcQhL8CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CFgQhL8CIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, - "trackingParams": "CBkQ1p8HGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CFIQ7uAIGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { @@ -6223,7 +8916,7 @@ "text": { "runs": [ { - "text": "Black Mamba" + "text": "You Should Know Podcast" } ] } @@ -6235,7 +8928,7 @@ "text": { "runs": [ { - "text": "Playlist" + "text": "Podcast" }, { "text": " • " @@ -6248,17 +8941,11 @@ "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" } }, - "browseId": "UCEdZAdnnKqbaHOlv8nM6OtA" + "browseId": "UCmMsCFzAufSYef6tA8h1hzQ" }, - "clickTrackingParams": "CAoQ1p8HGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CEsQ7uAIGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" }, - "text": "aespa" - }, - { - "text": " • " - }, - { - "text": "39 songs" + "text": "You Should Know Podcast" } ] } @@ -6274,143 +8961,13 @@ } }, "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MUSIC_SHUFFLE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CBYQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "PLinm7-cvTdN7RqadpfNrncUGqkdyKNpn6" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CBYQmvMFGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CBUQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLPLinm7-cvTdN7RqadpfNrncUGqkdyKNpn6" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CBUQm_MFGAEiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CBMQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Playlist will play next" - } - ] - }, - "trackingParams": "CBQQyscDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - } - }, - "clickTrackingParams": "CBMQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "PLinm7-cvTdN7RqadpfNrncUGqkdyKNpn6" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CBMQvu4FGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CBEQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Playlist added to queue" - } - ] - }, - "trackingParams": "CBIQyscDIhMIgLmhxpGJ-wIVquwRCB3gsgKx" - } - } - }, - "clickTrackingParams": "CBEQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "PLinm7-cvTdN7RqadpfNrncUGqkdyKNpn6" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CBEQ--8FGAMiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, { "toggleMenuServiceItemRenderer": { "defaultIcon": { "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CA8QhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CE4QhP8FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -6418,7 +8975,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CBAQ8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CE8Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", "signInEndpoint": { "hack": true } @@ -6431,13 +8988,13 @@ } ] }, - "trackingParams": "CBAQ8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CE8Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -6455,88 +9012,30 @@ "defaultText": { "runs": [ { - "text": "Add playlist to library" + "text": "Save to library" } ] }, "toggledIcon": { - "iconType": "LIBRARY_REMOVE" + "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CA8QhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CE4QhP8FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "PLinm7-cvTdN7RqadpfNrncUGqkdyKNpn6" + "playlistId": "PLQ0daRB_QJ_ZkIhLnp_nPeURDM4vQM5yg" } } }, "toggledText": { "runs": [ { - "text": "Remove playlist from library" + "text": "Remove from library" } ] }, - "trackingParams": "CA8QhP8FGAQiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CA0Qw5QGGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CA4Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CA4Q8FsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" - } - }, - "content": { - "runs": [ - { - "text": "Make playlists and share them after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Save this for later" - } - ] - } - } - } - } - }, - "text": { - "runs": [ - { - "text": "Add to playlist" - } - ] - }, - "trackingParams": "CA0Qw5QGGAUiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CE4QhP8FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, { @@ -6545,9 +9044,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CAwQkfsFGAYiEwiAuaHGkYn7AhWq7BEIHeCyArE=", + "clickTrackingParams": "CE0QkfsFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=", "shareEntityEndpoint": { - "serializedShareEntity": "EiJQTGlubTctY3ZUZE43UnFhZHBmTnJuY1VHcWtkeUtOcG42", + "serializedShareEntity": "EiJQTFEwZGFSQl9RSl9aa0loTG5wX25QZVVSRE00dlFNNXln", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -6558,23 +9057,23 @@ } ] }, - "trackingParams": "CAwQkfsFGAYiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CE0QkfsFGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" } } ], - "trackingParams": "CAsQpzsiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CEwQpzsiEwjXycDE2cuJAxW130IFHXHTAXU=" } }, "navigationEndpoint": { "browseEndpoint": { "browseEndpointContextSupportedConfigs": { "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" } }, - "browseId": "VLPLinm7-cvTdN7RqadpfNrncUGqkdyKNpn6" + "browseId": "MPSPPLQ0daRB_QJ_ZkIhLnp_nPeURDM4vQM5yg" }, - "clickTrackingParams": "CAoQ1p8HGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "clickTrackingParams": "CEsQ7uAIGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" }, "overlay": { "musicItemThumbnailOverlayRenderer": { @@ -6590,12 +9089,12 @@ "musicPlayButtonRenderer": { "accessibilityPauseData": { "accessibilityData": { - "label": "Pause Black Mamba" + "label": "Pause You Should Know Podcast" } }, "accessibilityPlayData": { "accessibilityData": { - "label": "Play Black Mamba" + "label": "Play You Should Know Podcast" } }, "activeBackgroundColor": 0, @@ -6604,7 +9103,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -6612,17 +9111,16 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CBcQyN4CIhMIgLmhxpGJ-wIVquwRCB3gsgKx", + "clickTrackingParams": "CFAQyN4CIhMI18nAxNnLiQMVtd9CBR1x0wF1", "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "PLinm7-cvTdN7RqadpfNrncUGqkdyKNpn6" + "playlistId": "PLQ0daRB_QJ_ZkIhLnp_nPeURDM4vQM5yg" } }, "playingIcon": { "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CBcQyN4CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CFAQyN4CIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -6634,28 +9132,33 @@ "thumbnail": { "thumbnails": [ { - "height": 192, - "url": "https://yt3.ggpht.com/hj6EywHSUD3UEnRQPHaEjHPC1VRi9UcsrkW8zGiOaXhRGlyNikLw6Iv0VnHTSuo2MlVBiQaskqo=s192", - "width": 192 + "height": 60, + "url": "https://yt3.googleusercontent.com/n4-LrAD8Piik4s3N4OKu3gmotbTnjlJ30twT8IrUVMoNvSHBrCiFppALvovh52qVhvWifoR7jA=w60-c-h60-k-c0x00ffffff-no-l90-rj", + "width": 60 }, { - "height": 576, - "url": "https://yt3.ggpht.com/hj6EywHSUD3UEnRQPHaEjHPC1VRi9UcsrkW8zGiOaXhRGlyNikLw6Iv0VnHTSuo2MlVBiQaskqo=s576", - "width": 576 + "height": 120, + "url": "https://yt3.googleusercontent.com/n4-LrAD8Piik4s3N4OKu3gmotbTnjlJ30twT8IrUVMoNvSHBrCiFppALvovh52qVhvWifoR7jA=w120-c-h120-k-c0x00ffffff-no-l90-rj", + "width": 120 }, { - "height": 1200, - "url": "https://yt3.ggpht.com/hj6EywHSUD3UEnRQPHaEjHPC1VRi9UcsrkW8zGiOaXhRGlyNikLw6Iv0VnHTSuo2MlVBiQaskqo=s1200", - "width": 1200 + "height": 226, + "url": "https://yt3.googleusercontent.com/n4-LrAD8Piik4s3N4OKu3gmotbTnjlJ30twT8IrUVMoNvSHBrCiFppALvovh52qVhvWifoR7jA=w226-c-h226-k-c0x00ffffff-no-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://yt3.googleusercontent.com/n4-LrAD8Piik4s3N4OKu3gmotbTnjlJ30twT8IrUVMoNvSHBrCiFppALvovh52qVhvWifoR7jA=w544-c-h544-k-c0x00ffffff-no-l90-rj", + "width": 544 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CBgQhL8CIhMIgLmhxpGJ-wIVquwRCB3gsgKx" + "trackingParams": "CFEQhL8CIhMI18nAxNnLiQMVtd9CBR1x0wF1" } }, - "trackingParams": "CAoQ1p8HGAIiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CEsQ7uAIGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" } } ], @@ -6667,11 +9170,1835 @@ "title": { "runs": [ { - "text": "Community playlists" + "text": "Podcasts" } ] }, - "trackingParams": "CAkQ-V4YBiITCIC5ocaRifsCFarsEQgd4LICsQ==" + "trackingParams": "CEoQ-V4YByITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + { + "musicShelfRenderer": { + "bottomEndpoint": { + "clickTrackingParams": "CBkQ-V4YCCITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "searchEndpoint": { + "params": "EgWKAQJIAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", + "query": "black mamba" + } + }, + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_NON_MUSIC_AUDIO_TRACK_PAGE" + } + }, + "browseId": "MPEDxd-9D3GzUpo" + }, + "clickTrackingParams": "CDoQ7eAIGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "text": "MAMBA MENTALITY - Kobe Bryant Motivational Speech" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "accessibility": { + "accessibilityData": { + "label": "Episode • Nov 4, 2022 • Discipline Motivation - Best Motivational Speeches By Motiversity" + } + }, + "runs": [ + { + "text": "Episode" + }, + { + "text": " • " + }, + { + "text": "Nov 4, 2022" + }, + { + "text": " • " + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + }, + "browseId": "MPSPPLr5CENbugJAiJahVVquKU7yrG1Ax6UuSt" + }, + "clickTrackingParams": "CDoQ7eAIGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "text": "Discipline Motivation - Best Motivational Speeches By Motiversity" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEYQvu4FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode will play next" + } + ] + }, + "trackingParams": "CEcQyscDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + }, + "clickTrackingParams": "CEYQvu4FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CEYQvu4FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", + "watchEndpoint": { + "videoId": "xd-9D3GzUpo" + } + }, + "videoId": "xd-9D3GzUpo" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CEYQvu4FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEQQ--8FGAEiEwjXycDE2cuJAxW130IFHXHTAXU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode added to queue" + } + ] + }, + "trackingParams": "CEUQyscDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + }, + "clickTrackingParams": "CEQQ--8FGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CEQQ--8FGAEiEwjXycDE2cuJAxW130IFHXHTAXU=", + "watchEndpoint": { + "videoId": "xd-9D3GzUpo" + } + }, + "videoId": "xd-9D3GzUpo" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CEQQ--8FGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CEMQ0aoFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CEMQ0aoFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=", + "getDownloadActionCommand": { + "params": "CAI%3D", + "videoId": "xd-9D3GzUpo" + } + }, + "videoId": "xd-9D3GzUpo" + } + }, + "trackingParams": "CEMQ0aoFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEEQw5QGGAMiEwjXycDE2cuJAxW130IFHXHTAXU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CEIQ8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CEIQ8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CEEQw5QGGAMiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "BROADCAST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + }, + "browseId": "MPSPPLr5CENbugJAiJahVVquKU7yrG1Ax6UuSt" + }, + "clickTrackingParams": "CEAQgqIJGAQiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "text": { + "runs": [ + { + "text": "Go to podcast" + } + ] + }, + "trackingParams": "CEAQgqIJGAQiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CD8QkfsFGAUiEwjXycDE2cuJAxW130IFHXHTAXU=", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgt4ZC05RDNHelVwbw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CD8QkfsFGAUiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "dislikeNavigationEndpoint": { + "clickTrackingParams": "CDwQpUEYBiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CD4Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CD4Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "content": { + "runs": [ + { + "text": "Improve your recommendations after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Not a fan?" + } + ] + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "CDwQpUEYBiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CD0Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CD0Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + } + } + } + } + }, + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "target": { + "videoId": "xd-9D3GzUpo" + }, + "trackingParams": "CDwQpUEYBiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + ], + "trackingParams": "CDsQpzsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause MAMBA MENTALITY - Kobe Bryant Motivational Speech - Motiversity" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play MAMBA MENTALITY - Kobe Bryant Motivational Speech - Motiversity" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CEgQyN4CIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "params": "8gEDmAEI", + "videoId": "xd-9D3GzUpo", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_PODCAST_EPISODE" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CEgQyN4CIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "xd-9D3GzUpo" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/xd-9D3GzUpo/hqdefault.jpg?sqp=-oaymwEWCOADEI4CIAQqCggAEOADGC0guwJIWg&rs=AMzJL3k3TxrniLSRkQR1LMtpKFsrd-x-Vg", + "width": 480 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CEkQhL8CIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "trackingParams": "CDoQ7eAIGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_NON_MUSIC_AUDIO_TRACK_PAGE" + } + }, + "browseId": "MPEDGE0UAdxPTc0" + }, + "clickTrackingParams": "CCoQ7eAIGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "text": "THE MAMBA MENTALITY - Kobe Bryant Motivational Speech Compilation" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "accessibility": { + "accessibilityData": { + "label": "Episode • Feb 9 • Motivation Daily by Motiversity" + } + }, + "runs": [ + { + "text": "Episode" + }, + { + "text": " • " + }, + { + "text": "Feb 9" + }, + { + "text": " • " + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + }, + "browseId": "MPSPPLr5CENbugJAhgsiKKHGwxOO7rVRKKOeLv" + }, + "clickTrackingParams": "CCoQ7eAIGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "text": "Motivation Daily by Motiversity" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDYQvu4FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode will play next" + } + ] + }, + "trackingParams": "CDcQyscDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + }, + "clickTrackingParams": "CDYQvu4FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CDYQvu4FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", + "watchEndpoint": { + "videoId": "GE0UAdxPTc0" + } + }, + "videoId": "GE0UAdxPTc0" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CDYQvu4FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDQQ--8FGAEiEwjXycDE2cuJAxW130IFHXHTAXU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode added to queue" + } + ] + }, + "trackingParams": "CDUQyscDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + }, + "clickTrackingParams": "CDQQ--8FGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CDQQ--8FGAEiEwjXycDE2cuJAxW130IFHXHTAXU=", + "watchEndpoint": { + "videoId": "GE0UAdxPTc0" + } + }, + "videoId": "GE0UAdxPTc0" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CDQQ--8FGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CDMQ0aoFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CDMQ0aoFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=", + "getDownloadActionCommand": { + "params": "CAI%3D", + "videoId": "GE0UAdxPTc0" + } + }, + "videoId": "GE0UAdxPTc0" + } + }, + "trackingParams": "CDMQ0aoFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDEQw5QGGAMiEwjXycDE2cuJAxW130IFHXHTAXU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CDIQ8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CDIQ8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CDEQw5QGGAMiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "BROADCAST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + }, + "browseId": "MPSPPLr5CENbugJAhgsiKKHGwxOO7rVRKKOeLv" + }, + "clickTrackingParams": "CDAQgqIJGAQiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "text": { + "runs": [ + { + "text": "Go to podcast" + } + ] + }, + "trackingParams": "CDAQgqIJGAQiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CC8QkfsFGAUiEwjXycDE2cuJAxW130IFHXHTAXU=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtHRTBVQWR4UFRjMA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CC8QkfsFGAUiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "dislikeNavigationEndpoint": { + "clickTrackingParams": "CCwQpUEYBiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CC4Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CC4Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "content": { + "runs": [ + { + "text": "Improve your recommendations after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Not a fan?" + } + ] + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "CCwQpUEYBiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CC0Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CC0Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + } + } + } + } + }, + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "target": { + "videoId": "GE0UAdxPTc0" + }, + "trackingParams": "CCwQpUEYBiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + ], + "trackingParams": "CCsQpzsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause THE MAMBA MENTALITY - Kobe Bryant Motivational Speech Compilation - Motiversity" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play THE MAMBA MENTALITY - Kobe Bryant Motivational Speech Compilation - Motiversity" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CDgQyN4CIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "params": "8gEDmAEI", + "videoId": "GE0UAdxPTc0", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_PODCAST_EPISODE" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CDgQyN4CIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "GE0UAdxPTc0" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/GE0UAdxPTc0/hqdefault.jpg?sqp=-oaymwEWCOADEI4CIAQqCggAEOADGC0guwJIWg&rs=AMzJL3mI3Lbo29pKfU9Qpv3lLY04Fi0yLg", + "width": 480 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CDkQhL8CIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "trackingParams": "CCoQ7eAIGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_NON_MUSIC_AUDIO_TRACK_PAGE" + } + }, + "browseId": "MPED4gi9y3sTrXE" + }, + "clickTrackingParams": "CBoQ7eAIGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "text": "Mamba Mentality - Kobe Bryant (Motivational Video)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "accessibility": { + "accessibilityData": { + "label": "Episode • Aug 1, 2019 • Powerful Motivational Speech (Chispa Motivation)" + } + }, + "runs": [ + { + "text": "Episode" + }, + { + "text": " • " + }, + { + "text": "Aug 1, 2019" + }, + { + "text": " • " + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + }, + "browseId": "MPSPPLG0bkYv91fw2sWyPOMsbmwaVecg8xFW75" + }, + "clickTrackingParams": "CBoQ7eAIGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "text": "Powerful Motivational Speech (Chispa Motivation)" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCYQvu4FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode will play next" + } + ] + }, + "trackingParams": "CCcQyscDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + }, + "clickTrackingParams": "CCYQvu4FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CCYQvu4FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", + "watchEndpoint": { + "videoId": "4gi9y3sTrXE" + } + }, + "videoId": "4gi9y3sTrXE" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CCYQvu4FGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCQQ--8FGAEiEwjXycDE2cuJAxW130IFHXHTAXU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode added to queue" + } + ] + }, + "trackingParams": "CCUQyscDIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + } + }, + "clickTrackingParams": "CCQQ--8FGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CCQQ--8FGAEiEwjXycDE2cuJAxW130IFHXHTAXU=", + "watchEndpoint": { + "videoId": "4gi9y3sTrXE" + } + }, + "videoId": "4gi9y3sTrXE" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCQQ--8FGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CCMQ0aoFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CCMQ0aoFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=", + "getDownloadActionCommand": { + "params": "CAI%3D", + "videoId": "4gi9y3sTrXE" + } + }, + "videoId": "4gi9y3sTrXE" + } + }, + "trackingParams": "CCMQ0aoFGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCEQw5QGGAMiEwjXycDE2cuJAxW130IFHXHTAXU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CCIQ8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CCIQ8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + } + } + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CCEQw5QGGAMiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "BROADCAST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + }, + "browseId": "MPSPPLG0bkYv91fw2sWyPOMsbmwaVecg8xFW75" + }, + "clickTrackingParams": "CCAQgqIJGAQiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "text": { + "runs": [ + { + "text": "Go to podcast" + } + ] + }, + "trackingParams": "CCAQgqIJGAQiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CB8QkfsFGAUiEwjXycDE2cuJAxW130IFHXHTAXU=", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgs0Z2k5eTNzVHJYRQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CB8QkfsFGAUiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "dislikeNavigationEndpoint": { + "clickTrackingParams": "CBwQpUEYBiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CB4Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CB4Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "content": { + "runs": [ + { + "text": "Improve your recommendations after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Not a fan?" + } + ] + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "CBwQpUEYBiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CB0Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CB0Q8FsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + } + } + } + } + }, + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "target": { + "videoId": "4gi9y3sTrXE" + }, + "trackingParams": "CBwQpUEYBiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + } + ], + "trackingParams": "CBsQpzsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Mamba Mentality - Kobe Bryant (Motivational Video) - Chispa Motivation" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Mamba Mentality - Kobe Bryant (Motivational Video) - Chispa Motivation" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CCgQyN4CIhMI18nAxNnLiQMVtd9CBR1x0wF1", + "watchEndpoint": { + "params": "8gEDmAEI", + "videoId": "4gi9y3sTrXE", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_PODCAST_EPISODE" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CCgQyN4CIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "4gi9y3sTrXE" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/4gi9y3sTrXE/hqdefault.jpg?sqp=-oaymwEWCOADEI4CIAQqCggAEOADGC0guwJIWg&rs=AMzJL3mi8Id0rBphHeAUx35-u2iDbL2liQ", + "width": 480 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CCkQhL8CIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "trackingParams": "CBoQ7eAIGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + } + ], + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + }, + "title": { + "runs": [ + { + "text": "Episodes" + } + ] + }, + "trackingParams": "CBkQ-V4YCCITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" + } + }, + { + "musicShelfRenderer": { + "bottomEndpoint": { + "clickTrackingParams": "CAwQ-V4YCSITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "searchEndpoint": { + "params": "EgWKAQJYAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", + "query": "black mamba" + } + }, + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Black Mamba" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Profile" + }, + { + "text": " • " + }, + { + "text": "@blackmambagyn" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBcQkfsFGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ09lVEJlUXdoT1N2TmNhWmh4TTFQVWc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CBcQkfsFGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + } + ], + "trackingParams": "CBYQpzsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + }, + "browseId": "UCOeTBeQwhOSvNcaZhxM1PUg" + }, + "clickTrackingParams": "CBUQgawKGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://yt3.googleusercontent.com/WR8-SnEMVJ-FRQxo0M_nsOO5ceDql9vWSZ8Os4pyrPd6gLE_cLm3K68F6Ozh38gKoYke9FSL1g=w60-c-h60-k-c0x00ffffff-no-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://yt3.googleusercontent.com/WR8-SnEMVJ-FRQxo0M_nsOO5ceDql9vWSZ8Os4pyrPd6gLE_cLm3K68F6Ozh38gKoYke9FSL1g=w120-c-h120-k-c0x00ffffff-no-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CBgQhL8CIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "trackingParams": "CBUQgawKGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "BLACK MAMBA" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Profile" + }, + { + "text": " • " + }, + { + "text": "@BLACKMAMBA-lv4xw" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBMQkfsFGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ3B4aWVzUVVQQmIxSC1yQ05SOXZVLXc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CBMQkfsFGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + } + ], + "trackingParams": "CBIQpzsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + }, + "browseId": "UCpxiesQUPBb1H-rCNR9vU-w" + }, + "clickTrackingParams": "CBEQgawKGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://yt3.googleusercontent.com/TunC2xLBq7LNTJHQYyRKFqyUp6QNUl0ZNDo3axPBiDIWMDAsaOvHPi6cHqzdONhLXcFOPCU2FA=w60-c-h60-k-c0x00ffffff-no-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://yt3.googleusercontent.com/TunC2xLBq7LNTJHQYyRKFqyUp6QNUl0ZNDo3axPBiDIWMDAsaOvHPi6cHqzdONhLXcFOPCU2FA=w120-c-h120-k-c0x00ffffff-no-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CBQQhL8CIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "trackingParams": "CBEQgawKGAEiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Black Mamba" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Profile" + }, + { + "text": " • " + }, + { + "text": "@blackmamba1294" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CA8QkfsFGAAiEwjXycDE2cuJAxW130IFHXHTAXU=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQzA0LU9QNUs5Z1FfMHgzOWRFUlVCUXc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CA8QkfsFGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + } + ], + "trackingParams": "CA4QpzsiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + }, + "browseId": "UC04-OP5K9gQ_0x39dERUBQw" + }, + "clickTrackingParams": "CA0QgawKGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_n4zT7h4GQ1HWesFb706jhqzxvNRZlV3oAmF4ug-OU=w60-c-h60-k-c0x00ffffff-no-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_n4zT7h4GQ1HWesFb706jhqzxvNRZlV3oAmF4ug-OU=w120-c-h120-k-c0x00ffffff-no-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CBAQhL8CIhMI18nAxNnLiQMVtd9CBR1x0wF1" + } + }, + "trackingParams": "CA0QgawKGAIiEwjXycDE2cuJAxW130IFHXHTAXU=" + } + } + ], + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + }, + "title": { + "runs": [ + { + "text": "Profiles" + } + ] + }, + "trackingParams": "CAwQ-V4YCSITCNfJwMTZy4kDFbXfQgUdcdMBdQ==" } } ], @@ -6687,9 +11014,9 @@ }, "isSelected": false, "navigationEndpoint": { - "clickTrackingParams": "CAgQ_V0YACITCIC5ocaRifsCFarsEQgd4LICsQ==", + "clickTrackingParams": "CAsQ_V0YACITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "searchEndpoint": { - "params": "EgWKAQIIAWoKEAMQBBAJEAUQCg%3D%3D", + "params": "EgWKAQIIAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", "query": "black mamba" } }, @@ -6703,7 +11030,7 @@ } ] }, - "trackingParams": "CAgQ_V0YACITCIC5ocaRifsCFarsEQgd4LICsQ==", + "trackingParams": "CAsQ_V0YACITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "uniqueId": "Songs" } }, @@ -6716,9 +11043,9 @@ }, "isSelected": false, "navigationEndpoint": { - "clickTrackingParams": "CAcQ_V0YASITCIC5ocaRifsCFarsEQgd4LICsQ==", + "clickTrackingParams": "CAoQ_V0YASITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "searchEndpoint": { - "params": "EgWKAQIQAWoKEAMQBBAJEAUQCg%3D%3D", + "params": "EgWKAQIQAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", "query": "black mamba" } }, @@ -6732,7 +11059,7 @@ } ] }, - "trackingParams": "CAcQ_V0YASITCIC5ocaRifsCFarsEQgd4LICsQ==", + "trackingParams": "CAoQ_V0YASITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "uniqueId": "Videos" } }, @@ -6745,9 +11072,9 @@ }, "isSelected": false, "navigationEndpoint": { - "clickTrackingParams": "CAYQ_V0YAiITCIC5ocaRifsCFarsEQgd4LICsQ==", + "clickTrackingParams": "CAkQ_V0YAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "searchEndpoint": { - "params": "EgWKAQIYAWoKEAMQBBAJEAUQCg%3D%3D", + "params": "EgWKAQIYAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", "query": "black mamba" } }, @@ -6761,39 +11088,10 @@ } ] }, - "trackingParams": "CAYQ_V0YAiITCIC5ocaRifsCFarsEQgd4LICsQ==", + "trackingParams": "CAkQ_V0YAiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "uniqueId": "Albums" } }, - { - "chipCloudChipRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Show artist results" - } - }, - "isSelected": false, - "navigationEndpoint": { - "clickTrackingParams": "CAUQ_V0YAyITCIC5ocaRifsCFarsEQgd4LICsQ==", - "searchEndpoint": { - "params": "EgWKAQIgAWoKEAMQBBAJEAUQCg%3D%3D", - "query": "black mamba" - } - }, - "style": { - "styleType": "STYLE_DEFAULT" - }, - "text": { - "runs": [ - { - "text": "Artists" - } - ] - }, - "trackingParams": "CAUQ_V0YAyITCIC5ocaRifsCFarsEQgd4LICsQ==", - "uniqueId": "Artists" - } - }, { "chipCloudChipRenderer": { "accessibilityData": { @@ -6803,9 +11101,9 @@ }, "isSelected": false, "navigationEndpoint": { - "clickTrackingParams": "CAQQ_V0YBCITCIC5ocaRifsCFarsEQgd4LICsQ==", + "clickTrackingParams": "CAgQ_V0YAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "searchEndpoint": { - "params": "EgeKAQQoAEABagoQAxAEEAkQBRAK", + "params": "EgeKAQQoAEABahAQAxAEEAkQChAFEBEQEBAV", "query": "black mamba" } }, @@ -6819,23 +11117,139 @@ } ] }, - "trackingParams": "CAQQ_V0YBCITCIC5ocaRifsCFarsEQgd4LICsQ==", + "trackingParams": "CAgQ_V0YAyITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", "uniqueId": "Community playlists" } + }, + { + "chipCloudChipRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Show artist results" + } + }, + "isSelected": false, + "navigationEndpoint": { + "clickTrackingParams": "CAcQ_V0YBCITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "searchEndpoint": { + "params": "EgWKAQIgAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", + "query": "black mamba" + } + }, + "style": { + "styleType": "STYLE_DEFAULT" + }, + "text": { + "runs": [ + { + "text": "Artists" + } + ] + }, + "trackingParams": "CAcQ_V0YBCITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "uniqueId": "Artists" + } + }, + { + "chipCloudChipRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Show podcast results" + } + }, + "isSelected": false, + "navigationEndpoint": { + "clickTrackingParams": "CAYQ_V0YBSITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "searchEndpoint": { + "params": "EgWKAQJQAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", + "query": "black mamba" + } + }, + "style": { + "styleType": "STYLE_DEFAULT" + }, + "text": { + "runs": [ + { + "text": "Podcasts" + } + ] + }, + "trackingParams": "CAYQ_V0YBSITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "uniqueId": "Podcasts" + } + }, + { + "chipCloudChipRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Show podcast episode results" + } + }, + "isSelected": false, + "navigationEndpoint": { + "clickTrackingParams": "CAUQ_V0YBiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "searchEndpoint": { + "params": "EgWKAQJIAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", + "query": "black mamba" + } + }, + "style": { + "styleType": "STYLE_DEFAULT" + }, + "text": { + "runs": [ + { + "text": "Episodes" + } + ] + }, + "trackingParams": "CAUQ_V0YBiITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "uniqueId": "Episodes" + } + }, + { + "chipCloudChipRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Show profile results" + } + }, + "isSelected": false, + "navigationEndpoint": { + "clickTrackingParams": "CAQQ_V0YByITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "searchEndpoint": { + "params": "EgWKAQJYAWoQEAMQBBAJEAoQBRAREBAQFQ%3D%3D", + "query": "black mamba" + } + }, + "style": { + "styleType": "STYLE_DEFAULT" + }, + "text": { + "runs": [ + { + "text": "Profiles" + } + ] + }, + "trackingParams": "CAQQ_V0YByITCNfJwMTZy4kDFbXfQgUdcdMBdQ==", + "uniqueId": "Profiles" + } } ], "collapsedRowCount": 1, "horizontalScrollable": true, - "trackingParams": "CAMQ_F0iEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CAMQ_F0iEwjXycDE2cuJAxW130IFHXHTAXU=" } }, - "trackingParams": "CAIQui8iEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CAIQui8iEwjXycDE2cuJAxW130IFHXHTAXU=" } }, "selected": true, "tabIdentifier": "music_search_catalog", - "title": "yt music", - "trackingParams": "CAEQ8JMBGAAiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "title": "YT Music", + "trackingParams": "CAEQ8JMBGAAiEwjXycDE2cuJAxW130IFHXHTAXU=" } } ] @@ -6852,7 +11266,7 @@ }, { "key": "cver", - "value": "1.20221019.01.00" + "value": "1.20241104.01.00" }, { "key": "yt_li", @@ -6860,7 +11274,7 @@ }, { "key": "GetSearch_rid", - "value": "0x32dd8559fd979706" + "value": "0xf8400aa4f46cd5d6" } ], "service": "CSI" @@ -6873,7 +11287,7 @@ }, { "key": "e", - "value": "1714243,23804281,23882685,23885487,23918597,23934970,23940247,23946420,23966208,23983296,23998056,24001373,24002022,24002025,24004644,24007246,24034168,24036948,24077241,24080738,24120819,24135310,24140247,24161116,24162919,24164186,24169501,24181174,24185614,24187043,24187377,24191629,24197450,24199724,24200839,24211178,24217535,24219713,24241378,24248091,24248385,24255165,24255543,24255545,24256985,24260783,24262346,24263272,24263796,24265820,24267564,24267570,24268142,24274311,24278596,24279196,24279628,24283556,24286005,24286017,24287327,24287370,24287795,24288043,24290276,24290971,24292955,24299748,24390374,24390675,24391018,24391541,24392059,24392401,24392524,24393382,24396436,24398124,24398595,24398708,24398993,24399013,24400178,24400607,24401557,24402891,24406381,24406983,24407444,24407452,24590921,39322399,39322504,39322574" + "value": "23804281,23966208,24004644,24077241,24181174,24241378,24439361,24542367,24548629,24566687,51009781,51010235,51017346,51020570,51025415,51050361,51053689,51063643,51064835,51065188,51089007,51098299,51111738,51115184,51117319,51124104,51129210,51133103,51134507,51152050,51157411,51157841,51158514,51160545,51165467,51169118,51176511,51178982,51182850,51183910,51195231,51204329,51213773,51217504,51222382,51222973,51223962,51227037,51228350,51228849,51230241,51230478,51231814,51237842,51239093,51241028,51242448,51243940,51248255,51248734,51251836,51255676,51255680,51255743,51256074,51256084,51258066,51266454,51273608,51274583,51275782,51276557,51276565,51281227,51285717,51287196,51287500,51289938,51292055,51294322,51295132,51296439,51298019,51298021,51299710,51299724,51300532,51300699,51302492,51302680,51303667,51303670,51303789,51304155,51305839,51307502,51308045,51308060,51308710,51309313,51309485,51310323,51310742,51312688,51313149,51313767,51315041,51317749,51318845,51318873,51321892,51323366,51324668,51324941,51325576,51326282,51326641,51326932,51328144,51329227,51329505,51330021,51330194,51333739,51333878,51335366,51337186,51337350,51339127,51339163,51339747,51342093,51343369" } ], "service": "GFEEDBACK" @@ -6887,16 +11301,12 @@ { "key": "client.name", "value": "WEB_REMIX" - }, - { - "key": "client.fexp", - "value": "24400607,23946420,24390374,24248091,24287795,24002025,24407444,24398595,24255543,24263272,23940247,24283556,24399013,24162919,24007246,24287370,24036948,24077241,24004644,24392524,24396436,24392401,24185614,24287327,24135310,24398708,24211178,24262346,23998056,24263796,24299748,23934970,24407452,24260783,24187043,24406381,24391541,24241378,24267564,24164186,24398993,24391018,24288043,24187377,24199724,23983296,24140247,24255165,24286017,24402891,24217535,24274311,23885487,24120819,24290276,24034168,39322574,24401557,24393382,24161116,24001373,1714243,39322399,24292955,24255545,24256985,24406983,23882685,24191629,24248385,24278596,24265820,39322504,24390675,24290971,24197450,24286005,23918597,24268142,24590921,24279196,24219713,24002022,24279628,24392059,24267570,24169501,24080738,24400178,23966208,24200839,24181174,24398124,23804281" } ], "service": "ECATCHER" } ], - "visitorData": "CgtGRjJKcEhYczB3ZyjImfyaBg%3D%3D" + "visitorData": "CgtxTFhNVG9WbXhVcSjWnrS5BjIKCgJVUxIEEgAgNw%3D%3D" }, - "trackingParams": "CAAQvGkiEwiAuaHGkYn7AhWq7BEIHeCyArE=" + "trackingParams": "CAAQvGkiEwjXycDE2cuJAxW130IFHXHTAXU=" } diff --git a/tests/youtube.rs b/tests/youtube.rs index 99b1083..a5e9cfd 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -1902,6 +1902,7 @@ fn check_search_result(items: &[MusicItem]) { let mut has_albums = false; let mut has_artists = false; let mut has_playlists = false; + let mut has_users = false; for itm in items { match itm { @@ -1915,6 +1916,7 @@ fn check_search_result(items: &[MusicItem]) { MusicItem::Album(_) => has_albums = true, MusicItem::Artist(_) => has_artists = true, MusicItem::Playlist(_) => has_playlists = true, + MusicItem::User(_) => has_users = true, } } @@ -1923,6 +1925,7 @@ fn check_search_result(items: &[MusicItem]) { assert!(has_albums, "no albums"); assert!(has_artists, "no artists"); assert!(has_playlists, "no playlists"); + assert!(has_users, "no users"); } #[rstest] @@ -2204,6 +2207,30 @@ async fn music_search_playlists_community(rp: RustyPipe) { assert!(!playlist.from_ytm); } +#[rstest] +#[tokio::test] +async fn music_search_users(rp: RustyPipe) { + let res = rp + .query() + .music_search_users("amyprincesspink") + .await + .unwrap(); + + assert_eq!(res.corrected_query, None); + let user = res + .items + .items + .iter() + .find(|u| u.id == "UC-CeCRHc8D47hh8P_9MR5Vg") + .unwrap_or_else(|| { + panic!("could not find user, got {:#?}", &res.items.items); + }); + + assert_eq!(user.name, "amyprincesspink"); + assert_eq!(user.handle.as_deref().unwrap(), "@amyprincesspink"); + assert!(!user.avatar.is_empty(), "got no avatar"); +} + /// The YouTube Music search sometimes shows genre radio items. They should be skipped. #[rstest] #[tokio::test] From 044094a4b70f05c46a459fa1597e23f4224b7b0b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 9 Nov 2024 02:55:59 +0100 Subject: [PATCH 021/191] feat!: replace `TrackItem::is_video` attr with TrackType enum; serde lowercase AlbumType enum for consistency --- cli/src/main.rs | 17 +- src/client/music_charts.rs | 2 +- src/client/music_playlist.rs | 8 +- src/client/response/music_item.rs | 19 +- src/client/response/url_endpoint.rs | 22 +- ...tist__tests__map_music_artist_default.snap | 276 +++--- ...st__tests__map_music_artist_no_artist.snap | 8 + ...tist__tests__map_music_artist_no_cont.snap | 80 +- ...s__map_music_artist_only_more_singles.snap | 118 +-- ..._tests__map_music_artist_only_singles.snap | 28 +- ...ic_charts__tests__map_music_charts_US.snap | 128 +-- ...harts__tests__map_music_charts_global.snap | 80 +- ..._details__tests__map_music_details_mv.snap | 2 +- ...tails__tests__map_music_details_track.snap | 2 +- ...ic_details__tests__map_music_radio_mv.snap | 50 +- ...details__tests__map_music_radio_track.snap | 50 +- ...sic_details__tests__map_music_related.snap | 62 +- ...enres__tests__map_music_genre_default.snap | 171 ++++ ...c_genres__tests__map_music_genre_mood.snap | 157 ++++ ...__tests__map_music_new_albums_default.snap | 400 ++++----- ...__tests__map_music_new_videos_default.snap | 20 +- ...ests__map_music_new_videos_w_podcasts.snap | 200 ++--- ...__map_music_album_20240228_twoColumns.snap | 4 +- ...t__tests__map_music_album_description.snap | 24 +- ...st__tests__map_music_album_one_artist.snap | 40 +- ...aylist__tests__map_music_album_single.snap | 4 +- ...t__tests__map_music_album_unavailable.snap | 26 +- ...ests__map_music_album_various_artists.snap | 14 +- ...ts__map_music_playlist_20240228_album.snap | 2 +- ...ap_music_playlist_20240228_twoColumns.snap | 200 ++--- ...ylist__tests__map_music_playlist_long.snap | 200 ++--- ...st__tests__map_music_playlist_nomusic.snap | 132 +-- ...list__tests__map_music_playlist_short.snap | 174 ++-- ...earch__tests__map_music_search_albums.snap | 40 +- ...__tests__map_music_search_main_artist.snap | 28 +- ..._tests__map_music_search_main_default.snap | 38 +- ...ch__tests__map_music_search_main_live.snap | 32 +- ...h__tests__map_music_search_main_radio.snap | 24 +- ...ch__tests__map_music_search_main_typo.snap | 23 +- ..._map_music_search_playlists_community.snap | 20 + ...tests__map_music_search_playlists_ytm.snap | 20 + ...__map_music_search_suggestion_default.snap | 2 +- ...ests__map_music_search_tracks_default.snap | 40 +- ...ap_music_search_tracks_no_artist_link.snap | 14 +- ...__tests__map_music_search_tracks_typo.snap | 40 +- ...tests__map_music_search_tracks_videos.snap | 40 +- ...gination__tests__map_playlist_related.snap | 10 + ...agination__tests__map_playlist_tracks.snap | 200 ++--- ...__pagination__tests__map_radio_tracks.snap | 48 +- ..._pagination__tests__map_search_tracks.snap | 40 +- src/model/mod.rs | 32 +- testfiles/dict/album_type_samples.json | 830 +++++++++--------- testfiles/dict/dictionary.json | 794 ++++++++--------- .../youtube__music_album_audiobook.snap | 402 ++++----- .../youtube__music_album_audiobook_intl.snap | 402 ++++----- tests/snapshots/youtube__music_album_ep.snap | 12 +- .../youtube__music_album_ep_intl.snap | 12 +- .../youtube__music_album_no_artist.snap | 30 +- .../youtube__music_album_no_artist_intl.snap | 30 +- .../youtube__music_album_no_year.snap | 4 +- .../youtube__music_album_no_year_intl.snap | 4 +- .../youtube__music_album_one_artist.snap | 32 +- .../youtube__music_album_one_artist_intl.snap | 32 +- .../snapshots/youtube__music_album_show.snap | 56 +- .../youtube__music_album_show_intl.snap | 56 +- .../youtube__music_album_single.snap | 4 +- .../youtube__music_album_single_intl.snap | 4 +- .../youtube__music_album_unavailable.snap | 26 +- ...youtube__music_album_unavailable_intl.snap | 26 +- .../youtube__music_album_various_artists.snap | 14 +- ...ube__music_album_various_artists_intl.snap | 14 +- .../youtube__music_artist_basic.snap | 40 +- .../youtube__music_artist_basic_all.snap | 28 +- .../youtube__music_artist_basic_all_intl.snap | 28 +- .../youtube__music_artist_basic_intl.snap | 40 +- .../youtube__music_artist_no_more_albums.snap | 20 +- ...ube__music_artist_no_more_albums_intl.snap | 20 +- .../youtube__music_artist_only_singles.snap | 2 +- ...utube__music_artist_only_singles_intl.snap | 2 +- .../snapshots/youtube__music_details_mv.snap | 2 +- .../youtube__music_details_track.snap | 2 +- .../youtube__music_details_track_details.snap | 2 +- tests/youtube.rs | 19 +- 83 files changed, 3455 insertions(+), 2945 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index 3eb8a32..7517568 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -16,8 +16,8 @@ use owo_colors::OwoColorize; use rustypipe::{ client::{ClientType, RustyPipe}, model::{ - richtext::ToPlaintext, traits::YtEntity, ArtistId, MusicSearchResult, TrackItem, UrlTarget, - Verification, YouTubeItem, + richtext::ToPlaintext, traits::YtEntity, ArtistId, MusicSearchResult, TrackItem, TrackType, + UrlTarget, Verification, YouTubeItem, }, param::{search_filter, ChannelVideoTab, Country, Language, StreamFilter}, report::FileReporter, @@ -700,11 +700,12 @@ async fn run() -> anyhow::Result<()> { match format { Some(format) => print_data(&details, format, pretty), None => { - if details.track.is_video { - anstream::println!("{}", "[MV]".on_green().black()); - } else { - anstream::println!("{}", "[Track]".on_green().black()); - } + let typ_str = match details.track.track_type { + TrackType::Track => "[Track]", + TrackType::Video => "[MV]", + TrackType::Episode => "[Episode]", + }; + anstream::println!("{}", typ_str.on_green().black()); anstream::print!( "{} [{}]", details.track.name.green().bold(), @@ -714,7 +715,7 @@ async fn run() -> anyhow::Result<()> { println!(); print_artists(&details.track.artists); println!(); - if !details.track.is_video { + if details.track.track_type.is_track() { anstream::println!( "{} {}", "Album:".blue(), diff --git a/src/client/music_charts.rs b/src/client/music_charts.rs index 2d21513..baeeead 100644 --- a/src/client/music_charts.rs +++ b/src/client/music_charts.rs @@ -91,7 +91,7 @@ impl MapResponse for response::MusicCharts { .and_then(|btn| btn.button_renderer.navigation_endpoint.music_page()) .map(|mp| (mp.typ, mp.id)) }) { - Some((MusicPageType::Playlist, id)) => { + Some((MusicPageType::Playlist { .. }, id)) => { // Top music videos (first shelf with associated playlist) if top_playlist_id.is_none() { mapper_top.map_response(shelf.contents); diff --git a/src/client/music_playlist.rs b/src/client/music_playlist.rs index 0edde4f..521d1e4 100644 --- a/src/client/music_playlist.rs +++ b/src/client/music_playlist.rs @@ -6,7 +6,7 @@ use crate::{ model::{ paginator::{ContinuationEndpoint, Paginator}, richtext::RichText, - AlbumId, ChannelId, MusicAlbum, MusicPlaylist, TrackItem, + AlbumId, ChannelId, MusicAlbum, MusicPlaylist, TrackItem, TrackType, }, serializer::{text::TextComponents, MapResult}, util::{self, TryRemove, DOT_SEPARATOR}, @@ -85,7 +85,7 @@ impl RustyPipeQuery { .iter() .enumerate() .filter_map(|(i, track)| { - if track.is_video { + if track.track_type.is_video() { Some((i, track.name.clone())) } else { None @@ -102,7 +102,7 @@ impl RustyPipeQuery { for (i, title) in to_replace { let found_track = playlist.tracks.items.iter().find_map(|track| { - if track.name == title && !track.is_video { + if track.name == title && track.track_type.is_track() { Some((track.id.clone(), track.duration)) } else { None @@ -113,7 +113,7 @@ impl RustyPipeQuery { if let Some(duration) = duration { album.tracks[i].duration = Some(duration); } - album.tracks[i].is_video = false; + album.tracks[i].track_type = TrackType::Track; } } } diff --git a/src/client/response/music_item.rs b/src/client/response/music_item.rs index ab776c8..dce3c8c 100644 --- a/src/client/response/music_item.rs +++ b/src/client/response/music_item.rs @@ -759,7 +759,7 @@ impl MusicListMapper { artist_id, album, view_count, - is_video: vtype.is_video(), + track_type: vtype.into(), track_nr, by_va, })); @@ -829,7 +829,7 @@ impl MusicListMapper { })); Ok(Some(MusicItemType::Album)) } - MusicPageType::Playlist => { + MusicPageType::Playlist { is_podcast } => { // Part 1 may be the "Playlist" label let (channel_p, tcount_p) = match subtitle_p3 { Some(_) => (subtitle_p2, subtitle_p3), @@ -855,6 +855,7 @@ impl MusicListMapper { channel, track_count, from_ytm, + is_podcast, })); Ok(Some(MusicItemType::Playlist)) } @@ -930,7 +931,7 @@ impl MusicListMapper { artists, album: None, view_count, - is_video: vtype.is_video(), + track_type: vtype.into(), track_nr: None, by_va, })); @@ -1002,7 +1003,7 @@ impl MusicListMapper { })); Ok(Some(MusicItemType::Album)) } - MusicPageType::Playlist => { + MusicPageType::Playlist { is_podcast } => { // When the playlist subtitle has only 1 part, it is a playlist from YT Music // (featured on the startpage or in genres) let from_ytm = subtitle_p2 @@ -1019,6 +1020,7 @@ impl MusicListMapper { channel, track_count: None, from_ytm, + is_podcast, })); Ok(Some(MusicItemType::Playlist)) } @@ -1093,7 +1095,7 @@ impl MusicListMapper { artists, album: None, view_count: None, - is_video: vtype.is_video(), + track_type: vtype.into(), track_nr: None, by_va, })); @@ -1130,14 +1132,14 @@ impl MusicListMapper { artists, album, view_count, - is_video: vtype.is_video(), + track_type: vtype.into(), track_nr: None, by_va, })); } Some(MusicItemType::Track) } - MusicPageType::Playlist => { + MusicPageType::Playlist { is_podcast } => { let from_ytm = subtitle_p2 .as_ref() .and_then(|p| p.0.first()) @@ -1154,6 +1156,7 @@ impl MusicListMapper { channel, track_count, from_ytm, + is_podcast, })); Some(MusicItemType::Playlist) } @@ -1359,7 +1362,7 @@ pub(crate) fn map_queue_item(item: QueueMusicItem, lang: Language) -> MapResult< artist_id, album, view_count, - is_video, + track_type: MusicVideoType::from_is_video(is_video).into(), track_nr: None, by_va, }, diff --git a/src/client/response/url_endpoint.rs b/src/client/response/url_endpoint.rs index 2c551b8..147dd31 100644 --- a/src/client/response/url_endpoint.rs +++ b/src/client/response/url_endpoint.rs @@ -1,7 +1,10 @@ use serde::Deserialize; use serde_with::{serde_as, DefaultOnError}; -use crate::{model::UrlTarget, util}; +use crate::{ + model::{TrackType, UrlTarget}, + util, +}; /// navigation/resolve_url response model #[derive(Debug, Deserialize)] @@ -179,6 +182,16 @@ impl MusicVideoType { } } +impl From for TrackType { + fn from(value: MusicVideoType) -> Self { + match value { + MusicVideoType::Video => Self::Video, + MusicVideoType::Track => Self::Track, + MusicVideoType::Episode => Self::Episode, + } + } +} + #[derive(Default, Debug, Clone, Copy, Deserialize, PartialEq, Eq)] pub(crate) enum PageType { #[serde( @@ -225,7 +238,7 @@ impl PageType { pub(crate) enum MusicPageType { Artist, Album, - Playlist, + Playlist { is_podcast: bool }, Track { vtype: MusicVideoType }, User, None, @@ -236,7 +249,8 @@ impl From for MusicPageType { match t { PageType::Artist => MusicPageType::Artist, PageType::Album => MusicPageType::Album, - PageType::Playlist | PageType::Podcast => MusicPageType::Playlist, + PageType::Playlist => MusicPageType::Playlist { is_podcast: false }, + PageType::Podcast => MusicPageType::Playlist { is_podcast: true }, PageType::Channel => MusicPageType::User, PageType::Episode => MusicPageType::Track { vtype: MusicVideoType::Episode, @@ -310,7 +324,7 @@ impl NavigationEndpoint { watch_playlist_endpoint, } => Some(MusicPage { id: watch_playlist_endpoint.playlist_id, - typ: MusicPageType::Playlist, + typ: MusicPageType::Playlist { is_podcast: false }, }), } } diff --git a/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_default.snap b/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_default.snap index 7494cb7..6cc16cc 100644 --- a/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_default.snap +++ b/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_default.snap @@ -64,7 +64,7 @@ MusicArtist( name: "÷ (Deluxe)", )), view_count: Some(5700000000), - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -96,7 +96,7 @@ MusicArtist( name: "Shape of You", )), view_count: Some(8700000000), - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -128,7 +128,7 @@ MusicArtist( name: "x (Deluxe Edition)", )), view_count: Some(3300000000), - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -160,7 +160,7 @@ MusicArtist( name: "x (Deluxe Edition)", )), view_count: Some(4500000000), - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -192,7 +192,7 @@ MusicArtist( name: "Bad Habits", )), view_count: Some(1100000000), - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -221,7 +221,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(378000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -250,7 +250,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(250000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -279,7 +279,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(372000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -308,7 +308,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(1000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -337,7 +337,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(3800000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -366,7 +366,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(6300000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -395,7 +395,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(1400000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -424,7 +424,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(3800000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -453,7 +453,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(641000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -482,7 +482,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(364000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -510,7 +510,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2024), by_va: false, ), @@ -536,7 +536,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2024), by_va: false, ), @@ -562,7 +562,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2023), by_va: false, ), @@ -588,7 +588,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2023), by_va: false, ), @@ -614,7 +614,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, ), @@ -640,7 +640,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, ), @@ -666,7 +666,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2023), by_va: false, ), @@ -692,7 +692,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, ), @@ -718,7 +718,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, ), @@ -744,7 +744,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, ), @@ -770,7 +770,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, ), @@ -796,7 +796,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, ), @@ -822,7 +822,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -848,7 +848,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -874,7 +874,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -900,7 +900,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -926,7 +926,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -952,7 +952,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2022), by_va: false, ), @@ -978,7 +978,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1004,7 +1004,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1030,7 +1030,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1056,7 +1056,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1082,7 +1082,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1108,7 +1108,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1134,7 +1134,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1160,7 +1160,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1186,7 +1186,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1212,7 +1212,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1238,7 +1238,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1264,7 +1264,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1290,7 +1290,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1316,7 +1316,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1342,7 +1342,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1368,7 +1368,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1394,7 +1394,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1420,7 +1420,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1446,7 +1446,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1472,7 +1472,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1498,7 +1498,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1524,7 +1524,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1550,7 +1550,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1576,7 +1576,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1602,7 +1602,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1628,7 +1628,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1654,7 +1654,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1680,7 +1680,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2021), by_va: false, ), @@ -1706,7 +1706,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1732,7 +1732,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1758,7 +1758,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1784,7 +1784,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1810,7 +1810,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1836,7 +1836,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1862,7 +1862,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1888,7 +1888,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1914,7 +1914,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Ep, + album_type: ep, year: Some(2021), by_va: false, ), @@ -1940,7 +1940,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1966,7 +1966,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1992,7 +1992,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -2018,7 +2018,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -2044,7 +2044,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2020), by_va: false, ), @@ -2070,7 +2070,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2020), by_va: false, ), @@ -2096,7 +2096,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2122,7 +2122,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2148,7 +2148,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2174,7 +2174,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2200,7 +2200,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2226,7 +2226,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2252,7 +2252,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2278,7 +2278,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2019), by_va: false, ), @@ -2304,7 +2304,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2330,7 +2330,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2356,7 +2356,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2382,7 +2382,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2408,7 +2408,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2434,7 +2434,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2460,7 +2460,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2486,7 +2486,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2512,7 +2512,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2538,7 +2538,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2564,7 +2564,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2590,7 +2590,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2616,7 +2616,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -2642,7 +2642,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2018), by_va: false, ), @@ -2668,7 +2668,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2018), by_va: false, ), @@ -2694,7 +2694,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2018), by_va: false, ), @@ -2720,7 +2720,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2018), by_va: false, ), @@ -2746,7 +2746,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -2772,7 +2772,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -2798,7 +2798,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -2824,7 +2824,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -2850,7 +2850,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -2876,7 +2876,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -2902,7 +2902,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2017), by_va: false, ), @@ -2928,7 +2928,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -2954,7 +2954,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -2980,7 +2980,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -3006,7 +3006,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -3032,7 +3032,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -3058,7 +3058,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -3084,7 +3084,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -3110,7 +3110,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3136,7 +3136,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -3162,7 +3162,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3188,7 +3188,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3214,7 +3214,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3240,7 +3240,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3266,7 +3266,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3292,7 +3292,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3318,7 +3318,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3344,7 +3344,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3370,7 +3370,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3396,7 +3396,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3422,7 +3422,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -3448,7 +3448,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3474,7 +3474,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -3500,7 +3500,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -3526,7 +3526,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3552,7 +3552,7 @@ MusicArtist( ), ], artist_id: None, - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -3576,6 +3576,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208", @@ -3595,6 +3596,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA", @@ -3614,6 +3616,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l1oO11DBO4FD8U7bOrqUKK5Y_PkISUMQM", @@ -3633,6 +3636,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI", @@ -3652,6 +3656,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI", @@ -3671,6 +3676,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY", @@ -3690,6 +3696,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI", @@ -3709,6 +3716,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk", @@ -3728,6 +3736,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M", @@ -3747,6 +3756,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), ], similar_artists: [ diff --git a/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_no_artist.snap b/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_no_artist.snap index 47ebd4f..3f4dca9 100644 --- a/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_no_artist.snap +++ b/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_no_artist.snap @@ -59,6 +59,7 @@ MusicArtist( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLwkM1QxaP343YqeP6g5VPGsgJdO1_SV4I", @@ -81,6 +82,7 @@ MusicArtist( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLwkM1QxaP340xbkARIPpiD1aHuzJVuZUg", @@ -103,6 +105,7 @@ MusicArtist( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLwkM1QxaP342hjju64dtqG5wKqx2hNgjr", @@ -125,6 +128,7 @@ MusicArtist( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLwkM1QxaP342v1hhoB3XLiruSQOzmdmBt", @@ -147,6 +151,7 @@ MusicArtist( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLwkM1QxaP342EBMza0AG10nB3oDD65RPY", @@ -169,6 +174,7 @@ MusicArtist( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLwkM1QxaP342nVAeBVL6_Q8gbbAD8l4wb", @@ -191,6 +197,7 @@ MusicArtist( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLwkM1QxaP3438x6ta8VJZlJSlDn43FueA", @@ -213,6 +220,7 @@ MusicArtist( )), track_count: None, from_ytm: false, + is_podcast: false, ), ], similar_artists: [], diff --git a/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_no_cont.snap b/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_no_cont.snap index 9cb877d..c921dda 100644 --- a/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_no_cont.snap +++ b/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_no_cont.snap @@ -64,7 +64,7 @@ MusicArtist( name: "÷ (Deluxe)", )), view_count: Some(5700000000), - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -96,7 +96,7 @@ MusicArtist( name: "Shape of You", )), view_count: Some(8700000000), - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -128,7 +128,7 @@ MusicArtist( name: "x (Deluxe Edition)", )), view_count: Some(3300000000), - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -160,7 +160,7 @@ MusicArtist( name: "x (Deluxe Edition)", )), view_count: Some(4500000000), - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -192,7 +192,7 @@ MusicArtist( name: "Bad Habits", )), view_count: Some(1100000000), - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -221,7 +221,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(378000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -250,7 +250,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(250000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -279,7 +279,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(372000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -308,7 +308,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(1000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -337,7 +337,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(3800000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -366,7 +366,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(6300000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -395,7 +395,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(1400000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -424,7 +424,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(3800000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -453,7 +453,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(641000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -482,7 +482,7 @@ MusicArtist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: Some(364000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -510,7 +510,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2024), by_va: false, ), @@ -536,7 +536,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2023), by_va: false, ), @@ -562,7 +562,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2023), by_va: false, ), @@ -588,7 +588,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2023), by_va: false, ), @@ -614,7 +614,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2021), by_va: false, ), @@ -640,7 +640,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2019), by_va: false, ), @@ -666,7 +666,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2017), by_va: false, ), @@ -692,7 +692,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Ep, + album_type: ep, year: Some(2014), by_va: false, ), @@ -718,7 +718,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2014), by_va: false, ), @@ -744,7 +744,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, + album_type: album, year: Some(2011), by_va: false, ), @@ -770,7 +770,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, ), @@ -796,7 +796,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, ), @@ -822,7 +822,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, ), @@ -848,7 +848,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, ), @@ -874,7 +874,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, ), @@ -900,7 +900,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, ), @@ -926,7 +926,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -952,7 +952,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -978,7 +978,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1004,7 +1004,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1028,6 +1028,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208", @@ -1047,6 +1048,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA", @@ -1066,6 +1068,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l1oO11DBO4FD8U7bOrqUKK5Y_PkISUMQM", @@ -1085,6 +1088,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI", @@ -1104,6 +1108,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI", @@ -1123,6 +1128,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY", @@ -1142,6 +1148,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI", @@ -1161,6 +1168,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk", @@ -1180,6 +1188,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M", @@ -1199,6 +1208,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), ], similar_artists: [ diff --git a/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_only_more_singles.snap b/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_only_more_singles.snap index 62e5661..2c63b24 100644 --- a/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_only_more_singles.snap +++ b/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_only_more_singles.snap @@ -64,7 +64,7 @@ MusicArtist( name: "Evolve", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -96,7 +96,7 @@ MusicArtist( name: "Mercury : Acts 1 & 2", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -140,7 +140,7 @@ MusicArtist( name: "Mercury : Acts 1 & 2", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -172,7 +172,7 @@ MusicArtist( name: "Evolve", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -204,7 +204,7 @@ MusicArtist( name: "Night Visions", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -233,7 +233,7 @@ MusicArtist( artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), album: None, view_count: Some(2100000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -262,7 +262,7 @@ MusicArtist( artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), album: None, view_count: Some(2400000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -291,7 +291,7 @@ MusicArtist( artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), album: None, view_count: Some(207000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -320,7 +320,7 @@ MusicArtist( artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), album: None, view_count: Some(324000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -349,7 +349,7 @@ MusicArtist( artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), album: None, view_count: Some(1900000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -378,7 +378,7 @@ MusicArtist( artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), album: None, view_count: Some(1000000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -407,7 +407,7 @@ MusicArtist( artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), album: None, view_count: Some(1400000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -431,7 +431,7 @@ MusicArtist( artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), album: None, view_count: Some(440000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -460,7 +460,7 @@ MusicArtist( artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), album: None, view_count: Some(557000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -489,7 +489,7 @@ MusicArtist( artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), album: None, view_count: Some(877000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -517,7 +517,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Album, + album_type: album, year: Some(2022), by_va: false, ), @@ -543,7 +543,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -569,7 +569,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Album, + album_type: album, year: Some(2022), by_va: false, ), @@ -595,7 +595,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -621,7 +621,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -647,7 +647,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -673,7 +673,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -699,7 +699,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -725,7 +725,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -751,7 +751,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -777,7 +777,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -803,7 +803,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Album, + album_type: album, year: Some(2018), by_va: false, ), @@ -829,7 +829,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2018), by_va: false, ), @@ -855,7 +855,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2018), by_va: false, ), @@ -881,7 +881,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2018), by_va: false, ), @@ -907,7 +907,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -933,7 +933,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Album, + album_type: album, year: Some(2017), by_va: false, ), @@ -959,7 +959,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -985,7 +985,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2016), by_va: false, ), @@ -1011,7 +1011,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2016), by_va: false, ), @@ -1037,7 +1037,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2015), by_va: false, ), @@ -1063,7 +1063,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2015), by_va: false, ), @@ -1089,7 +1089,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Album, + album_type: album, year: Some(2014), by_va: false, ), @@ -1115,7 +1115,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Album, + album_type: album, year: Some(2011), by_va: false, ), @@ -1141,7 +1141,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Ep, + album_type: ep, year: Some(2010), by_va: false, ), @@ -1167,7 +1167,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Ep, + album_type: ep, year: Some(2009), by_va: false, ), @@ -1193,7 +1193,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Ep, + album_type: ep, year: Some(2017), by_va: false, ), @@ -1219,7 +1219,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -1245,7 +1245,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -1271,7 +1271,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -1297,7 +1297,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -1323,7 +1323,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -1349,7 +1349,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2015), by_va: false, ), @@ -1375,7 +1375,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2015), by_va: false, ), @@ -1401,7 +1401,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2015), by_va: false, ), @@ -1427,7 +1427,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -1453,7 +1453,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -1479,7 +1479,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -1505,7 +1505,7 @@ MusicArtist( ), ], artist_id: Some("UC0aXrjVxG5pZr99v77wZdPQ"), - album_type: Single, + album_type: single, year: Some(2013), by_va: false, ), @@ -1529,6 +1529,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mIpIa-YIJFJe0EAcNbcMPgg-3qCdK9qAk", @@ -1548,6 +1549,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nbzJVrwitbeDjlcHvjM7fgF7khtUOoHgU", @@ -1567,6 +1569,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nCs5nAmZrJ41ILrSyf36UvOwTBNyx0oEI", @@ -1586,6 +1589,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nGXEmbtrmoUF9NG7m0WkxpF_qLKYR3YOU", @@ -1605,6 +1609,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mgHrXs_5F6wPwPFA47S8yrzCfjCi4AXDE", @@ -1624,6 +1629,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l7u7RCjtiI_I3m5EgnI-V9yWAgx0RNy1E", @@ -1643,6 +1649,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_k7h5535MeHE8xmgHsrZx7HOKH4lb5vAfY", @@ -1662,6 +1669,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mlCByo5eM1tLBhUdMyn2GphTXICCM_W1w", @@ -1681,6 +1689,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_ke0QH8jvXz6ynXEhn_mbCBy9m7fbnJ9NY", @@ -1700,6 +1709,7 @@ MusicArtist( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), ], similar_artists: [ diff --git a/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_only_singles.snap b/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_only_singles.snap index 9205bd6..b90c6e2 100644 --- a/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_only_singles.snap +++ b/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_only_singles.snap @@ -64,7 +64,7 @@ MusicArtist( name: "고블린 Goblin", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -96,7 +96,7 @@ MusicArtist( name: "고블린 Goblin", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -128,7 +128,7 @@ MusicArtist( name: "고블린 Goblin", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -157,7 +157,7 @@ MusicArtist( artist_id: Some("UCfwCE5VhPMGxNPFxtVv7lRw"), album: None, view_count: Some(20000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -186,7 +186,7 @@ MusicArtist( artist_id: Some("UClGBYGUZmpzUaHgeb9gOBww"), album: None, view_count: Some(211000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -215,7 +215,7 @@ MusicArtist( artist_id: Some("UCfaO3pZL5XOr8BvNZkrKeVA"), album: None, view_count: Some(10000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -244,7 +244,7 @@ MusicArtist( artist_id: Some("UCgVWicpO5Jn3VfxqgIU6cpA"), album: None, view_count: Some(15000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -273,7 +273,7 @@ MusicArtist( artist_id: Some("UCe52oeb7Xv_KaJsEzcKXJJg"), album: None, view_count: Some(1200), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -302,7 +302,7 @@ MusicArtist( artist_id: Some("UCFFvwAcyQhpeQfuAgBN1XZw"), album: None, view_count: Some(12000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -331,7 +331,7 @@ MusicArtist( artist_id: Some("UC_xEL8cbkItBH00KrGz9fbQ"), album: None, view_count: Some(7400), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -360,7 +360,7 @@ MusicArtist( artist_id: Some("UCaFqztcJss3HrXNurzQJyqQ"), album: None, view_count: Some(1400), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -389,7 +389,7 @@ MusicArtist( artist_id: Some("UCMPqKiPdiSoi8eCW5Dou1IQ"), album: None, view_count: Some(25000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -418,7 +418,7 @@ MusicArtist( artist_id: Some("UCe52oeb7Xv_KaJsEzcKXJJg"), album: None, view_count: Some(3700), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -446,7 +446,7 @@ MusicArtist( ), ], artist_id: Some("UCfwCE5VhPMGxNPFxtVv7lRw"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_charts__tests__map_music_charts_US.snap b/src/client/snapshots/rustypipe__client__music_charts__tests__map_music_charts_US.snap index 884be8b..0ce196c 100644 --- a/src/client/snapshots/rustypipe__client__music_charts__tests__map_music_charts_US.snap +++ b/src/client/snapshots/rustypipe__client__music_charts__tests__map_music_charts_US.snap @@ -33,7 +33,7 @@ MusicCharts( artist_id: Some("UCiXhCjTprNP0nuQJ9UsLWeg"), album: None, view_count: Some(56000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -62,7 +62,7 @@ MusicCharts( artist_id: Some("UCybEdRVR5u_WFoV-BLTEBiA"), album: None, view_count: Some(15000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -91,7 +91,7 @@ MusicCharts( artist_id: Some("UCiY3z8HAGD6BlSNKVn2kSvQ"), album: None, view_count: Some(521000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -120,7 +120,7 @@ MusicCharts( artist_id: Some("UCWsDFcIhY2DBi3GB5uykGXA"), album: None, view_count: Some(34000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -149,7 +149,7 @@ MusicCharts( artist_id: Some("UCiY3z8HAGD6BlSNKVn2kSvQ"), album: None, view_count: Some(559000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -178,7 +178,7 @@ MusicCharts( artist_id: Some("UCMXDyVR2tclKWhbqNforSyA"), album: None, view_count: Some(39000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -207,7 +207,7 @@ MusicCharts( artist_id: Some("UCJa2FF4TUB13Mm0GurZAqog"), album: None, view_count: Some(139000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -236,7 +236,7 @@ MusicCharts( artist_id: Some("UCKRnq8aBOCanYlffje7HyvA"), album: None, view_count: Some(311000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -265,7 +265,7 @@ MusicCharts( artist_id: Some("UCR28YDxjDE3ogQROaNdnRbQ"), album: None, view_count: Some(3800000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -294,7 +294,7 @@ MusicCharts( artist_id: Some("UCpcTrCXblq78GZrTUTLWeBw"), album: None, view_count: Some(46000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -323,7 +323,7 @@ MusicCharts( artist_id: Some("UCJa2FF4TUB13Mm0GurZAqog"), album: None, view_count: Some(73000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -356,7 +356,7 @@ MusicCharts( artist_id: Some("UCohgH17dyp4c_V7U9LoBLdA"), album: None, view_count: Some(77000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -385,7 +385,7 @@ MusicCharts( artist_id: Some("UChWPNW87QHcXAsw2mzlsYNw"), album: None, view_count: Some(2600000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -414,7 +414,7 @@ MusicCharts( artist_id: Some("UC_z9AthnCGSAk_tZf-KqoFA"), album: None, view_count: Some(17000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -451,7 +451,7 @@ MusicCharts( artist_id: Some("UCdPdi8UM25ZyvzhSJkk1uPw"), album: None, view_count: Some(8600000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -480,7 +480,7 @@ MusicCharts( artist_id: Some("UC_z9AthnCGSAk_tZf-KqoFA"), album: None, view_count: Some(15000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -509,7 +509,7 @@ MusicCharts( artist_id: Some("UCXT9NWRyDfHJq9Igm1pDQpQ"), album: None, view_count: Some(31000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -542,7 +542,7 @@ MusicCharts( artist_id: Some("UC7n3gWRN0vQzgiOKc51aZ4w"), album: None, view_count: Some(202000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -571,7 +571,7 @@ MusicCharts( artist_id: Some("UCGJdT8Qip4XObbQZ98Z1CAA"), album: None, view_count: Some(4900000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -600,7 +600,7 @@ MusicCharts( artist_id: Some("UC7n3gWRN0vQzgiOKc51aZ4w"), album: None, view_count: Some(545000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -633,7 +633,7 @@ MusicCharts( artist_id: Some("UC5IkSn-EFsUu3XANYklXc8g"), album: None, view_count: Some(20000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -666,7 +666,7 @@ MusicCharts( artist_id: Some("UC7n3gWRN0vQzgiOKc51aZ4w"), album: None, view_count: Some(36000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -699,7 +699,7 @@ MusicCharts( artist_id: Some("UCgpBsaDW2n_6ruzht3wvP0A"), album: None, view_count: Some(66000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -728,7 +728,7 @@ MusicCharts( artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"), album: None, view_count: Some(68000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -757,7 +757,7 @@ MusicCharts( artist_id: Some("UCju-DqP7JNtCnMWFXhLgPHQ"), album: None, view_count: Some(46000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -790,7 +790,7 @@ MusicCharts( artist_id: Some("UC5IkSn-EFsUu3XANYklXc8g"), album: None, view_count: Some(43000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -823,7 +823,7 @@ MusicCharts( artist_id: Some("UCoC_a7lWbj2v7rt4ujp4n2A"), album: None, view_count: Some(7200000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -852,7 +852,7 @@ MusicCharts( artist_id: Some("UCvUZUUxWhwtKLVQ9bVRjLEA"), album: None, view_count: Some(4000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -881,7 +881,7 @@ MusicCharts( artist_id: Some("UCr_zAwkma5JAyHOWfVXaouA"), album: None, view_count: Some(2900000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -914,7 +914,7 @@ MusicCharts( artist_id: Some("UC_z9AthnCGSAk_tZf-KqoFA"), album: None, view_count: Some(10000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -943,7 +943,7 @@ MusicCharts( artist_id: Some("UCBabNBocAdKiN5sz8RBjIDg"), album: None, view_count: Some(15000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -972,7 +972,7 @@ MusicCharts( artist_id: Some("UC5xaQ6_dP7EGDmGLzVGZ1Ow"), album: None, view_count: Some(16000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1001,7 +1001,7 @@ MusicCharts( artist_id: Some("UCiXhCjTprNP0nuQJ9UsLWeg"), album: None, view_count: Some(21000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1030,7 +1030,7 @@ MusicCharts( artist_id: Some("UC_VCJd8skzwcPktsMLqTz1g"), album: None, view_count: Some(35000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1067,7 +1067,7 @@ MusicCharts( artist_id: None, album: None, view_count: Some(30000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1096,7 +1096,7 @@ MusicCharts( artist_id: Some("UCq_Fb1zqNikdovyMJgRQjcw"), album: None, view_count: Some(18000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1125,7 +1125,7 @@ MusicCharts( artist_id: Some("UChWPNW87QHcXAsw2mzlsYNw"), album: None, view_count: Some(5400000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1154,7 +1154,7 @@ MusicCharts( artist_id: Some("UCiY3z8HAGD6BlSNKVn2kSvQ"), album: None, view_count: Some(312000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1183,7 +1183,7 @@ MusicCharts( artist_id: Some("UC0_1glf30IS53tFQWT8xpxw"), album: None, view_count: Some(28000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1212,7 +1212,7 @@ MusicCharts( artist_id: Some("UC_z9AthnCGSAk_tZf-KqoFA"), album: None, view_count: Some(97000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1238,7 +1238,7 @@ MusicCharts( artist_id: Some("UCGexNm_Kw4rdQjLxmpb2EKw"), album: None, view_count: Some(6000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1262,7 +1262,7 @@ MusicCharts( artist_id: Some("UCybEdRVR5u_WFoV-BLTEBiA"), album: None, view_count: Some(15000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1286,7 +1286,7 @@ MusicCharts( artist_id: Some("UCTP45_DE3fMLujU8sZ-MBzw"), album: None, view_count: Some(10000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1314,7 +1314,7 @@ MusicCharts( artist_id: Some("UC_duTRnaqtLLTCDIlqjRTcQ"), album: None, view_count: Some(3600000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1338,7 +1338,7 @@ MusicCharts( artist_id: Some("UCPoQYATXIYvN5WB0c4f6jfQ"), album: None, view_count: Some(524000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1362,7 +1362,7 @@ MusicCharts( artist_id: Some("UCR28YDxjDE3ogQROaNdnRbQ"), album: None, view_count: Some(3800000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1386,7 +1386,7 @@ MusicCharts( artist_id: Some("UCpcTrCXblq78GZrTUTLWeBw"), album: None, view_count: Some(46000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1410,7 +1410,7 @@ MusicCharts( artist_id: Some("UCEf_Bc-KVd7onSeifS3py9g"), album: None, view_count: Some(8300000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1434,7 +1434,7 @@ MusicCharts( artist_id: Some("UCVcAt8IIKIeubRSigcYXgtA"), album: None, view_count: Some(13000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1458,7 +1458,7 @@ MusicCharts( artist_id: Some("UC0_1glf30IS53tFQWT8xpxw"), album: None, view_count: Some(365000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1482,7 +1482,7 @@ MusicCharts( artist_id: Some("UC1_liDR4fRFJgH4HoJeV8cw"), album: None, view_count: Some(754000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1506,7 +1506,7 @@ MusicCharts( artist_id: Some("UCGJdT8Qip4XObbQZ98Z1CAA"), album: None, view_count: Some(4900000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1530,7 +1530,7 @@ MusicCharts( artist_id: Some("UCr_zAwkma5JAyHOWfVXaouA"), album: None, view_count: Some(2900000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1554,7 +1554,7 @@ MusicCharts( artist_id: Some("UCvUZUUxWhwtKLVQ9bVRjLEA"), album: None, view_count: Some(4000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1582,7 +1582,7 @@ MusicCharts( artist_id: Some("UC7n3gWRN0vQzgiOKc51aZ4w"), album: None, view_count: Some(36000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1606,7 +1606,7 @@ MusicCharts( artist_id: Some("UCVcAt8IIKIeubRSigcYXgtA"), album: None, view_count: Some(2000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1630,7 +1630,7 @@ MusicCharts( artist_id: Some("UChWPNW87QHcXAsw2mzlsYNw"), album: None, view_count: Some(2600000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1662,7 +1662,7 @@ MusicCharts( artist_id: Some("UC47k7qXysCBKeaYfc1zmkIA"), album: None, view_count: Some(3500000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1686,7 +1686,7 @@ MusicCharts( artist_id: Some("UCjfB7ooJY7C43vBAuuCub_A"), album: None, view_count: Some(367000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1710,7 +1710,7 @@ MusicCharts( artist_id: Some("UC5xaQ6_dP7EGDmGLzVGZ1Ow"), album: None, view_count: Some(1500000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2416,6 +2416,7 @@ MusicCharts( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "PL4fGSI1pDJn4fmCoF1vKHLtivI0f9yHiF", @@ -2435,6 +2436,7 @@ MusicCharts( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "PL4fGSI1pDJn5O8siDeZuI_4hbk6JWtTX1", @@ -2454,6 +2456,7 @@ MusicCharts( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "PL4fGSI1pDJn4EBsWVeFpcSAVOFMfhyipg", @@ -2473,6 +2476,7 @@ MusicCharts( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "PL4fGSI1pDJn5LOptOQixqnzXNGjNXAgYY", @@ -2492,6 +2496,7 @@ MusicCharts( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "PL4fGSI1pDJn4w4wTTgOmP_S80PoCtbGrL", @@ -2511,6 +2516,7 @@ MusicCharts( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "PL4fGSI1pDJn7Wkr6Ll6ds1AhA42rT8uaU", @@ -2530,6 +2536,7 @@ MusicCharts( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "PL4fGSI1pDJn4rBU0RHnR6-b1_uE20CzRH", @@ -2549,6 +2556,7 @@ MusicCharts( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), ], top_playlist_id: Some("PL4fGSI1pDJn69On1f-8NAvX_CYlx7QyZc"), diff --git a/src/client/snapshots/rustypipe__client__music_charts__tests__map_music_charts_global.snap b/src/client/snapshots/rustypipe__client__music_charts__tests__map_music_charts_global.snap index 367b1c9..36575bf 100644 --- a/src/client/snapshots/rustypipe__client__music_charts__tests__map_music_charts_global.snap +++ b/src/client/snapshots/rustypipe__client__music_charts__tests__map_music_charts_global.snap @@ -29,7 +29,7 @@ MusicCharts( artist_id: Some("UCpcTrCXblq78GZrTUTLWeBw"), album: None, view_count: Some(46000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -62,7 +62,7 @@ MusicCharts( artist_id: Some("UC9vrvNSL3xcWGSkV86REBSg"), album: None, view_count: Some(46000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -91,7 +91,7 @@ MusicCharts( artist_id: Some("UCo6JijJGA3IvIiPsawDK3Ww"), album: None, view_count: Some(3300000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -124,7 +124,7 @@ MusicCharts( artist_id: Some("UCONiUl5u7y2bMaVZJcuRDEQ"), album: None, view_count: Some(38000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -157,7 +157,7 @@ MusicCharts( artist_id: None, album: None, view_count: Some(57000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -186,7 +186,7 @@ MusicCharts( artist_id: Some("UCiY3z8HAGD6BlSNKVn2kSvQ"), album: None, view_count: Some(521000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -219,7 +219,7 @@ MusicCharts( artist_id: Some("UC5p07Pr3hlfjXo3YGVCyOgg"), album: None, view_count: Some(76000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -248,7 +248,7 @@ MusicCharts( artist_id: Some("UCfh2j2Dq-aSeLhzuPOsnhVg"), album: None, view_count: Some(276000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -281,7 +281,7 @@ MusicCharts( artist_id: Some("UCeBYRgPhy8kcRmIGQWKuqdQ"), album: None, view_count: Some(136000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -310,7 +310,7 @@ MusicCharts( artist_id: Some("UCiY3z8HAGD6BlSNKVn2kSvQ"), album: None, view_count: Some(559000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -339,7 +339,7 @@ MusicCharts( artist_id: Some("UCDxKh1gFWeYsqePvgVzmPoQ"), album: None, view_count: Some(331000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -368,7 +368,7 @@ MusicCharts( artist_id: Some("UCkbbMCA40i18i7UdjayMPAg"), album: None, view_count: Some(257000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -401,7 +401,7 @@ MusicCharts( artist_id: Some("UC7n3gWRN0vQzgiOKc51aZ4w"), album: None, view_count: Some(36000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -442,7 +442,7 @@ MusicCharts( artist_id: Some("UCKEFjh4JL-OyMI8z3h5Coaw"), album: None, view_count: Some(50000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -475,7 +475,7 @@ MusicCharts( artist_id: Some("UC7n3gWRN0vQzgiOKc51aZ4w"), album: None, view_count: Some(202000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -504,7 +504,7 @@ MusicCharts( artist_id: Some("UCKNGMXJHTiGFdZNSo_zs3fQ"), album: None, view_count: Some(103000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -533,7 +533,7 @@ MusicCharts( artist_id: Some("UCkbbMCA40i18i7UdjayMPAg"), album: None, view_count: Some(453000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -562,7 +562,7 @@ MusicCharts( artist_id: Some("UCUamzwxCTrUvpyAvAt4FEdg"), album: None, view_count: Some(44000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -591,7 +591,7 @@ MusicCharts( artist_id: Some("UCKEFjh4JL-OyMI8z3h5Coaw"), album: None, view_count: Some(81000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -620,7 +620,7 @@ MusicCharts( artist_id: Some("UCJa2FF4TUB13Mm0GurZAqog"), album: None, view_count: Some(73000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -649,7 +649,7 @@ MusicCharts( artist_id: Some("UC6uMb9hMAziN9HZoXfTBAlg"), album: None, view_count: Some(45000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -678,7 +678,7 @@ MusicCharts( artist_id: Some("UC7n3gWRN0vQzgiOKc51aZ4w"), album: None, view_count: Some(545000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -707,7 +707,7 @@ MusicCharts( artist_id: Some("UCJa2FF4TUB13Mm0GurZAqog"), album: None, view_count: Some(139000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -736,7 +736,7 @@ MusicCharts( artist_id: Some("UCeYz6rzUGhVwqxRM37FUo8w"), album: None, view_count: Some(197000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -769,7 +769,7 @@ MusicCharts( artist_id: Some("UCy6qn2oxmoXA4_gBA5Q7zPw"), album: None, view_count: Some(257000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -798,7 +798,7 @@ MusicCharts( artist_id: Some("UCybEdRVR5u_WFoV-BLTEBiA"), album: None, view_count: Some(15000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -827,7 +827,7 @@ MusicCharts( artist_id: Some("UCtGHTwNL20Y3fY9bumjHDOw"), album: None, view_count: Some(55000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -856,7 +856,7 @@ MusicCharts( artist_id: Some("UCWsDFcIhY2DBi3GB5uykGXA"), album: None, view_count: Some(34000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -889,7 +889,7 @@ MusicCharts( artist_id: Some("UCo6JijJGA3IvIiPsawDK3Ww"), album: None, view_count: Some(123000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -918,7 +918,7 @@ MusicCharts( artist_id: Some("UCc3e8O2V5_7OA300ursDyFQ"), album: None, view_count: Some(109000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -947,7 +947,7 @@ MusicCharts( artist_id: Some("UC3QmG1Jn9cE5fTMt14DLuZw"), album: None, view_count: Some(5700000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -976,7 +976,7 @@ MusicCharts( artist_id: Some("UC03jIQv4WXBSHdr1DlCLYDw"), album: None, view_count: Some(872000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1005,7 +1005,7 @@ MusicCharts( artist_id: Some("UCSzWQmDsKG37iKN2vw1G-2Q"), album: None, view_count: Some(7900000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1034,7 +1034,7 @@ MusicCharts( artist_id: Some("UCo6JijJGA3IvIiPsawDK3Ww"), album: None, view_count: Some(750000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1063,7 +1063,7 @@ MusicCharts( artist_id: Some("UCKRnq8aBOCanYlffje7HyvA"), album: None, view_count: Some(311000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1100,7 +1100,7 @@ MusicCharts( artist_id: Some("UCQK0swJm0ceapSOtRKIWr0g"), album: None, view_count: Some(37000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1133,7 +1133,7 @@ MusicCharts( artist_id: Some("UC7PL9aor5qNRhvhWWVXyOqA"), album: None, view_count: Some(377000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1166,7 +1166,7 @@ MusicCharts( artist_id: Some("UC2kPe8FB39lojsUDtyKcqOQ"), album: None, view_count: Some(486000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1195,7 +1195,7 @@ MusicCharts( artist_id: Some("UCrP3Rfz32MT-OH9MZh_N9kA"), album: None, view_count: Some(570000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1224,7 +1224,7 @@ MusicCharts( artist_id: Some("UC0QVToeCjC9-1u-teWToPsg"), album: None, view_count: Some(28000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_details__tests__map_music_details_mv.snap b/src/client/snapshots/rustypipe__client__music_details__tests__map_music_details_mv.snap index a942a54..fc22ac9 100644 --- a/src/client/snapshots/rustypipe__client__music_details__tests__map_music_details_mv.snap +++ b/src/client/snapshots/rustypipe__client__music_details__tests__map_music_details_mv.snap @@ -33,7 +33,7 @@ TrackDetails( artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, view_count: Some(235000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_details__tests__map_music_details_track.snap b/src/client/snapshots/rustypipe__client__music_details__tests__map_music_details_track.snap index 97ff95b..7f559f0 100644 --- a/src/client/snapshots/rustypipe__client__music_details__tests__map_music_details_track.snap +++ b/src/client/snapshots/rustypipe__client__music_details__tests__map_music_details_track.snap @@ -51,7 +51,7 @@ TrackDetails( name: "INVU - The 3rd Album", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_details__tests__map_music_radio_mv.snap b/src/client/snapshots/rustypipe__client__music_details__tests__map_music_radio_mv.snap index 877a978..dab21d2 100644 --- a/src/client/snapshots/rustypipe__client__music_details__tests__map_music_radio_mv.snap +++ b/src/client/snapshots/rustypipe__client__music_details__tests__map_music_radio_mv.snap @@ -35,7 +35,7 @@ Paginator( artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, view_count: Some(250000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -69,7 +69,7 @@ Paginator( artist_id: Some("UC_4Y1QqJr60C5Z7-eQWy-mw"), album: None, view_count: Some(168000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -103,7 +103,7 @@ Paginator( artist_id: Some("UCAq0pFGa2w9SjxOq0ZxKVIw"), album: None, view_count: Some(464000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -137,7 +137,7 @@ Paginator( artist_id: Some("UCTP45_DE3fMLujU8sZ-MBzw"), album: None, view_count: Some(230000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -171,7 +171,7 @@ Paginator( artist_id: Some("UCkbbMCA40i18i7UdjayMPAg"), album: None, view_count: Some(422000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -205,7 +205,7 @@ Paginator( artist_id: Some("UCHmZYTfdTyVKQEJicLiXEOg"), album: None, view_count: Some(349000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -239,7 +239,7 @@ Paginator( artist_id: Some("UCuKdaTsJ9Jv94hVV_I9aRxQ"), album: None, view_count: Some(167000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -273,7 +273,7 @@ Paginator( artist_id: Some("UC-clMkTZa7k-FxmNgMjoCgQ"), album: None, view_count: Some(124000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -307,7 +307,7 @@ Paginator( artist_id: Some("UCEf_Bc-KVd7onSeifS3py9g"), album: None, view_count: Some(127000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -336,7 +336,7 @@ Paginator( artist_id: Some("UCqTaQGqjAI6fYkr84KZgZEg"), album: None, view_count: Some(239000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -370,7 +370,7 @@ Paginator( artist_id: Some("UCAKvDuIX3m1AUdPpDSqV_3w"), album: None, view_count: Some(140000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -404,7 +404,7 @@ Paginator( artist_id: Some("UC_Cx288SDUD9liYn7CiJLAA"), album: None, view_count: Some(90000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -438,7 +438,7 @@ Paginator( artist_id: Some("UCDDpqmryjNunitS05bv7-8w"), album: None, view_count: Some(137000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -472,7 +472,7 @@ Paginator( artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, view_count: Some(220000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -506,7 +506,7 @@ Paginator( artist_id: Some("UCwPKPUAWE8ah0lkOcvNh8_Q"), album: None, view_count: Some(258000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -540,7 +540,7 @@ Paginator( artist_id: Some("UCWT2ZfW7d8YI-HinHEVhyCA"), album: None, view_count: Some(181000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -574,7 +574,7 @@ Paginator( artist_id: Some("UCjqYTQjO-JG-8vLlt6-4iyQ"), album: None, view_count: Some(165000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -608,7 +608,7 @@ Paginator( artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, view_count: Some(108000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -642,7 +642,7 @@ Paginator( artist_id: Some("UCkbbMCA40i18i7UdjayMPAg"), album: None, view_count: Some(222000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -676,7 +676,7 @@ Paginator( artist_id: Some("UCEUX9tUYqTFfPQdAgVNsKTA"), album: None, view_count: Some(540000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -710,7 +710,7 @@ Paginator( artist_id: Some("UCG81UKNsFg9Perf0uPQOsQw"), album: None, view_count: Some(90000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -744,7 +744,7 @@ Paginator( artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, view_count: Some(90000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -778,7 +778,7 @@ Paginator( artist_id: Some("UCDdCbqagfKo_euzzCV9G2EQ"), album: None, view_count: Some(71000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -807,7 +807,7 @@ Paginator( artist_id: Some("UCTP45_DE3fMLujU8sZ-MBzw"), album: None, view_count: Some(208000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -841,7 +841,7 @@ Paginator( artist_id: Some("UCDnYJA3OXXhRKYPe3jzLGeQ"), album: None, view_count: Some(140000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_details__tests__map_music_radio_track.snap b/src/client/snapshots/rustypipe__client__music_details__tests__map_music_radio_track.snap index f67cef9..6524f42 100644 --- a/src/client/snapshots/rustypipe__client__music_details__tests__map_music_radio_track.snap +++ b/src/client/snapshots/rustypipe__client__music_details__tests__map_music_radio_track.snap @@ -53,7 +53,7 @@ Paginator( name: "LOVE DIVE (LOVE DIVE)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -105,7 +105,7 @@ Paginator( name: "My Voice - The 1st Album", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -157,7 +157,7 @@ Paginator( name: "FOREVER 1 - The 7th Album", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -209,7 +209,7 @@ Paginator( name: "\'The ReVe Festival 2022 - Feel My Rhythm\'", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -261,7 +261,7 @@ Paginator( name: "NewJeans 1st EP \'New Jeans\'", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -313,7 +313,7 @@ Paginator( name: "IU 5th Album \'LILAC\' (IU 5th Album \'LILAC\')", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -365,7 +365,7 @@ Paginator( name: "2021 Winter SMTOWN : SMCU EXPRESS", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -417,7 +417,7 @@ Paginator( name: "Dear OHMYGIRL", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -469,7 +469,7 @@ Paginator( name: "I Love", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -521,7 +521,7 @@ Paginator( name: "BORN PINK", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -573,7 +573,7 @@ Paginator( name: "YOUNG-LUV.COM (YOUNG-LUV.COM)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -625,7 +625,7 @@ Paginator( name: "ELEVEN (ELEVEN)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -677,7 +677,7 @@ Paginator( name: "Weekend", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -729,7 +729,7 @@ Paginator( name: "Offset", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -785,7 +785,7 @@ Paginator( name: "Scared to Be Lonely", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -837,7 +837,7 @@ Paginator( name: "After LIKE", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -889,7 +889,7 @@ Paginator( name: "Purpose - The 2nd Album", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -941,7 +941,7 @@ Paginator( name: "Heart Burn (열이올라요 (Heart Burn))", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -993,7 +993,7 @@ Paginator( name: "Rollin\'", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1045,7 +1045,7 @@ Paginator( name: "The ReVe Festival: Finale", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1097,7 +1097,7 @@ Paginator( name: "Every letter I sent you.", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1149,7 +1149,7 @@ Paginator( name: "Stronger (Deluxe Version)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1201,7 +1201,7 @@ Paginator( name: "FATE NUMBER FOR", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1253,7 +1253,7 @@ Paginator( name: "ANTIFRAGILE", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1305,7 +1305,7 @@ Paginator( name: "소녀시대 Girls\' Generation", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_details__tests__map_music_related.snap b/src/client/snapshots/rustypipe__client__music_details__tests__map_music_related.snap index b26d5de..4749fc2 100644 --- a/src/client/snapshots/rustypipe__client__music_details__tests__map_music_related.snap +++ b/src/client/snapshots/rustypipe__client__music_details__tests__map_music_related.snap @@ -32,7 +32,7 @@ MusicRelated( name: "FOREVER 1 - The 7th Album", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -64,7 +64,7 @@ MusicRelated( name: "After LIKE", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -96,7 +96,7 @@ MusicRelated( name: "Windy", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -128,7 +128,7 @@ MusicRelated( name: "Girls - The 2nd Mini Album", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -160,7 +160,7 @@ MusicRelated( name: "Weekend", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -192,7 +192,7 @@ MusicRelated( name: "Hello", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -224,7 +224,7 @@ MusicRelated( name: "Girls - The 2nd Mini Album", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -256,7 +256,7 @@ MusicRelated( name: "IT\'z Different", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -288,7 +288,7 @@ MusicRelated( name: "LOVE DIVE (LOVE DIVE)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -320,7 +320,7 @@ MusicRelated( name: "Vanilla", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -352,7 +352,7 @@ MusicRelated( name: "Savage - The 1st Mini Album", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -384,7 +384,7 @@ MusicRelated( name: "\'The ReVe Festival 2022 - Feel My Rhythm\'", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -416,7 +416,7 @@ MusicRelated( name: "I NEVER DIE", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -448,7 +448,7 @@ MusicRelated( name: "INVU - The 3rd Album", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -480,7 +480,7 @@ MusicRelated( name: "CHECKMATE", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -512,7 +512,7 @@ MusicRelated( name: "Girls - The 2nd Mini Album", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -544,7 +544,7 @@ MusicRelated( name: "Street Dance Girls Fighter (SGF) Special", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -576,7 +576,7 @@ MusicRelated( name: "Next Level", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -608,7 +608,7 @@ MusicRelated( name: "IT\'z ICY", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -640,7 +640,7 @@ MusicRelated( name: "1/6 (6분의1)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -666,7 +666,7 @@ MusicRelated( artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, view_count: Some(35000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -690,7 +690,7 @@ MusicRelated( artist_id: Some("UCx5Dw_5guQcKu_lMGCh-IuQ"), album: None, view_count: Some(836000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -714,7 +714,7 @@ MusicRelated( artist_id: Some("UCrGYENbzwtva2X16bAPhTbA"), album: None, view_count: Some(1200000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -738,7 +738,7 @@ MusicRelated( artist_id: Some("UCC3bq4PHj5W5y47jdRjOCPA"), album: None, view_count: Some(987000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -766,7 +766,7 @@ MusicRelated( ), ], artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), - album_type: Album, + album_type: album, year: Some(2022), by_va: false, ), @@ -792,7 +792,7 @@ MusicRelated( ), ], artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), - album_type: Ep, + album_type: ep, year: Some(2021), by_va: false, ), @@ -991,6 +991,7 @@ MusicRelated( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLXE743St3DmXcUceLu--0-1k2FP2EocOk", @@ -1013,6 +1014,7 @@ MusicRelated( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLrppmyF0pfrfcoUjEygOB3sJpLk7envYZ", @@ -1035,6 +1037,7 @@ MusicRelated( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLpwgyaUVRzlLwAwXFWUCtIQJgbMS2k5fG", @@ -1057,6 +1060,7 @@ MusicRelated( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLPhP3bI_bdf1KY5-iN6trq-1XB4AQoZij", @@ -1079,6 +1083,7 @@ MusicRelated( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLjVRwhW9AxIDrdwuZqGfC_gjmFNfDfXqm", @@ -1101,6 +1106,7 @@ MusicRelated( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLhBJuM3nUmMEZSJaKFmjA7Y5z-PBzMO0o", @@ -1123,6 +1129,7 @@ MusicRelated( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL0Ne18oW010y_gRCR_57arzpFiP9gnVEi", @@ -1145,6 +1152,7 @@ MusicRelated( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLSNAUEM08rvKpvgkWSThc7PP7R9GJ8WdJ", @@ -1167,6 +1175,7 @@ MusicRelated( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLmOj3ylRt-xido1Feaf3O5HFXSKKeBuRR", @@ -1189,6 +1198,7 @@ MusicRelated( )), track_count: None, from_ytm: false, + is_podcast: false, ), ], ) diff --git a/src/client/snapshots/rustypipe__client__music_genres__tests__map_music_genre_default.snap b/src/client/snapshots/rustypipe__client__music_genres__tests__map_music_genre_default.snap index 30f9847..f8f6822 100644 --- a/src/client/snapshots/rustypipe__client__music_genres__tests__map_music_genre_default.snap +++ b/src/client/snapshots/rustypipe__client__music_genres__tests__map_music_genre_default.snap @@ -28,6 +28,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n7Y4Fp2-4cjm5UUvSZwdRaiZowRs5Tcz0", @@ -47,6 +48,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), ], ), @@ -72,6 +74,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kvH_VWOl1tx0Ad4H2F_4jaTMnImcuCFXc", @@ -91,6 +94,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nbEuX7ko7FvHPYcOOedR9gwtD_LfK43YQ", @@ -110,6 +114,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kbCOLoGMEP6u3N72wiPQJwwuEcqM9vM3A", @@ -129,6 +134,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kvmdYWgmu7MBsrWUzv53AyF02ytmE18bo", @@ -148,6 +154,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_myYJP_JeJ3G6Ai3mr2DpD0kioXp3tZMvk", @@ -167,6 +174,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kgZozN6UqTxdkBJ-kv0Q_YQrFlsz1Ee7g", @@ -186,6 +194,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mFO2tSOkp3Ti5zWQoaPsXJ-rhcKZ6iv30", @@ -205,6 +214,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n1yUj1SIY2iIAIiVtdlwy6z7RLFqKXmB0", @@ -224,6 +234,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8", @@ -243,6 +254,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kJ1kr0uBugvmrHBPrf07UirV5dazSl9oc", @@ -262,6 +274,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lJvy5U2ysw2Kwv72qeNPkrjDxu5fsvogU", @@ -281,6 +294,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l2zLaMIWOqWSePvTSmt49GcuR8460ZR10", @@ -300,6 +314,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nSq67AJ2d75MFNJ3j_4ClEtSgC-opBM84", @@ -319,6 +334,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_k-4bBZpMA00LtvrMiVcRNr0caz135-Ydw", @@ -338,6 +354,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l6kmbwVnzKyu31exvtuxnFkjswnNgI6Uw", @@ -357,6 +374,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lWC9PGFnzJWI7RvkLcFUBICdb3UhfzLbs", @@ -376,6 +394,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_latg1ZI9CZNHAJVjUird8WRB6QB0NtA0E", @@ -395,6 +414,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk", @@ -414,6 +434,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lBdj-S7dlwHFWFuEWGbHSc8CX84Xw6zto", @@ -433,6 +454,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mplKe9BIYCO3ZuNWSHZr48bm9DUDzbWnE", @@ -452,6 +474,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kqj-mUrW1rujCuPGNNWkGoBuTo-v5bfsA", @@ -471,6 +494,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mPQwZcd20eT41GybtQa1bSvG9I2C_5044", @@ -490,6 +514,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l0EEjXABl_IMuijE44F2H2CVQwpcDaJWI", @@ -509,6 +534,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n8Hg9csbDQCPDH-PKmWZmKVG_oMgvrozY", @@ -528,6 +554,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n_goavyhecaj4JOjSN-fWLxKmgZli6kj4", @@ -547,6 +574,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kZdxcIsmHONbbqhPSpUELGUBpMw-Gy-_o", @@ -566,6 +594,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m55iAnFa25l8bl7m8vsTsmGph3-_yVBW0", @@ -585,6 +614,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mW28TsFufV3FbGWEJ_nIVpX6broAGhYzw", @@ -604,6 +634,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), ], ), @@ -632,6 +663,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLS2LdrVTYusLU_hCU5BpYW1obUBxmtdn1", @@ -654,6 +686,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL9qkt1BUOqWC5f7sfSnzJ-eruvh9z0Xvk", @@ -676,6 +709,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLJQpUCyR0LEmRqED8maDWeCSjcZQxz74o", @@ -698,6 +732,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLe0u44b6hRPneI9Lo8wPojNGOzUkQlU6E", @@ -720,6 +755,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLx33iAjx1SX-RUPoX_VwTiH76YlDA44Kp", @@ -742,6 +778,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLghwrhHIqohALdqK1yKEtNzt70KI4B5Om", @@ -764,6 +801,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLVYa6bTyniWnEwKh-0tvOYnQhDuexxsFb", @@ -786,6 +824,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL1gdaAVAscyWR6w69kvI3B6YKy2XGToYF", @@ -808,6 +847,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLSqDba5amfYmooaH98BHIKgwM_k8ZPGeE", @@ -830,6 +870,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL2LI1a8pvF_0rsK_cp4CQmcEUxVkUcQl5", @@ -852,6 +893,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLLDR0cl8Vp56kg_NnsTmOb-RAjmTmYH8Q", @@ -874,6 +916,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLQINZEiwYZUhSzBYo7N2kYA-YKe7c7s6f", @@ -896,6 +939,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLI4kOmUQVGGEmAoyqXeGHnRqFW-d2QhVI", @@ -918,6 +962,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL7j8mqHzZ0flLdx7ALRMucMUxR9JUB8sT", @@ -940,6 +985,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLrkejTJv-76SDVhgd8fPAnU0bV6NeQavI", @@ -962,6 +1008,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLoxE1Ti2wY-1rKdCShq3lmzxG6fT40mNg", @@ -984,6 +1031,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLIsuqDX1RVOHBF7jrK6LFENDFBSPMZggI", @@ -1006,6 +1054,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLPjmvempgZEkFo1VQxUqeY8s-btdGlQpV", @@ -1028,6 +1077,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLWfzkZat4ODqyZBxrPZZTnV1F964isfwL", @@ -1050,6 +1100,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLOz-7wuTInGnJChJAXLNkmTy7fR9U8CQ1", @@ -1072,6 +1123,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLHyNvAafrhB1vhOfiwv1uupwyAp5PXvH3", @@ -1094,6 +1146,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLlTR5R2SQJA9qQxcAUduU524YTdiTojej", @@ -1116,6 +1169,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL2htvnHUyzUyUe7PsHksrvDhBFxxLh0ek", @@ -1138,6 +1192,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL3W7Ee40D1uPb3Uhoq1ywxa4Bb7ACrMJQ", @@ -1160,6 +1215,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL4uHTWD34ZLwVcMtTGF1AifgjTeNAQrs0", @@ -1182,6 +1238,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLSU2KN4IgLuiUWJcCnUZp82zodClvAIuf", @@ -1204,6 +1261,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLfW2_8kv5330_Ao5PGh2XFkyW6eMy8WZB", @@ -1226,6 +1284,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL025H4LaLR5mbc3DDsUzDkcy-T01GULFk", @@ -1248,6 +1307,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLvy15vbU4Mx8Ubu-ph-2UNV_pfuxadVOj", @@ -1270,6 +1330,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLRreUHi07Hmddrfoq7KCGZKG9o9_oDyME", @@ -1292,6 +1353,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLBv67EHx3AigJgjA8i2QsCkxCFUNUdwL3", @@ -1314,6 +1376,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLtQwM3YIcYQnNsFA-L8ycZM6vO0Z4P6GJ", @@ -1336,6 +1399,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLgtsMQ_zO3sP7RSgQBUVDQDYJ3_JnSqwY", @@ -1358,6 +1422,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLLEvCpqVDFs6ie8-x1Bsmijn7hTLJ1cdb", @@ -1380,6 +1445,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLR851aUIAa01I6et--H8LwRTFI-AZJFMc", @@ -1402,6 +1468,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLiCvHZA3wfMmf9rIfiL5M0FdIAsBKIhj-", @@ -1424,6 +1491,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLo-m1BMGmy5VOcC0QLEcjPd5QL2SQWqhb", @@ -1446,6 +1514,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL3wyQMWaWWbvCGFNeHhKIFOr_yCrfqKwC", @@ -1468,6 +1537,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLg9rjmMZPv3mNdiBqA6UL-8lo9fhuHic1", @@ -1490,6 +1560,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLbZDkrFzUaZbgiaibZuG_-e4J-5lkfL3L", @@ -1512,6 +1583,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLMzduHz2tju2fXIIa1-YDYSv-bZgeTg0r", @@ -1534,6 +1606,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLeKVWa9bsZf2oJ3IM73IGFUtGMScGXGCB", @@ -1556,6 +1629,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLbaoxNdFdhRCr-Woi_W-MIZ7ifdpSVwrP", @@ -1578,6 +1652,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLicsPGLycqD6SMiIacwDL0ysJpu6WHhn-", @@ -1600,6 +1675,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLIkVmkE7IhUOgQo2WFFqtvJPjETE3jwp1", @@ -1622,6 +1698,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLxQVjaBwumM7WZJOhc41am3ZdtSZIHWY0", @@ -1644,6 +1721,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLIpaeL5dXdO8d2yAGLq3ihl2cc0K7HMXz", @@ -1666,6 +1744,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLitmf0WIU1YNcsaGs-H2ChzNR0iEdTjz4", @@ -1688,6 +1767,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLd74irMqdRWbnMheQgMew6FQJn_hMKMhu", @@ -1710,6 +1790,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLpTRxPTIe0L1B1I3d-BrREQhZrflXhZ6X", @@ -1732,6 +1813,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLn_StDWk18WzdpMH4YTpfVeQ_7hWFcpdp", @@ -1754,6 +1836,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLuPX_nCC-NiWp3MohN28QP-IcUarK2PJz", @@ -1776,6 +1859,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL0gY3V_nZKueuqJtJoQ8ZfCnCz4nOmhZL", @@ -1798,6 +1882,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLBXbv2Ph7ssYy_hP5HsMAN2aXcp1v6ybA", @@ -1820,6 +1905,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL49mwVAkZMla22f83qdnyIzWgLXSLAeAX", @@ -1842,6 +1928,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLyauqJWhilMn3ghsoxHfbJQGjUga3WyuD", @@ -1864,6 +1951,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLhvllmSGRuzU5SkEHX8EZxOwg79ZK9mV0", @@ -1886,6 +1974,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL_iwx16OQhvdHC8boPrIVqVhvQRi1QW1h", @@ -1908,6 +1997,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLCOb2lbbl6lbt4wEjWQ0bz04OnrPyhchc", @@ -1930,6 +2020,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLXkWolZmg_9p6lKp_Nvi4wtxtMuzq4bTB", @@ -1952,6 +2043,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLcuYf24FBZrWaqAIZOYtfJ9GXm7W_mgqt", @@ -1974,6 +2066,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLlHvA-6VfFAsRxxwGCPKQpL1RetXqtC9f", @@ -1996,6 +2089,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLLOlgieBNw0bRVmLzaNC_J6RPuL7PXkTG", @@ -2018,6 +2112,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLV7CZtNaL6J4SLcgpc2NHPl3z5PKcGABE", @@ -2040,6 +2135,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLiDUBSabeEMHeRu8Lt0B0GcaiQErAuiIm", @@ -2062,6 +2158,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLxZF2v-9IhoRrlZYk-P-xBohuUJ_TSIGV", @@ -2084,6 +2181,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLS3KnEy0AhRhbepd13ArHY30yIo3klQzs", @@ -2106,6 +2204,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL5Ryeb8pVjXQoaV5_Hwk_RB_BgFI1INQb", @@ -2128,6 +2227,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLQLznpgWJj_NeTXk3nacx4VUmMdzi4Ynt", @@ -2150,6 +2250,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLgxYBcFUjQVaoqP4S4bXiR4LHhKaEqANY", @@ -2172,6 +2273,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLoC5DBY3lE-oF3ZyD6zBFuLk371lS7rx-", @@ -2194,6 +2296,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLoSkEdUirhIittS6Ettd9_ag6PUlpthnP", @@ -2216,6 +2319,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLSLFXeRydzCUF9SCQK7yNObp7nMOfVnUT", @@ -2238,6 +2342,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLDCGSC_ibfArFyQGyLyHATXLhofGXVR2B", @@ -2260,6 +2365,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLe09GLm2ley5X6wUH5ObwnRui9-LsYkku", @@ -2282,6 +2388,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLNgAHkdtgRROAueZWCJODy547v4aCNIxj", @@ -2304,6 +2411,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL_xuRaWtQWh6_UlsmJ1i4y-fAmhYL2MOu", @@ -2326,6 +2434,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL4IggWOQ-WtswkyyAe0SQ3js7914E9xb6", @@ -2348,6 +2457,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL4p40E1UN4QQ380R4lwjbd5mbdVFnB9Gd", @@ -2370,6 +2480,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLbaui_QE89YQ6lRcrhZTU4Gww5Em0P-lg", @@ -2392,6 +2503,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLmJeYkjl2HVVOU-lxiJFEJ80G4VCx_QmF", @@ -2414,6 +2526,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLEd5-uLH_wuQ2agrrFOW3UpaiZkdjRpaa", @@ -2436,6 +2549,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLXU1gTdaHyzJP6DVUTLCs6xmjxNngwiXJ", @@ -2458,6 +2572,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLAb-IT-UKa-4KxW2DYNzCd1o5RuBB53ze", @@ -2480,6 +2595,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLf7knoGs7DUOz6AVBYuOiS45RXKPHABhD", @@ -2502,6 +2618,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLkfgerzo2n3g-w8xZIUkf0Qtm_n4WIH5G", @@ -2524,6 +2641,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLadCnAFCR_M0pMHMqeSxnHZoHiw4AIEQc", @@ -2546,6 +2664,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL6I92v4xJF0MOL70Kq-LJc4bFngToeeui", @@ -2568,6 +2687,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLcFbnOH-hERlt1bUQG-Sopg5fxm3jrLFf", @@ -2590,6 +2710,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLzdF1FdintplvElUSvI41GK7BAD0KDV5S", @@ -2612,6 +2733,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLkSbGb7ZJWl2-Cn3R1PrffC1kYIZGZTFo", @@ -2634,6 +2756,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLiANqzkTWXBQJ-1XeTQSfFZNCU7IOZj6k", @@ -2656,6 +2779,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLgsmQNnahCaN_SSVr3yvQQX1oEP5Wxq5G", @@ -2678,6 +2802,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLcL3Ukbka4H55i24haJHib2MIRaqzWFu2", @@ -2700,6 +2825,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLY9S50VIs7npMlH-ZSOH-SuikGh9d22pC", @@ -2722,6 +2848,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL1303cc-duJRlpu15Gy6fQdPiOgxvOQa3", @@ -2744,6 +2871,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL4cy-cKSZDgvllyR4KYetlYSTcYMOrVa_", @@ -2766,6 +2894,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLCm5646X_Fe7Q5Pn75Jd37NnpMGoDvSCj", @@ -2788,6 +2917,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLyOQkkNkTxU_uQfyS6JVa-wKUROPkPBoC", @@ -2810,6 +2940,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLWmOowMyqBz56GjD_7wlw8ZRP7qpFmrCN", @@ -2832,6 +2963,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLhjMZKhmmEw59TxXHESRiGyzk6823eUcO", @@ -2854,6 +2986,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLw64neqbaXy6YoifRQ61-6vUPoo8SvNYy", @@ -2876,6 +3009,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL8JWemUnR0IcQWDK7hc5koesNDkij0N1a", @@ -2898,6 +3032,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLlW3JNGGG5rihtgQcnqJAzbxzkXht-N2v", @@ -2920,6 +3055,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLPAoHehoVH_33IzpccydJcf5dkIuOZKuA", @@ -2942,6 +3078,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLQomN5HUDD3vf1C1N1Ba4q_rFNSi6ioPC", @@ -2964,6 +3101,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLfp3GEitdDgZaVoa3qVeR3CqGidKEXvzF", @@ -2986,6 +3124,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLnRSj6IxVCcyA_6iHPzhqjssJ9qGT58lK", @@ -3008,6 +3147,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLGVUbwqxKs9qJ6Ay4tbRW3vD1s9IuvBVb", @@ -3030,6 +3170,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLiV0Vi0cz-2GwN6fo1VtER9M26gAzOlff", @@ -3052,6 +3193,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLF0-RckYpRc5vgPvMMCiihucmdpmAHCjv", @@ -3074,6 +3216,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLD7HpTpxQWOvZ-TWuHJwbNmBXl5wmZ8nT", @@ -3096,6 +3239,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLnAAxFaNfx2jLI8MsgMGmmc_yFEorzin-", @@ -3118,6 +3262,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL8a00yZlpeTaC_8T1vVFMvNgelW0AMWj-", @@ -3140,6 +3285,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLjyFxeY8wlXZaOChAJuURnUeNdK1G0MMG", @@ -3162,6 +3308,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLTLog19MpU4U-BHndzLG5xqMlpLL24cvq", @@ -3184,6 +3331,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLeluQVgLMBs4wzUEy3FRgNqxaNnMcDkLR", @@ -3206,6 +3354,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLZ3OUTtAaIEtN0TYd5vAnkxpyQuE5lQpc", @@ -3228,6 +3377,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLor1c1-o6kO2n8Dn9c4RTwuwRuQ1-7Fq_", @@ -3250,6 +3400,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLEd5-uLH_wuRvCCpIspbZ9iKsD-AIBebf", @@ -3272,6 +3423,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLbYux145FQmrAtB5EhIYZMn4brty5cwsq", @@ -3294,6 +3446,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL3KsyVA1nn0DyHaH2ufmIzli__PFH3TLF", @@ -3316,6 +3469,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL0O1qyOtQJ1K2uGE1n-3XCF8u9mb2fJKv", @@ -3338,6 +3492,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLbsQXIu7iZaIvjXpz5OS07MVXsNvTzn-4", @@ -3360,6 +3515,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLHqSWjsUHpnS82SgjhROIWpVXlrFIjkOl", @@ -3382,6 +3538,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLqo5krxiz-M9n1WvTrT0LTkqoMIkDNfNe", @@ -3404,6 +3561,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLh5071MGJWPeArr9_jyV1ADDbfK7OHOwx", @@ -3426,6 +3584,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLECzAa1BqyewY3nWM299O0VQ5MaBfnbd1", @@ -3448,6 +3607,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL5eUocRCdmjeD_XbpKfu4kE_D8hc5vRvV", @@ -3470,6 +3630,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLgz_tLyztjXnWOl6wW7blD4Rc6g9VSfsA", @@ -3492,6 +3653,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLHHmDr918gT-vP1-UK3eI-V47ZtQgoxJF", @@ -3514,6 +3676,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLMCu-ebJeDAs-Bh0MBOZz1lEhdIFsCl4E", @@ -3536,6 +3699,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLcYknIcwV_5EM_OFyFXhdqjwXTKyBUTf-", @@ -3558,6 +3722,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLQCdGWs9PJ9dH5UTFYaPfyjo61d4DLXR9", @@ -3580,6 +3745,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLlJn-j7tKAOHEuJ7QH5_6UbVb8IVq0McT", @@ -3602,6 +3768,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLZwF_n0Rmg1aLn3qhcrez87W7ooYNQjN7", @@ -3624,6 +3791,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLy9Bb4KsmT2Oj7Odu57WswbbqTvm5pogd", @@ -3646,6 +3814,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLYEJxFGZRFTcQOIxw8kmx-0lMXSyd7DrG", @@ -3668,6 +3837,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLvC7MTLJpPx0p3IqduEYN7ZId52lL9gJt", @@ -3690,6 +3860,7 @@ MusicGenre( )), track_count: None, from_ytm: false, + is_podcast: false, ), ], ), diff --git a/src/client/snapshots/rustypipe__client__music_genres__tests__map_music_genre_mood.snap b/src/client/snapshots/rustypipe__client__music_genres__tests__map_music_genre_mood.snap index e98a71f..6237f72 100644 --- a/src/client/snapshots/rustypipe__client__music_genres__tests__map_music_genre_mood.snap +++ b/src/client/snapshots/rustypipe__client__music_genres__tests__map_music_genre_mood.snap @@ -28,6 +28,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kjbesFvpAjQl3z_xUxMArIfRpubFn791o", @@ -47,6 +48,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mwJztsnautpobBg-95AVJ_xd5Gnb5DV-w", @@ -66,6 +68,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_ldLj_raotpFCQGWiQ7L-Ag5GTbGOyjgRY", @@ -85,6 +88,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mkG6Cj4VqXPmlYf3xbLQQhhAZHGI8vJHo", @@ -104,6 +108,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mS5x3haS3YiflmBHa8rK0rOZHgn0lhG0w", @@ -123,6 +128,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m6-fOiMxDip-4p9uD4lhzm3I9WMCSTy_Y", @@ -142,6 +148,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kM1mWVww71EGtfZYJFhqoT7gYHbWFT8ok", @@ -161,6 +168,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kXvJt59314AsVv6QdJnFqHL7W75HkqtB4", @@ -180,6 +188,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mTrr21OCLdb2dJgl_BJ-6MdJDXWqB-1gc", @@ -199,6 +208,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n7sTcaLpQClN41GSmP1jFn2pZs2uPeSw4", @@ -218,6 +228,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nmyiTFaD-osoI95yEMuRjaSMQiTDRJz6E", @@ -237,6 +248,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kmK1aMjb7sJ6eWV95Co02JwJJmdi0z05M", @@ -256,6 +268,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kb7EBi6y3GrtJri4_ZH56Ms786DFEimbM", @@ -275,6 +288,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_ldooV6iHaoPy6VKyVuHDq0DT4lh-3tRqQ", @@ -294,6 +308,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n9hGvSNdO2TpX8jJuiThvnfrfIi1qNRnY", @@ -313,6 +328,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mPQwZcd20eT41GybtQa1bSvG9I2C_5044", @@ -332,6 +348,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), ], ), @@ -357,6 +374,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nyKVppE-RpLkeCcwLct4rvN9e8AAsS_qw", @@ -376,6 +394,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n0BEng8y9HmKm6-moud8jAQ9RkE7Ie1G4", @@ -395,6 +414,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nm4NA8cldZNPqj1D0ayZxfySeY89qedRs", @@ -414,6 +434,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_neriXH6JbZPr7Pf4LOi5bGQP-_lWRZXs4", @@ -433,6 +454,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lbcexX19-ShfMgzXpxayVFh_9l4Dml-kg", @@ -452,6 +474,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nRr0zn4n0C5AGQqZKdSaSzs2zmbImOIwU", @@ -471,6 +494,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kXvJt59314AsVv6QdJnFqHL7W75HkqtB4", @@ -490,6 +514,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m0X_CFV7sbR3EKDoP_FvqyK5faV7xorUY", @@ -509,6 +534,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l3jcyafhPprVNoFpQZL02ofimw9WsO6mE", @@ -528,6 +554,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n2cq0PxECLzVblC6NOorWjaCtF5NwXJT4", @@ -547,6 +574,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m2p5A1NXN8SInEzfsxzFEvQ6zws-V-wBo", @@ -566,6 +594,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kQmVjdr90p2onIIAnijgU8u9iUUAOXM2I", @@ -585,6 +614,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_km8j1Msn0n8FTLRIw0krI9k2sf-t1Z4hg", @@ -604,6 +634,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kmK1aMjb7sJ6eWV95Co02JwJJmdi0z05M", @@ -623,6 +654,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m5EyAGTathBjwdrXC6D2G9AR-YmJrAkpw", @@ -642,6 +674,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_ldooV6iHaoPy6VKyVuHDq0DT4lh-3tRqQ", @@ -661,6 +694,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lsl0WiIp96sJajCIcHkUnOWtsU29tDSNg", @@ -680,6 +714,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l3Iir9QZmCUPLjUqyR9PmYIKkkY7YEJZA", @@ -699,6 +734,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n7sTcaLpQClN41GSmP1jFn2pZs2uPeSw4", @@ -718,6 +754,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nBOvRANXhyfsK6oGe_wTHNwOW-0kSMB8w", @@ -737,6 +774,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kSv4K98sYykBnvkZ59z1jVocVmQDigHII", @@ -756,6 +794,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kfocULaE1ZmVD0lO2WZS1iTkDyo0SpxVw", @@ -775,6 +814,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l8gRf-W7IZq0qHUkIiTiMvztkfkR-Q1lU", @@ -794,6 +834,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kTjUwIUwKmNgaGW1YDq7JxCGB6vMGA1q4", @@ -813,6 +854,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lWfuEE9muOjxNxKnvVL_KZOhsMG7-FxMI", @@ -832,6 +874,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m8ULgAe9Lkf7wIsoguU3IqZ8ZePk1ndMc", @@ -851,6 +894,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_ktkqrgIqlP46yBkUsZp4go2j59McnSsYY", @@ -870,6 +914,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kKKdVO7GqGfPlsZKfScel-ourJ_WHUn1Q", @@ -889,6 +934,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kL7seJinYAVpulQQbre887jeaIDkrnAg0", @@ -908,6 +954,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nlJdxcHTlQmkhdN48_-8CjPKyja3x86tQ", @@ -927,6 +974,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nSOL68i5YjTpuaCX0BlTL1pMzg2uAmmq0", @@ -946,6 +994,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lR4t8saWkusw6pH2MegxK-8lxB-fNWP2I", @@ -965,6 +1014,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n_goavyhecaj4JOjSN-fWLxKmgZli6kj4", @@ -984,6 +1034,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kYbdnA_dQD1WGAj0jvmEdm8cduRDmHKXw", @@ -1003,6 +1054,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), ], ), @@ -1028,6 +1080,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208", @@ -1047,6 +1100,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kIlyUNKFS6Z7rgWOhrPzqohetabYwby08", @@ -1066,6 +1120,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lsl0WiIp96sJajCIcHkUnOWtsU29tDSNg", @@ -1085,6 +1140,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kIMj6ScYWghk2sQarkFf0gLcAYL7bFKNs", @@ -1104,6 +1160,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m6XXtQxtjnB5lr_FhgBANwp7mHKY5Yoik", @@ -1123,6 +1180,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m2p5A1NXN8SInEzfsxzFEvQ6zws-V-wBo", @@ -1142,6 +1200,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mPmYbqPIJ2C20lzdy9hyRU1ThPlZIDdog", @@ -1161,6 +1220,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_liwwwIG8z4P25AWeLZ2Nvydx1GwbvndEI", @@ -1180,6 +1240,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lXWhlJsihey6xq1b50d7Uv93NLqle8TSc", @@ -1199,6 +1260,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nZexkv7Z-x6_aS9MlGSpmnXZceVKEsBms", @@ -1218,6 +1280,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m8ULgAe9Lkf7wIsoguU3IqZ8ZePk1ndMc", @@ -1237,6 +1300,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lBXJA3sbgAXtfFc9gIKWF4U4gKku-XAqk", @@ -1256,6 +1320,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kVkMotNBbFuy4Ky2M1yxjFjYs4Ll7VXIw", @@ -1275,6 +1340,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lgVCG10ZBWEcJ_acmecScmSbeEfO9BoR0", @@ -1294,6 +1360,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n_goavyhecaj4JOjSN-fWLxKmgZli6kj4", @@ -1313,6 +1380,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n2cB9bcNdoboeec971YTzpvg3XUI0hyQg", @@ -1332,6 +1400,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nuMpvdFFPBATWGBB1IQEokh8u3jELKnSc", @@ -1351,6 +1420,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kGHYAi69KWgIEaGH9-sYOJKbvhuUovJUM", @@ -1370,6 +1440,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nqJYWLG-6JPxCiMl10it5PbHU7cc-K4OQ", @@ -1389,6 +1460,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mfut9V_o1n9nVG_m5yZ3ztCif29AHUffI", @@ -1408,6 +1480,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), ], ), @@ -1433,6 +1506,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY", @@ -1452,6 +1526,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mSaYvcoVvag_GrAc593WX3MoxTLvUXYT8", @@ -1471,6 +1546,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg", @@ -1490,6 +1566,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208", @@ -1509,6 +1586,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m0X_CFV7sbR3EKDoP_FvqyK5faV7xorUY", @@ -1528,6 +1606,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mkG6Cj4VqXPmlYf3xbLQQhhAZHGI8vJHo", @@ -1547,6 +1626,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m7I7OhxMQp4dAK2AKvrEoiNmrIDnAX5Z8", @@ -1566,6 +1646,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mdwsZFtQhJyGQPuQA612VoRPXp-OJfzx8", @@ -1585,6 +1666,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n_0vMGj-9WtHuj2fbdwMGsSxL_7qglBCI", @@ -1604,6 +1686,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m6XXtQxtjnB5lr_FhgBANwp7mHKY5Yoik", @@ -1623,6 +1706,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_k3dazOzqqDagSIBhGET4VrDKHS9dEjXPA", @@ -1642,6 +1726,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m6-fOiMxDip-4p9uD4lhzm3I9WMCSTy_Y", @@ -1661,6 +1746,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_njvsGKIUycy_a4h7zTS8upbKhHcMVzHFM", @@ -1680,6 +1766,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mwJztsnautpobBg-95AVJ_xd5Gnb5DV-w", @@ -1699,6 +1786,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mwxGoOtv8258D3gdLZ0i0clri0O1-MhKU", @@ -1718,6 +1806,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kZV9OCuNPSp11tslT5Qu0NVG3WR8xGo_A", @@ -1737,6 +1826,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kM1mWVww71EGtfZYJFhqoT7gYHbWFT8ok", @@ -1756,6 +1846,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_k5psGic7w1Z8Udh8rwqpoKxqznjhq8p54", @@ -1775,6 +1866,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lzZ2FTtItPTnWXpdiYpNyiH5_xIXf17q8", @@ -1794,6 +1886,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kFQXdnqMaQCVx2wpUM4ZfbsGCDibZtkJk", @@ -1813,6 +1906,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n8Hg9csbDQCPDH-PKmWZmKVG_oMgvrozY", @@ -1832,6 +1926,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n_goavyhecaj4JOjSN-fWLxKmgZli6kj4", @@ -1851,6 +1946,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kYbdnA_dQD1WGAj0jvmEdm8cduRDmHKXw", @@ -1870,6 +1966,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nOQfhuQ-yKUIAFqFyxJ-M7vGfwcEg257U", @@ -1889,6 +1986,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lp8LtelM9GiSwRFGGQjctKaGoHcrgQVEU", @@ -1908,6 +2006,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n6KBAnIl1BQJyOFJURESNO3BgsVttpwZM", @@ -1927,6 +2026,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nuMpvdFFPBATWGBB1IQEokh8u3jELKnSc", @@ -1946,6 +2046,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), ], ), @@ -1971,6 +2072,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mSaYvcoVvag_GrAc593WX3MoxTLvUXYT8", @@ -1990,6 +2092,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_k2csipDOuQwX6-GGZd4ys5MM5bueEqkrE", @@ -2009,6 +2112,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kIMj6ScYWghk2sQarkFf0gLcAYL7bFKNs", @@ -2028,6 +2132,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l2OjbOL4oVkkHE86UT6oQCNufuv8d0luQ", @@ -2047,6 +2152,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nNaRgDdtxqig84vFR4hHMYsCXRZpUbfNE", @@ -2066,6 +2172,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_ntOL7kXTRxvIvmIsrYzKQ_MEpBdIywpQc", @@ -2085,6 +2192,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kABC3nlv35ioOf0D9mih-37tNip6SWre8", @@ -2104,6 +2212,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_ldooV6iHaoPy6VKyVuHDq0DT4lh-3tRqQ", @@ -2123,6 +2232,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_neriXH6JbZPr7Pf4LOi5bGQP-_lWRZXs4", @@ -2142,6 +2252,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_ldLj_raotpFCQGWiQ7L-Ag5GTbGOyjgRY", @@ -2161,6 +2272,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kL57PLcOmExjhzqGfGhvA82ZWe4fPH2c4", @@ -2180,6 +2292,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lbcexX19-ShfMgzXpxayVFh_9l4Dml-kg", @@ -2199,6 +2312,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lQ2iiRFCsEvoxLRfTCOyVd6-tdZ75Gw-E", @@ -2218,6 +2332,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_k0oJ5JQqsSSQQvYS8xzcAh29CFryqs0mc", @@ -2237,6 +2352,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nZJzoZEBYRptA2XXskbxGTvKkevapT_F4", @@ -2256,6 +2372,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mS5x3haS3YiflmBHa8rK0rOZHgn0lhG0w", @@ -2275,6 +2392,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m9YprJ504SUVUWr1oygQy6p-lV8N11BZw", @@ -2294,6 +2412,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l7nE3iR6eJpMdU08uxoNBJ7QenxwqfY0E", @@ -2313,6 +2432,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nBOvRANXhyfsK6oGe_wTHNwOW-0kSMB8w", @@ -2332,6 +2452,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kGcITlIUh14Xy7FgqGiLtEJtKoDax4TkI", @@ -2351,6 +2472,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nA42_0IX0YmeKb7pLRjm_J8e2ja445Urc", @@ -2370,6 +2492,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_li40oRtkZfR06nf8rRzgRMraDx764TEN0", @@ -2389,6 +2512,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n8797v38N8JhZdT2JJtlM0OfIpgkJ3Mkk", @@ -2408,6 +2532,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kL7seJinYAVpulQQbre887jeaIDkrnAg0", @@ -2427,6 +2552,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nPaBlmfKLPFyzWF0NeUzb9XhJwpWT5p1I", @@ -2446,6 +2572,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n925kJbsm33edgD15CyXEfRTo55todVsA", @@ -2465,6 +2592,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mbiV5Yf70rsze2fxgIqK9k2Gi1sl-MOGM", @@ -2484,6 +2612,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_np_soSTj6w3-N7Dh_xmdDpQINJ8LsVpa8", @@ -2503,6 +2632,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_ndAJusuZt_EEyDuPpzowQuzA8Nxa8znjg", @@ -2522,6 +2652,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), ], ), @@ -2547,6 +2678,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lUrzaYWnJvQv7UqkwbYLo9K_Qbui6WDgo", @@ -2566,6 +2698,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_numlg5dOsSbU-usYF_TV8qVNFoqpmH9JQ", @@ -2585,6 +2718,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mPolD_J22gS1SKxufARWcTZd1UrAH_0ZI", @@ -2604,6 +2738,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nzABe7CwJJ6FpItwp1LJHEejR40FtA_Q4", @@ -2623,6 +2758,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_k6B0CcfHO04oWPAyUVlO96Vvmg_pB62JM", @@ -2642,6 +2778,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nxZ3Bp0gO6_Wkb3bp9jESFoOz6bANXw4s", @@ -2661,6 +2798,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_md9QGmtE2Pn3CLaFPcx9AhVuY7CmE2yes", @@ -2680,6 +2818,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l7nE3iR6eJpMdU08uxoNBJ7QenxwqfY0E", @@ -2699,6 +2838,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lRr2S1Nmk-a4qeSFpU0WoLuVETphGyBP8", @@ -2718,6 +2858,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_n2MRgJm8KVbRLo9wpqSGGX8CQ8rLCRsWg", @@ -2737,6 +2878,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nzmeshclfyjDbrCByeUO-eUMHkJXhng24", @@ -2756,6 +2898,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lXqRFBeZCG_1Ad3Ft-xMG1a9FtKQ8cRPw", @@ -2775,6 +2918,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l8gRf-W7IZq0qHUkIiTiMvztkfkR-Q1lU", @@ -2794,6 +2938,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_ktzVJ8SgCbgResFgUTEh-O1fdH6I1rxpc", @@ -2813,6 +2958,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kZV9OCuNPSp11tslT5Qu0NVG3WR8xGo_A", @@ -2832,6 +2978,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_k5psGic7w1Z8Udh8rwqpoKxqznjhq8p54", @@ -2851,6 +2998,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lWfuEE9muOjxNxKnvVL_KZOhsMG7-FxMI", @@ -2870,6 +3018,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_ktkqrgIqlP46yBkUsZp4go2j59McnSsYY", @@ -2889,6 +3038,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lj8WgXzQp-w_OOYhMJa-uiJguZ0Ns24T8", @@ -2908,6 +3058,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mNQPs8vK3N-dqpxN_F70pJ9d49yySQlGo", @@ -2927,6 +3078,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lI3mWWg29472FBEmVBs_hT8-nsZ7_xHGk", @@ -2946,6 +3098,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lxBOrv0RrMMVEmV0Gl9gDBPH0JYC1_j24", @@ -2965,6 +3118,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lDmrvWsJapdRC-uQzUdJmc1tPWB-jkzRM", @@ -2984,6 +3138,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nEDPWN4j2CGw8jzkzrTmVdBNaWgmkNnXU", @@ -3003,6 +3158,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mzqnNfqauo3uVsMNcIJ8lAezCl85zJqds", @@ -3022,6 +3178,7 @@ MusicGenre( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), ], ), diff --git a/src/client/snapshots/rustypipe__client__music_new__tests__map_music_new_albums_default.snap b/src/client/snapshots/rustypipe__client__music_new__tests__map_music_new_albums_default.snap index a545850..46ec7d7 100644 --- a/src/client/snapshots/rustypipe__client__music_new__tests__map_music_new_albums_default.snap +++ b/src/client/snapshots/rustypipe__client__music_new__tests__map_music_new_albums_default.snap @@ -25,7 +25,7 @@ expression: map_res.c ), ], artist_id: Some("UClHxZy_9ArA6rploIzcDReQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -51,7 +51,7 @@ expression: map_res.c ), ], artist_id: Some("UCa7FGSUsN2wNRUclibmicMg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -77,7 +77,7 @@ expression: map_res.c ), ], artist_id: Some("UCRD-INDaHvHlO8K_33uKetQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -107,7 +107,7 @@ expression: map_res.c ), ], artist_id: Some("UCFrNQgyEQz5fRIW90uqP7rw"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -133,7 +133,7 @@ expression: map_res.c ), ], artist_id: Some("UCzrpaSWxEkjeKfoSR2L7OzQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -163,7 +163,7 @@ expression: map_res.c ), ], artist_id: Some("UCXnN-eHLEDBJKjV12WzfYMw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -189,7 +189,7 @@ expression: map_res.c ), ], artist_id: Some("UC0_KSKflVDkoLYKg4vNGO1A"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -219,7 +219,7 @@ expression: map_res.c ), ], artist_id: Some("UCc_iRXEpehN-dDTkPLoBjZg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -245,7 +245,7 @@ expression: map_res.c ), ], artist_id: Some("UCpVPM62RMcDpjmXacKIEosg"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -271,7 +271,7 @@ expression: map_res.c ), ], artist_id: Some("UCs6GGpd9zvsYghuYe0VDFUQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -297,7 +297,7 @@ expression: map_res.c ), ], artist_id: Some("UCg3M7Pk71xLoQ7rfeGYfzUw"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -327,7 +327,7 @@ expression: map_res.c ), ], artist_id: Some("UCgpBsaDW2n_6ruzht3wvP0A"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -353,7 +353,7 @@ expression: map_res.c ), ], artist_id: Some("UCjQ_EknxA-PSdgzXvKpCKYg"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -379,7 +379,7 @@ expression: map_res.c ), ], artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -405,7 +405,7 @@ expression: map_res.c ), ], artist_id: Some("UCOPDRGEfpw2kmMypQz-iW8Q"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -431,7 +431,7 @@ expression: map_res.c ), ], artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -457,7 +457,7 @@ expression: map_res.c ), ], artist_id: Some("UCAqZTXTRBQMyK73Zlq5n0eQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -483,7 +483,7 @@ expression: map_res.c ), ], artist_id: Some("UC4gi504gkSyoXt9vfaGUr9A"), - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -509,7 +509,7 @@ expression: map_res.c ), ], artist_id: Some("UC90P3pg6Sa2cqHxdXrVPorQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -535,7 +535,7 @@ expression: map_res.c ), ], artist_id: Some("UCtBk1TIUH15p2pJvKFtPjgA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -561,7 +561,7 @@ expression: map_res.c ), ], artist_id: Some("UCizMcrm1SSYA-Gascg05S4g"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -587,7 +587,7 @@ expression: map_res.c ), ], artist_id: Some("UCxpEXfdz8GpczOZ8axPLApg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -613,7 +613,7 @@ expression: map_res.c ), ], artist_id: Some("UC1T4LYUer48KhKlrru13kUg"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -639,7 +639,7 @@ expression: map_res.c ), ], artist_id: Some("UCccQ2_F-L5EQo6wEdqBkxHA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -665,7 +665,7 @@ expression: map_res.c ), ], artist_id: Some("UCE7DD2CgO3MFCsGQyiWYe-w"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -699,7 +699,7 @@ expression: map_res.c ), ], artist_id: Some("UCsPz48w0M3QUEGAiDP1x17w"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -725,7 +725,7 @@ expression: map_res.c ), ], artist_id: Some("UC_PsyV7331J1aX4368v10pw"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -755,7 +755,7 @@ expression: map_res.c ), ], artist_id: Some("UC-fLJhhYstbX8ns-mYKsH_Q"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -781,7 +781,7 @@ expression: map_res.c ), ], artist_id: Some("UCRsN329XrgDGxuYnxXZQiOQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -811,7 +811,7 @@ expression: map_res.c ), ], artist_id: Some("UCzFoNWzy9myd8p68utSdqow"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -837,7 +837,7 @@ expression: map_res.c ), ], artist_id: Some("UCD4XPfsYpY2h-5qQiKL8gEw"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -863,7 +863,7 @@ expression: map_res.c ), ], artist_id: Some("UCaXJEi-wOOVe2eZZHzyz4mQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -889,7 +889,7 @@ expression: map_res.c ), ], artist_id: Some("UCBzD5ci0CGt_ZhKJw4aZhaQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -923,7 +923,7 @@ expression: map_res.c ), ], artist_id: Some("UCdbasYA6lUSImvxdqS1RuZQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -949,7 +949,7 @@ expression: map_res.c ), ], artist_id: Some("UCCtxJeSaG4jEX-dt3dwx48A"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -975,7 +975,7 @@ expression: map_res.c ), ], artist_id: Some("UCXDcGa1H1axtr1wkxOR3hZQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -1001,7 +1001,7 @@ expression: map_res.c ), ], artist_id: Some("UCqTaQGqjAI6fYkr84KZgZEg"), - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -1027,7 +1027,7 @@ expression: map_res.c ), ], artist_id: Some("UCeCsfhcY09c-UvX7DkQDcUw"), - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -1053,7 +1053,7 @@ expression: map_res.c ), ], artist_id: Some("UCMHHDXMvnMKRzuEKtMe8ZRA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -1083,7 +1083,7 @@ expression: map_res.c ), ], artist_id: Some("UCoOFEu6s0wk7CUljMh8wisw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1109,7 +1109,7 @@ expression: map_res.c ), ], artist_id: Some("UCkUheY8pKWamT7BLzQSBzEQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -1135,7 +1135,7 @@ expression: map_res.c ), ], artist_id: Some("UC281fR3Rg1O08xpxArdbdew"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1165,7 +1165,7 @@ expression: map_res.c ), ], artist_id: Some("UC6JhadLTf6g6f-ZdeEaAqBQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -1191,7 +1191,7 @@ expression: map_res.c ), ], artist_id: Some("UClHxZy_9ArA6rploIzcDReQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1217,7 +1217,7 @@ expression: map_res.c ), ], artist_id: Some("UCMlwPZO5rmB_v_ndvZ_fTPQ"), - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -1251,7 +1251,7 @@ expression: map_res.c ), ], artist_id: Some("UCQCDX-NwtNYXcRaVRCmIZKw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1277,7 +1277,7 @@ expression: map_res.c ), ], artist_id: Some("UCI1oAsRUrmEG3J4Bj9c6ORw"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -1303,7 +1303,7 @@ expression: map_res.c ), ], artist_id: Some("UCDPnXJIiNwEtXqi1qyLbj0w"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1329,7 +1329,7 @@ expression: map_res.c ), ], artist_id: Some("UCExSlmVhYeJca_Jjl52zFcw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1355,7 +1355,7 @@ expression: map_res.c ), ], artist_id: Some("UCDbLC4CaZzi4jt5KyAF0ZQw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1381,7 +1381,7 @@ expression: map_res.c ), ], artist_id: Some("UC4aep5QQu4CC9sfgovVcffQ"), - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -1411,7 +1411,7 @@ expression: map_res.c ), ], artist_id: Some("UCAeLFBCQS7FvI8PvBrWvSBg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1437,7 +1437,7 @@ expression: map_res.c ), ], artist_id: Some("UC7qLvzWBYKOiO1Xw3EAgg4w"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1467,7 +1467,7 @@ expression: map_res.c ), ], artist_id: Some("UC87-yfmlLTjCf4TnUQ8bWgA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1493,7 +1493,7 @@ expression: map_res.c ), ], artist_id: Some("UC5uhzuItRbptRuvZdFd15yw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1519,7 +1519,7 @@ expression: map_res.c ), ], artist_id: Some("UC2FbxmIdK0UIt2V3phUQg5Q"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1545,7 +1545,7 @@ expression: map_res.c ), ], artist_id: Some("UCkTzRJf2nUfzwgi6KuIiggg"), - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -1571,7 +1571,7 @@ expression: map_res.c ), ], artist_id: Some("UCrSorX845CEWXzU4Z7BojjA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1601,7 +1601,7 @@ expression: map_res.c ), ], artist_id: Some("UCiBODJaGfd1aBHE7BF_Iv7w"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1627,7 +1627,7 @@ expression: map_res.c ), ], artist_id: Some("UClIoHK6CtwuMQCEd0n0bOxQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1653,7 +1653,7 @@ expression: map_res.c ), ], artist_id: Some("UC1JrQ9TyOAcXdcDa2Jx3SCQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1679,7 +1679,7 @@ expression: map_res.c ), ], artist_id: Some("UCqZPGciX12nh1yiWGfrw8lg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1705,7 +1705,7 @@ expression: map_res.c ), ], artist_id: Some("UCY2f-ZnXFcL6vjtVr0ELzxA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1739,7 +1739,7 @@ expression: map_res.c ), ], artist_id: Some("UCHUPrayXP0esjzq4Dcvn1NA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1765,7 +1765,7 @@ expression: map_res.c ), ], artist_id: Some("UCwrvM6h3SUIk2Wo63ySfLNQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1791,7 +1791,7 @@ expression: map_res.c ), ], artist_id: Some("UCWN8EUD00PTyo5QQ5ueRr-A"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -1817,7 +1817,7 @@ expression: map_res.c ), ], artist_id: Some("UCo4CrqhIV_tSOGdDWfVyCsg"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -1843,7 +1843,7 @@ expression: map_res.c ), ], artist_id: Some("UCp1Rxq0nIVoeljRfJn8yKbg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1869,7 +1869,7 @@ expression: map_res.c ), ], artist_id: Some("UCK2ZLsY9Mb_dxZiZfKE3lGg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1899,7 +1899,7 @@ expression: map_res.c ), ], artist_id: None, - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1929,7 +1929,7 @@ expression: map_res.c ), ], artist_id: Some("UCn9i4cdLe14CbsOycTbKMoA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1955,7 +1955,7 @@ expression: map_res.c ), ], artist_id: Some("UCd-REfvSbRwndM82NWDJ_qg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -1981,7 +1981,7 @@ expression: map_res.c ), ], artist_id: Some("UCfCNL5oajlQBAlyjWv1ChVw"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2011,7 +2011,7 @@ expression: map_res.c ), ], artist_id: Some("UCUfYDPYsR_AVR8cvcIB_YDA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2045,7 +2045,7 @@ expression: map_res.c ), ], artist_id: Some("UC3VBeY60GWWpe3w8b4QWDYQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2071,7 +2071,7 @@ expression: map_res.c ), ], artist_id: Some("UCKGnuwghxYaf_KIXzK7ATIA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2105,7 +2105,7 @@ expression: map_res.c ), ], artist_id: Some("UCTTcTeAszDGxALRSMkJH9FQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2131,7 +2131,7 @@ expression: map_res.c ), ], artist_id: Some("UCobgi-0C_8rBLNuMleLNUKQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2157,7 +2157,7 @@ expression: map_res.c ), ], artist_id: Some("UCNYhhkQqeFLUc-YEDcLpSYQ"), - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -2183,7 +2183,7 @@ expression: map_res.c ), ], artist_id: Some("UCEPMVbUzImPl4p8k4LkGevA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2209,7 +2209,7 @@ expression: map_res.c ), ], artist_id: Some("UC4D9yS9Pa7EdpcCHfd8gAiw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2243,7 +2243,7 @@ expression: map_res.c ), ], artist_id: Some("UCjpBcfMn2g8afa3XIZmS3mw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2269,7 +2269,7 @@ expression: map_res.c ), ], artist_id: Some("UChUTaY5E47rD4njRw7jnYWA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2299,7 +2299,7 @@ expression: map_res.c ), ], artist_id: Some("UC4vOKBROawrqTT4sSdNNIEQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2325,7 +2325,7 @@ expression: map_res.c ), ], artist_id: Some("UCmir5ihSc8-9nRcKJjFLpLQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2351,7 +2351,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2377,7 +2377,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2403,7 +2403,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2429,7 +2429,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2455,7 +2455,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2481,7 +2481,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2507,7 +2507,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2533,7 +2533,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2559,7 +2559,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2585,7 +2585,7 @@ expression: map_res.c ), ], artist_id: Some("UCgS5mGElzt2UvcWAZhxd7Jg"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2615,7 +2615,7 @@ expression: map_res.c ), ], artist_id: Some("UCdwyRvg87lMQlZ7A5HXlAXQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2641,7 +2641,7 @@ expression: map_res.c ), ], artist_id: Some("UCJMzvcg3QxvaTKfpaj57TyA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2667,7 +2667,7 @@ expression: map_res.c ), ], artist_id: Some("UCanUjmTDohFr8OMpfk5xWBQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2693,7 +2693,7 @@ expression: map_res.c ), ], artist_id: Some("UCvsCS3G5AHUPBwJrX69VdOw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2719,7 +2719,7 @@ expression: map_res.c ), ], artist_id: Some("UCmM8X1eVACcgB6LxVMqTMeQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2745,7 +2745,7 @@ expression: map_res.c ), ], artist_id: Some("UCPRysewl9FiinLnzA9SMULw"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -2779,7 +2779,7 @@ expression: map_res.c ), ], artist_id: Some("UCMXEXLCy9nNjykl0sxlzz0w"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2805,7 +2805,7 @@ expression: map_res.c ), ], artist_id: Some("UCqy_XhL-yur1zdHeKTRDB5g"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2831,7 +2831,7 @@ expression: map_res.c ), ], artist_id: Some("UCJDDeY50cfuDeivwBFZVxLw"), - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -2857,7 +2857,7 @@ expression: map_res.c ), ], artist_id: Some("UCNAbUat5xDtp6FeBphe2V_Q"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2887,7 +2887,7 @@ expression: map_res.c ), ], artist_id: Some("UCEpSzaxLXatwXlujpF-neQg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2913,7 +2913,7 @@ expression: map_res.c ), ], artist_id: Some("UCHhV79vwD5W4UZJdJPGE1DQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2939,7 +2939,7 @@ expression: map_res.c ), ], artist_id: Some("UClWYTAbTNH9p80shT8yPHqg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -2973,7 +2973,7 @@ expression: map_res.c ), ], artist_id: Some("UCdchfYz_9BJz7htrmiCWSOg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3007,7 +3007,7 @@ expression: map_res.c ), ], artist_id: None, - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3033,7 +3033,7 @@ expression: map_res.c ), ], artist_id: Some("UCaSeNTljGkpoj1ijhs72nag"), - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -3063,7 +3063,7 @@ expression: map_res.c ), ], artist_id: Some("UCUSr-73IZLwrjOozma9Ad_w"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3089,7 +3089,7 @@ expression: map_res.c ), ], artist_id: Some("UC-TDzpXxJndgBvyX4dZXVzA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3115,7 +3115,7 @@ expression: map_res.c ), ], artist_id: Some("UCC30L98-rMHfY5PJ46duOPg"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3141,7 +3141,7 @@ expression: map_res.c ), ], artist_id: Some("UC5rkoI4r3QaSK1gKMxjqmig"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3171,7 +3171,7 @@ expression: map_res.c ), ], artist_id: Some("UC-pOuHFcndLpyfWSPVqXt_A"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3205,7 +3205,7 @@ expression: map_res.c ), ], artist_id: Some("UCyeThGzVYx1MbxUGgIkj3iQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3239,7 +3239,7 @@ expression: map_res.c ), ], artist_id: Some("UCUAvCvdLFoPItXgjYy0P7CQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3265,7 +3265,7 @@ expression: map_res.c ), ], artist_id: Some("UCFsLMFP9I8tqxnZZNGKfPow"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3295,7 +3295,7 @@ expression: map_res.c ), ], artist_id: Some("UCsfPXoStha2wqN8hB9dFR2g"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3321,7 +3321,7 @@ expression: map_res.c ), ], artist_id: Some("UCSTEV2xPTlynyEZ3QbbVB5w"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3351,7 +3351,7 @@ expression: map_res.c ), ], artist_id: Some("UCpXP9-cHlJCMapSYCSZThbw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3377,7 +3377,7 @@ expression: map_res.c ), ], artist_id: Some("UCmBSyM3ScU07ecv8w8dWvIQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3407,7 +3407,7 @@ expression: map_res.c ), ], artist_id: Some("UC8JxlMZ9VPddCuQGwB49fYg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3433,7 +3433,7 @@ expression: map_res.c ), ], artist_id: Some("UC84f7RfWO0kppDO8gbWUPhA"), - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -3459,7 +3459,7 @@ expression: map_res.c ), ], artist_id: Some("UCTL5jJqSn3tNkk1q3Nrl3gA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3485,7 +3485,7 @@ expression: map_res.c ), ], artist_id: Some("UCpvDuL_5kV0teEg2QtbaAWw"), - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -3511,7 +3511,7 @@ expression: map_res.c ), ], artist_id: Some("UCpgBROkXWpGzEMXnz0LGHbg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3537,7 +3537,7 @@ expression: map_res.c ), ], artist_id: Some("UCsvnoEFghphdrpWIsK6wqDg"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3563,7 +3563,7 @@ expression: map_res.c ), ], artist_id: Some("UC1LmxpB0f-eVMB7X_9ziTVg"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3589,7 +3589,7 @@ expression: map_res.c ), ], artist_id: Some("UCiY3z8HAGD6BlSNKVn2kSvQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3615,7 +3615,7 @@ expression: map_res.c ), ], artist_id: Some("UC0Fpo5Sndk_WLcHAMXeJDPQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3645,7 +3645,7 @@ expression: map_res.c ), ], artist_id: Some("UCW7eCgFY16p3tWesVwfC1yA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3675,7 +3675,7 @@ expression: map_res.c ), ], artist_id: Some("UC5RhS3EM_CYfIL0LYWveDrA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3701,7 +3701,7 @@ expression: map_res.c ), ], artist_id: Some("UCAkTuOHJleyE4lk-n_taf9A"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3727,7 +3727,7 @@ expression: map_res.c ), ], artist_id: Some("UCmAgTXAlnckJJBFmqYlHnNA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3753,7 +3753,7 @@ expression: map_res.c ), ], artist_id: Some("UCFTcSVPYRWlDoHisR-ZKwgw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3787,7 +3787,7 @@ expression: map_res.c ), ], artist_id: Some("UCQTiCJddISPD9BwAq4wWrsw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3813,7 +3813,7 @@ expression: map_res.c ), ], artist_id: Some("UC-g1V9YrA8Fg13BwcG_W-4g"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3839,7 +3839,7 @@ expression: map_res.c ), ], artist_id: Some("UCsagRjawwvj9-bybPFt5d-w"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -3865,7 +3865,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3891,7 +3891,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3917,7 +3917,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3943,7 +3943,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3969,7 +3969,7 @@ expression: map_res.c ), ], artist_id: Some("UCa71Sv2jz9HbGkd66WXvEeA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -3995,7 +3995,7 @@ expression: map_res.c ), ], artist_id: Some("UCx8wewQwEdHFWPf7TYwAGvA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4021,7 +4021,7 @@ expression: map_res.c ), ], artist_id: Some("UC-ne4DOpdAkBqXhFGRcI7xw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4051,7 +4051,7 @@ expression: map_res.c ), ], artist_id: Some("UCdSgOgQ0WtelXBMKF3tDsqg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4077,7 +4077,7 @@ expression: map_res.c ), ], artist_id: Some("UCQOiZrSMNwNiyLH2fNqNYNw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4103,7 +4103,7 @@ expression: map_res.c ), ], artist_id: Some("UC0zbzp6x7zR8u0LhanNWFyw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4129,7 +4129,7 @@ expression: map_res.c ), ], artist_id: Some("UCKEFjh4JL-OyMI8z3h5Coaw"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4155,7 +4155,7 @@ expression: map_res.c ), ], artist_id: Some("UCcZVM-P7y-p4wUkro4YZHCg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4181,7 +4181,7 @@ expression: map_res.c ), ], artist_id: Some("UCNIV5B_aJnLrKDSnW_MOmcQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4207,7 +4207,7 @@ expression: map_res.c ), ], artist_id: Some("UC4XHSTHLOwFvFiZj4gFqMsA"), - album_type: Ep, + album_type: ep, year: None, by_va: false, ), @@ -4237,7 +4237,7 @@ expression: map_res.c ), ], artist_id: Some("UCKh0FImZMYvIZHzMSlbschg"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4263,7 +4263,7 @@ expression: map_res.c ), ], artist_id: Some("UCrSq-XRASp4clbiECIzD09g"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4297,7 +4297,7 @@ expression: map_res.c ), ], artist_id: Some("UCGwa7ZUGHL9pisTwM1rUIRQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4323,7 +4323,7 @@ expression: map_res.c ), ], artist_id: Some("UCTrIOPtBeAN2E0R-sgU9JxA"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4349,7 +4349,7 @@ expression: map_res.c ), ], artist_id: Some("UCc6C8g9N1gfQfB1ebDG_3ww"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4379,7 +4379,7 @@ expression: map_res.c ), ], artist_id: None, - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4405,7 +4405,7 @@ expression: map_res.c ), ], artist_id: Some("UCAz_-i_z6Rf66dYop52ElSA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4435,7 +4435,7 @@ expression: map_res.c ), ], artist_id: Some("UCK0E138ftvcNWus81A4zQ2A"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4461,7 +4461,7 @@ expression: map_res.c ), ], artist_id: Some("UCeXYHFfN53Bw_4dbPLlJgrA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4487,7 +4487,7 @@ expression: map_res.c ), ], artist_id: Some("UCywFOWItbhJH6oZadxC2VkQ"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4517,7 +4517,7 @@ expression: map_res.c ), ], artist_id: Some("UC74paQc9elYMxQKL8gpT1ow"), - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4547,7 +4547,7 @@ expression: map_res.c ), ], artist_id: None, - album_type: Single, + album_type: single, year: None, by_va: false, ), @@ -4573,7 +4573,7 @@ expression: map_res.c ), ], artist_id: Some("UCV8SUfLumnpfd-Wa_i7B2Zw"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4599,7 +4599,7 @@ expression: map_res.c ), ], artist_id: Some("UCYW1nL0TZhQVLbS6KATqtig"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4629,7 +4629,7 @@ expression: map_res.c ), ], artist_id: Some("UC13ToEQgfmTe8_GW19LYtCg"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4655,7 +4655,7 @@ expression: map_res.c ), ], artist_id: Some("UCWJKJhxr3a6P_z34eb7rmFw"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4681,7 +4681,7 @@ expression: map_res.c ), ], artist_id: Some("UCfjHG2KXoUrByv8MCSf6-LA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4707,7 +4707,7 @@ expression: map_res.c ), ], artist_id: Some("UCy0W7pwUVNzrLVmIEKTkNSQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4733,7 +4733,7 @@ expression: map_res.c ), ], artist_id: Some("UCXJscayh5BT8m2ZVFQSdeVw"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4763,7 +4763,7 @@ expression: map_res.c ), ], artist_id: Some("UCwEeCuFQo7gH6dcMeNnLg1A"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4789,7 +4789,7 @@ expression: map_res.c ), ], artist_id: Some("UCn81HiOrP7OO3SkdGvR6HPA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4815,7 +4815,7 @@ expression: map_res.c ), ], artist_id: Some("UCnL5ZocATjKZZ3IH_DXODkw"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4841,7 +4841,7 @@ expression: map_res.c ), ], artist_id: Some("UCzB2BJ-eZel88EH4IUZATrA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4867,7 +4867,7 @@ expression: map_res.c ), ], artist_id: Some("UCFwFmMRTIVhsUtdudux_p4w"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4893,7 +4893,7 @@ expression: map_res.c ), ], artist_id: Some("UCuMHq8jMRZXpUxSGLBuCa9g"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4919,7 +4919,7 @@ expression: map_res.c ), ], artist_id: Some("UCNWORQud7YePhTxexu1qRFg"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4945,7 +4945,7 @@ expression: map_res.c ), ], artist_id: Some("UCighp0MtP4WdjnNJQtrTiJQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4971,7 +4971,7 @@ expression: map_res.c ), ], artist_id: Some("UCN2OwEXNYJFzgHvR7912Btg"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -4997,7 +4997,7 @@ expression: map_res.c ), ], artist_id: Some("UCLUW0Kr_w2nG0mv8q_qamxQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5023,7 +5023,7 @@ expression: map_res.c ), ], artist_id: Some("UCfTUgzPRMoYWYjrwS5BgWfA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5049,7 +5049,7 @@ expression: map_res.c ), ], artist_id: Some("UCv83kiz_XGb4rfO0CXxzn5A"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5075,7 +5075,7 @@ expression: map_res.c ), ], artist_id: Some("UCGknzG6-_Eh_jm_GcNkkYrQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5101,7 +5101,7 @@ expression: map_res.c ), ], artist_id: Some("UCGyvS9Y1RU6CeTW78bltfjA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5139,7 +5139,7 @@ expression: map_res.c ), ], artist_id: Some("UCtJe0RYzgPddQXKtWduxz_w"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5165,7 +5165,7 @@ expression: map_res.c ), ], artist_id: Some("UCXNUMUQfREjoyzhxcXqpvGg"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5191,7 +5191,7 @@ expression: map_res.c ), ], artist_id: Some("UCAbByxN5lRm8SIkq3YYVuYQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5217,7 +5217,7 @@ expression: map_res.c ), ], artist_id: Some("UCI6B8NkZKqlFWoiC_xE-hzA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5243,7 +5243,7 @@ expression: map_res.c ), ], artist_id: Some("UC2ISePqOr39OQ90kNN1WLjA"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5273,7 +5273,7 @@ expression: map_res.c ), ], artist_id: Some("UCQd9dydn5gaib_uuVVkYZTQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5299,7 +5299,7 @@ expression: map_res.c ), ], artist_id: Some("UCbZKeXFPMh2lTPwOUDiHAAg"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5325,7 +5325,7 @@ expression: map_res.c ), ], artist_id: Some("UCZ_J_0XGC5hkOt7W3eEMVUQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5351,7 +5351,7 @@ expression: map_res.c ), ], artist_id: Some("UCgZdvpUfbbUiqJ6UvAdM7EQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5377,7 +5377,7 @@ expression: map_res.c ), ], artist_id: Some("UCBhSdacVokJLmtqxH-TrIig"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5403,7 +5403,7 @@ expression: map_res.c ), ], artist_id: Some("UCsNH8wD_AZXHnOlLKsV6KsQ"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5429,7 +5429,7 @@ expression: map_res.c ), ], artist_id: Some("UCXbHzF6K7-9KnfT69_tdMSw"), - album_type: Album, + album_type: album, year: None, by_va: false, ), @@ -5455,7 +5455,7 @@ expression: map_res.c ), ], artist_id: Some("UCZM3bF24BS-qDMe0OigpeZw"), - album_type: Album, + album_type: album, year: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_new__tests__map_music_new_videos_default.snap b/src/client/snapshots/rustypipe__client__music_new__tests__map_music_new_videos_default.snap index 393c387..0702ea3 100644 --- a/src/client/snapshots/rustypipe__client__music_new__tests__map_music_new_videos_default.snap +++ b/src/client/snapshots/rustypipe__client__music_new__tests__map_music_new_videos_default.snap @@ -28,7 +28,7 @@ expression: map_res.c artist_id: Some("UCs6GGpd9zvsYghuYe0VDFUQ"), album: None, view_count: Some(8600000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -57,7 +57,7 @@ expression: map_res.c artist_id: Some("UCicJjripVxiTXbUfociVZwQ"), album: None, view_count: Some(244000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -86,7 +86,7 @@ expression: map_res.c artist_id: Some("UCuO5r4J0jTrgRYnmfEOd3UQ"), album: None, view_count: Some(314000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -115,7 +115,7 @@ expression: map_res.c artist_id: Some("UC4gi504gkSyoXt9vfaGUr9A"), album: None, view_count: Some(265000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -144,7 +144,7 @@ expression: map_res.c artist_id: Some("UCsN8M73DMWa8SPp5o_0IAQQ"), album: None, view_count: Some(47000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -173,7 +173,7 @@ expression: map_res.c artist_id: Some("UCc_iRXEpehN-dDTkPLoBjZg"), album: None, view_count: Some(225000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -210,7 +210,7 @@ expression: map_res.c artist_id: Some("UCsPz48w0M3QUEGAiDP1x17w"), album: None, view_count: Some(124000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -239,7 +239,7 @@ expression: map_res.c artist_id: Some("UCpcTrCXblq78GZrTUTLWeBw"), album: None, view_count: Some(34000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -272,7 +272,7 @@ expression: map_res.c artist_id: Some("UCeCsfhcY09c-UvX7DkQDcUw"), album: None, view_count: Some(39000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -301,7 +301,7 @@ expression: map_res.c artist_id: Some("UCa7FGSUsN2wNRUclibmicMg"), album: None, view_count: Some(400000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_new__tests__map_music_new_videos_w_podcasts.snap b/src/client/snapshots/rustypipe__client__music_new__tests__map_music_new_videos_w_podcasts.snap index 0b7b665..3ab035d 100644 --- a/src/client/snapshots/rustypipe__client__music_new__tests__map_music_new_videos_w_podcasts.snap +++ b/src/client/snapshots/rustypipe__client__music_new__tests__map_music_new_videos_w_podcasts.snap @@ -28,7 +28,7 @@ expression: map_res.c artist_id: Some("UCl7jsog9v_M5SgdWeSEXpRA"), album: None, view_count: Some(428000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -57,7 +57,7 @@ expression: map_res.c artist_id: Some("UCtilVkO8eHizeFSs5s5vvCA"), album: None, view_count: Some(377000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -86,7 +86,7 @@ expression: map_res.c artist_id: Some("UC3i0iDG8jrpTvxgoeDoskbg"), album: None, view_count: Some(2200000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -115,7 +115,7 @@ expression: map_res.c artist_id: Some("UCtNte05ndJf0BEN3hSmVEYQ"), album: None, view_count: Some(123000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -144,7 +144,7 @@ expression: map_res.c artist_id: Some("UCLLh_wXspYOzRoOUWUCyu8A"), album: None, view_count: Some(1700000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -173,7 +173,7 @@ expression: map_res.c artist_id: Some("UCR5Q898Ou0J9eR5gQFFbExw"), album: None, view_count: Some(1000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -202,7 +202,7 @@ expression: map_res.c artist_id: Some("UCAravTV5JMlA34hSiFeLphQ"), album: None, view_count: Some(1100000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -231,7 +231,7 @@ expression: map_res.c artist_id: Some("UCqfnM1n2W4KwqeLZjm70_5w"), album: None, view_count: Some(574000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -264,7 +264,7 @@ expression: map_res.c artist_id: Some("UC2ssqTYToKpthovpsXR_V9A"), album: None, view_count: Some(531000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -293,7 +293,7 @@ expression: map_res.c artist_id: Some("UC7eTn3T3sbweHz9TJJYxoqQ"), album: None, view_count: Some(888000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -322,7 +322,7 @@ expression: map_res.c artist_id: Some("UCzt2dORSFzAiwRNUOpg1Gng"), album: None, view_count: Some(1100000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -351,7 +351,7 @@ expression: map_res.c artist_id: Some("UCS-F4K78yXD6b53lypQXVmA"), album: None, view_count: Some(625000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -380,7 +380,7 @@ expression: map_res.c artist_id: Some("UC4dqLAF7yT-_DqeYisQ001w"), album: None, view_count: Some(6400000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -409,7 +409,7 @@ expression: map_res.c artist_id: Some("UCICfl8cwTSkZ_kUZ7tLnfBw"), album: None, view_count: Some(1700000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -438,7 +438,7 @@ expression: map_res.c artist_id: Some("UCg-EvXRjoIqX6IjDB1F09XA"), album: None, view_count: Some(115000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -467,7 +467,7 @@ expression: map_res.c artist_id: Some("UCb18v2rxFjfofBw68qhdJOg"), album: None, view_count: Some(609000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -496,7 +496,7 @@ expression: map_res.c artist_id: Some("UCkBzk1A-RnBs_1OArpSeAFw"), album: None, view_count: Some(1600000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -525,7 +525,7 @@ expression: map_res.c artist_id: Some("UC8DMv_5z36X8mpS-VPATVKA"), album: None, view_count: Some(13000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -554,7 +554,7 @@ expression: map_res.c artist_id: Some("UCBNTNHPngOpC-yeC8VpAPJQ"), album: None, view_count: Some(2000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -583,7 +583,7 @@ expression: map_res.c artist_id: Some("UCX8lsVmQtu9m1l5n3KDniMw"), album: None, view_count: Some(1000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -612,7 +612,7 @@ expression: map_res.c artist_id: Some("UC8RdjfDbLzA8CYRjsi6gvgw"), album: None, view_count: Some(865000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -641,7 +641,7 @@ expression: map_res.c artist_id: Some("UCdKSviUrXNT9SjC8e-jEJQQ"), album: None, view_count: Some(14000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -670,7 +670,7 @@ expression: map_res.c artist_id: Some("UCBI6li04V1aWOFrs9jjPomQ"), album: None, view_count: Some(1600000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -699,7 +699,7 @@ expression: map_res.c artist_id: Some("UCCQBpFm05uyBgLNDMFgoBYQ"), album: None, view_count: Some(133000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -728,7 +728,7 @@ expression: map_res.c artist_id: Some("UCH37fMa51kuvqaHjQyPUbQw"), album: None, view_count: Some(2000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -757,7 +757,7 @@ expression: map_res.c artist_id: Some("UCame-clC-0couNMsqr_U21w"), album: None, view_count: Some(1100000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -790,7 +790,7 @@ expression: map_res.c artist_id: Some("UCJ2m-WpROlZCiZZID9r7NSQ"), album: None, view_count: Some(875000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -814,7 +814,7 @@ expression: map_res.c artist_id: Some("UCUApRKc5Uc-rDP2QET6eieg"), album: None, view_count: Some(44000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -843,7 +843,7 @@ expression: map_res.c artist_id: Some("UCwiGKkQcOlzMpXOc1xHFoeg"), album: None, view_count: Some(119000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -872,7 +872,7 @@ expression: map_res.c artist_id: Some("UCSZUc2vHq3Z54Lcw7UgydYQ"), album: None, view_count: Some(298000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -901,7 +901,7 @@ expression: map_res.c artist_id: Some("UCVS6hZxkuygm-EzXHxWKbJQ"), album: None, view_count: Some(2600000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -930,7 +930,7 @@ expression: map_res.c artist_id: Some("UCuxZXXFOL3K3kEFGiAnp-Kw"), album: None, view_count: Some(120000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -959,7 +959,7 @@ expression: map_res.c artist_id: Some("UCtNte05ndJf0BEN3hSmVEYQ"), album: None, view_count: Some(100000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -988,7 +988,7 @@ expression: map_res.c artist_id: Some("UC0wV8tkoYYHxuEXgcQEQ7zA"), album: None, view_count: Some(1000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1021,7 +1021,7 @@ expression: map_res.c artist_id: Some("UCEvEiysS7crVEnNAXIx77tw"), album: None, view_count: Some(587000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1050,7 +1050,7 @@ expression: map_res.c artist_id: Some("UCXHklVWUoqHEKrcaJ5JixKw"), album: None, view_count: Some(137000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1079,7 +1079,7 @@ expression: map_res.c artist_id: Some("UCn30hmDp52npfCIHHgULM7A"), album: None, view_count: Some(154000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1108,7 +1108,7 @@ expression: map_res.c artist_id: None, album: None, view_count: Some(1000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1137,7 +1137,7 @@ expression: map_res.c artist_id: None, album: None, view_count: Some(913000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1166,7 +1166,7 @@ expression: map_res.c artist_id: Some("UCoHMUugeU6PWB9ePTOV7WJw"), album: None, view_count: Some(1900000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1199,7 +1199,7 @@ expression: map_res.c artist_id: Some("UCLCR-FbVVq1GsETOtdGG-mw"), album: None, view_count: Some(681000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1228,7 +1228,7 @@ expression: map_res.c artist_id: None, album: None, view_count: Some(19000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1257,7 +1257,7 @@ expression: map_res.c artist_id: Some("UCu3WJjXqlYozV9s8sGYPySA"), album: None, view_count: Some(1700000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1286,7 +1286,7 @@ expression: map_res.c artist_id: Some("UCz51ZodJbYUNfkdPHOjJKKw"), album: None, view_count: Some(7000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1323,7 +1323,7 @@ expression: map_res.c artist_id: Some("UCSRPntvq2xLXQtZwE2fA__w"), album: None, view_count: Some(43000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1352,7 +1352,7 @@ expression: map_res.c artist_id: Some("UCjikjZ91JLx_e-2i9nrhhSg"), album: None, view_count: Some(21000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1381,7 +1381,7 @@ expression: map_res.c artist_id: Some("UCIHQbC5CEmgPkBKO9gOXyBQ"), album: None, view_count: Some(138000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1410,7 +1410,7 @@ expression: map_res.c artist_id: Some("UCC_ZUtrLVilXKVbOJB3wDVA"), album: None, view_count: Some(134000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1439,7 +1439,7 @@ expression: map_res.c artist_id: Some("UCksBsDumncwulY5-MC6xWDA"), album: None, view_count: Some(612000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1468,7 +1468,7 @@ expression: map_res.c artist_id: Some("UCrC-7fsdTCYeaRBpwA6j-Eg"), album: None, view_count: None, - is_video: true, + track_type: episode, track_nr: None, by_va: false, ), @@ -1497,7 +1497,7 @@ expression: map_res.c artist_id: Some("UCYO-8CIkoBoUG2nOWz57Q9g"), album: None, view_count: Some(1700000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1530,7 +1530,7 @@ expression: map_res.c artist_id: Some("UC5-_N4l38iyasppZ5MPILXg"), album: None, view_count: Some(988000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1559,7 +1559,7 @@ expression: map_res.c artist_id: Some("UCLpm6-66iqUlOG28abww73w"), album: None, view_count: Some(454000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1588,7 +1588,7 @@ expression: map_res.c artist_id: Some("UC1rqUUukLEcgGBMChrH3y_w"), album: None, view_count: Some(738000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1617,7 +1617,7 @@ expression: map_res.c artist_id: Some("UCMXADr_MS_MdbOouS7ZMc8w"), album: None, view_count: Some(234000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1646,7 +1646,7 @@ expression: map_res.c artist_id: Some("UCN3lpPbZIK3CgTWTtriwWMQ"), album: None, view_count: Some(113000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1675,7 +1675,7 @@ expression: map_res.c artist_id: Some("UCiDD2aSYdgxSPE2YUm5lEjg"), album: None, view_count: Some(702000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1704,7 +1704,7 @@ expression: map_res.c artist_id: Some("UCMg_DZ4fMJGCohPYnBTLtpA"), album: None, view_count: Some(72000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1733,7 +1733,7 @@ expression: map_res.c artist_id: Some("UCn5SLnGaBcsusekOkSndmWg"), album: None, view_count: Some(265000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1762,7 +1762,7 @@ expression: map_res.c artist_id: Some("UCiC_vxasVKRDBvZBaMIEGdg"), album: None, view_count: Some(49000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1791,7 +1791,7 @@ expression: map_res.c artist_id: Some("UCCXCwvd49sm9x_gp1nuv7uA"), album: None, view_count: Some(15000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1820,7 +1820,7 @@ expression: map_res.c artist_id: Some("UCPC1pc0VjTVizL2FferDukw"), album: None, view_count: Some(332000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1849,7 +1849,7 @@ expression: map_res.c artist_id: Some("UCylwv7H2IUI_JWiA_2Mt5oA"), album: None, view_count: Some(177000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1873,7 +1873,7 @@ expression: map_res.c artist_id: Some("UCBvTykFO8_qxF0VtPm0ZjmA"), album: None, view_count: Some(362000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1902,7 +1902,7 @@ expression: map_res.c artist_id: None, album: None, view_count: Some(103000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1931,7 +1931,7 @@ expression: map_res.c artist_id: Some("UC7aCpfjAUTxRWslugOpsjUg"), album: None, view_count: Some(92000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1960,7 +1960,7 @@ expression: map_res.c artist_id: Some("UC2-fS2PfXjiYYOhpmnCfDIw"), album: None, view_count: None, - is_video: true, + track_type: episode, track_nr: None, by_va: false, ), @@ -1989,7 +1989,7 @@ expression: map_res.c artist_id: Some("UCzVb0SIXp9q9PeKCcFjsBtA"), album: None, view_count: Some(25000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2018,7 +2018,7 @@ expression: map_res.c artist_id: Some("UCkFIRlbak2lK--nCQXau_6g"), album: None, view_count: Some(1200000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2047,7 +2047,7 @@ expression: map_res.c artist_id: Some("UCOykHV9q0qb0vrBsxO_5fkQ"), album: None, view_count: Some(1100000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2076,7 +2076,7 @@ expression: map_res.c artist_id: None, album: None, view_count: Some(2000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2105,7 +2105,7 @@ expression: map_res.c artist_id: Some("UCofCirUtHXO7IL8AjWHytZQ"), album: None, view_count: Some(24000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2134,7 +2134,7 @@ expression: map_res.c artist_id: Some("UClWLQP-lNGvEV5qJpy7DLhw"), album: None, view_count: Some(669000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2163,7 +2163,7 @@ expression: map_res.c artist_id: None, album: None, view_count: Some(590000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2196,7 +2196,7 @@ expression: map_res.c artist_id: Some("UC97hKW1a1rzrMnzkKwaNx_g"), album: None, view_count: Some(2600000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2225,7 +2225,7 @@ expression: map_res.c artist_id: Some("UCR28YDxjDE3ogQROaNdnRbQ"), album: None, view_count: Some(1300000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2254,7 +2254,7 @@ expression: map_res.c artist_id: Some("UCqgwdYBhoUHmjrVxNhEUv4g"), album: None, view_count: Some(1400000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2291,7 +2291,7 @@ expression: map_res.c artist_id: Some("UCrmhl-Xsb9LW5WYtC2iHe6A"), album: None, view_count: Some(12000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2324,7 +2324,7 @@ expression: map_res.c artist_id: Some("UCzmabbKsmXlWnI9N2kKQ4lA"), album: None, view_count: Some(10000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2353,7 +2353,7 @@ expression: map_res.c artist_id: Some("UC4yEk8HA1s1-OmMOJSCyg0A"), album: None, view_count: Some(488000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2382,7 +2382,7 @@ expression: map_res.c artist_id: None, album: None, view_count: Some(6800000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2411,7 +2411,7 @@ expression: map_res.c artist_id: Some("UCf4l_B9IhzstPp8elVeHnTQ"), album: None, view_count: Some(637000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2440,7 +2440,7 @@ expression: map_res.c artist_id: Some("UCC0ydtpsVWZNHLvKSf4MnYw"), album: None, view_count: Some(3900000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2469,7 +2469,7 @@ expression: map_res.c artist_id: Some("UC7a1tClTvIIttpI-r2PwiQA"), album: None, view_count: Some(1200000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2502,7 +2502,7 @@ expression: map_res.c artist_id: Some("UCBvOwJ62CE_EdXLhrFceElg"), album: None, view_count: Some(272000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2531,7 +2531,7 @@ expression: map_res.c artist_id: Some("UC3PFoXZPFJGy9F4PG84nNQQ"), album: None, view_count: Some(371000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2560,7 +2560,7 @@ expression: map_res.c artist_id: None, album: None, view_count: Some(3200000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2593,7 +2593,7 @@ expression: map_res.c artist_id: Some("UCQd9dydn5gaib_uuVVkYZTQ"), album: None, view_count: Some(42000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2622,7 +2622,7 @@ expression: map_res.c artist_id: Some("UC1snMKQQ0kl280XfQmg9tpQ"), album: None, view_count: Some(657000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2651,7 +2651,7 @@ expression: map_res.c artist_id: Some("UCsIkF_bbTB9jjGIkT4j82rQ"), album: None, view_count: Some(49000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2680,7 +2680,7 @@ expression: map_res.c artist_id: Some("UCrXRY_7SVVmc6TykwhRGUNQ"), album: None, view_count: Some(6900000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2709,7 +2709,7 @@ expression: map_res.c artist_id: Some("UCof4hiuvv9BPhVCh90QHErw"), album: None, view_count: Some(489000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2738,7 +2738,7 @@ expression: map_res.c artist_id: Some("UCtfmGsduggb9uGGsC9lhfKQ"), album: None, view_count: Some(931000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2767,7 +2767,7 @@ expression: map_res.c artist_id: Some("UCdmScpl5nFGLy3xCnfHjDsw"), album: None, view_count: Some(2100000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2796,7 +2796,7 @@ expression: map_res.c artist_id: Some("UCTfTV3COQIaxnvZPjNbXApw"), album: None, view_count: Some(476000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2825,7 +2825,7 @@ expression: map_res.c artist_id: Some("UCHN9HRrB-BeOtSVKhVT7t_w"), album: None, view_count: Some(328000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2854,7 +2854,7 @@ expression: map_res.c artist_id: Some("UChZSUPxvkA2ATGLY9zZrxnQ"), album: None, view_count: Some(483000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2883,7 +2883,7 @@ expression: map_res.c artist_id: Some("UCzj_b294hukUPPkbwgiMmLQ"), album: None, view_count: Some(1100000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2912,7 +2912,7 @@ expression: map_res.c artist_id: Some("UCoS1Y8yS22Z1r3wVmHllaLA"), album: None, view_count: Some(683000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2941,7 +2941,7 @@ expression: map_res.c artist_id: None, album: None, view_count: Some(11000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_20240228_twoColumns.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_20240228_twoColumns.snap index 609791c..84ca230 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_20240228_twoColumns.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_20240228_twoColumns.snap @@ -40,7 +40,7 @@ MusicAlbum( ], artist_id: Some("UCXGYZ-OhdOpPBamHX3K9YRg"), description: None, - album_type: Single, + album_type: single, year: Some(2020), by_va: false, tracks: [ @@ -65,7 +65,7 @@ MusicAlbum( name: "Der Himmel reißt auf", )), view_count: Some(12000000), - is_video: true, + track_type: video, track_nr: Some(1), by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_description.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_description.snap index d87dc5f..13e1d87 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_description.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_description.snap @@ -40,7 +40,7 @@ MusicAlbum( text: "25 is the third studio album by English singer-songwriter Adele, released on 20 November 2015 by XL Recordings and Columbia Records. The album is titled as a reflection of her life and frame of mind at 25 years old and is termed a \"make-up record\". Its lyrical content features themes of Adele \"yearning for her old self, her nostalgia\", and \"melancholia about the passage of time\" according to an interview with the singer by Rolling Stone, as well as themes of motherhood and regret. In contrast to Adele\'s previous works, the production of 25 incorporated the use of electronic elements and creative rhythmic patterns, with elements of 1980s R&B and organs. Like when recording 21, Adele worked with producer and songwriter Paul Epworth and Ryan Tedder, along with new collaborations with Max Martin and Shellback, Bruno Mars, Greg Kurstin, Danger Mouse, the Smeezingtons, Samuel Dixon, and Tobias Jesso Jr.\n25 received generally positive reviews from music critics, who commended its production and Adele\'s vocal performance.\n\nFrom Wikipedia (https://en.wikipedia.org/wiki/25_(Adele_album)) under Creative Commons Attribution CC-BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0/legalcode)", ), ])), - album_type: Album, + album_type: album, year: Some(2015), by_va: false, tracks: [ @@ -61,7 +61,7 @@ MusicAlbum( name: "25", )), view_count: None, - is_video: true, + track_type: video, track_nr: Some(1), by_va: false, ), @@ -82,7 +82,7 @@ MusicAlbum( name: "25", )), view_count: None, - is_video: true, + track_type: video, track_nr: Some(2), by_va: false, ), @@ -103,7 +103,7 @@ MusicAlbum( name: "25", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -124,7 +124,7 @@ MusicAlbum( name: "25", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -145,7 +145,7 @@ MusicAlbum( name: "25", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -166,7 +166,7 @@ MusicAlbum( name: "25", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), @@ -187,7 +187,7 @@ MusicAlbum( name: "25", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(7), by_va: false, ), @@ -208,7 +208,7 @@ MusicAlbum( name: "25", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(8), by_va: false, ), @@ -229,7 +229,7 @@ MusicAlbum( name: "25", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(9), by_va: false, ), @@ -250,7 +250,7 @@ MusicAlbum( name: "25", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(10), by_va: false, ), @@ -271,7 +271,7 @@ MusicAlbum( name: "25", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(11), by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_one_artist.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_one_artist.snap index 4540100..486d93f 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_one_artist.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_one_artist.snap @@ -36,7 +36,7 @@ MusicAlbum( ], artist_id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), description: None, - album_type: Album, + album_type: album, year: Some(2016), by_va: false, tracks: [ @@ -57,7 +57,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -78,7 +78,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -99,7 +99,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -120,7 +120,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -141,7 +141,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -162,7 +162,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), @@ -183,7 +183,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(7), by_va: false, ), @@ -204,7 +204,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(8), by_va: false, ), @@ -225,7 +225,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(9), by_va: false, ), @@ -246,7 +246,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(10), by_va: false, ), @@ -267,7 +267,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(11), by_va: false, ), @@ -288,7 +288,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(12), by_va: false, ), @@ -309,7 +309,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(13), by_va: false, ), @@ -330,7 +330,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(14), by_va: false, ), @@ -351,7 +351,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(15), by_va: false, ), @@ -372,7 +372,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(16), by_va: false, ), @@ -393,7 +393,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(17), by_va: false, ), @@ -414,7 +414,7 @@ MusicAlbum( name: "Märchen enden gut", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(18), by_va: false, ), @@ -442,7 +442,7 @@ MusicAlbum( ), ], artist_id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), - album_type: Album, + album_type: album, year: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_single.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_single.snap index 0967c4d..ed4ce55 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_single.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_single.snap @@ -40,7 +40,7 @@ MusicAlbum( ], artist_id: Some("UCXGYZ-OhdOpPBamHX3K9YRg"), description: None, - album_type: Single, + album_type: single, year: Some(2020), by_va: false, tracks: [ @@ -65,7 +65,7 @@ MusicAlbum( name: "Der Himmel reißt auf", )), view_count: None, - is_video: true, + track_type: video, track_nr: Some(1), by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_unavailable.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_unavailable.snap index d72e453..16fb88f 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_unavailable.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_unavailable.snap @@ -31,7 +31,7 @@ MusicAlbum( artists: [], artist_id: None, description: None, - album_type: Album, + album_type: album, year: Some(2019), by_va: true, tracks: [ @@ -52,7 +52,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: None, - is_video: true, + track_type: video, track_nr: Some(1), by_va: false, ), @@ -73,7 +73,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: None, - is_video: true, + track_type: video, track_nr: Some(2), by_va: false, ), @@ -94,7 +94,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: None, - is_video: true, + track_type: video, track_nr: Some(3), by_va: false, ), @@ -115,7 +115,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: None, - is_video: true, + track_type: video, track_nr: Some(5), by_va: false, ), @@ -136,7 +136,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), @@ -157,7 +157,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: None, - is_video: true, + track_type: video, track_nr: Some(7), by_va: false, ), @@ -178,7 +178,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: None, - is_video: true, + track_type: video, track_nr: Some(8), by_va: false, ), @@ -199,7 +199,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: None, - is_video: true, + track_type: video, track_nr: Some(9), by_va: false, ), @@ -220,7 +220,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(11), by_va: false, ), @@ -241,7 +241,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: None, - is_video: true, + track_type: video, track_nr: Some(12), by_va: false, ), @@ -262,7 +262,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(13), by_va: false, ), @@ -283,7 +283,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(18), by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_various_artists.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_various_artists.snap index e85882a..932ff7c 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_various_artists.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_various_artists.snap @@ -31,7 +31,7 @@ MusicAlbum( artists: [], artist_id: None, description: None, - album_type: Single, + album_type: single, year: Some(2022), by_va: true, tracks: [ @@ -52,7 +52,7 @@ MusicAlbum( name: "<Queendom2> FINAL", )), view_count: None, - is_video: true, + track_type: video, track_nr: Some(1), by_va: false, ), @@ -73,7 +73,7 @@ MusicAlbum( name: "<Queendom2> FINAL", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -94,7 +94,7 @@ MusicAlbum( name: "<Queendom2> FINAL", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -115,7 +115,7 @@ MusicAlbum( name: "<Queendom2> FINAL", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -136,7 +136,7 @@ MusicAlbum( name: "<Queendom2> FINAL", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -157,7 +157,7 @@ MusicAlbum( name: "<Queendom2> FINAL", )), view_count: None, - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_20240228_album.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_20240228_album.snap index 3962ae2..5d69c60 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_20240228_album.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_20240228_album.snap @@ -56,7 +56,7 @@ MusicPlaylist( name: "Der Himmel reißt auf", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_20240228_twoColumns.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_20240228_twoColumns.snap index 8082b38..367d1be 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_20240228_twoColumns.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_20240228_twoColumns.snap @@ -81,7 +81,7 @@ MusicPlaylist( name: "Welcome to My Lofi House", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -113,7 +113,7 @@ MusicPlaylist( name: "Jazzy Wave", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -145,7 +145,7 @@ MusicPlaylist( name: "rainy evening", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -181,7 +181,7 @@ MusicPlaylist( name: "Started Ballin\'", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -213,7 +213,7 @@ MusicPlaylist( name: "Wonderful Day", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -245,7 +245,7 @@ MusicPlaylist( name: "Santa Anna", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -277,7 +277,7 @@ MusicPlaylist( name: "Far Away", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -313,7 +313,7 @@ MusicPlaylist( name: "Bees And Apple Trees", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -349,7 +349,7 @@ MusicPlaylist( name: "Bustlin", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -381,7 +381,7 @@ MusicPlaylist( name: "The Afternoon", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -405,7 +405,7 @@ MusicPlaylist( artist_id: Some("UCBuzyCWvAZmYl0uecMEVVzg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -437,7 +437,7 @@ MusicPlaylist( name: "Nonchalant", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -469,7 +469,7 @@ MusicPlaylist( name: "i\'m closing my eyes", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -493,7 +493,7 @@ MusicPlaylist( artist_id: Some("UCVyclYZZ-sCbkuy7svZca7A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -525,7 +525,7 @@ MusicPlaylist( name: "Life", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -557,7 +557,7 @@ MusicPlaylist( name: "grainy days", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -589,7 +589,7 @@ MusicPlaylist( name: "Aftermath", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -613,7 +613,7 @@ MusicPlaylist( artist_id: Some("UC6wELQwGiCxNs3NaL7Suy9g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -649,7 +649,7 @@ MusicPlaylist( name: "Summer Soft", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -673,7 +673,7 @@ MusicPlaylist( artist_id: Some("UCZPnrhcbLNIt2a4kxVmZaQQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -705,7 +705,7 @@ MusicPlaylist( name: "Moony", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -741,7 +741,7 @@ MusicPlaylist( name: "Chillhop Essentials Summer 2022", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -773,7 +773,7 @@ MusicPlaylist( name: "she", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -805,7 +805,7 @@ MusicPlaylist( name: "Traveller", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -837,7 +837,7 @@ MusicPlaylist( name: "Gardenia", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -869,7 +869,7 @@ MusicPlaylist( name: "Azimuth", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -901,7 +901,7 @@ MusicPlaylist( name: "Chillhop Essentials Spring 2022", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -937,7 +937,7 @@ MusicPlaylist( name: "Future", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -969,7 +969,7 @@ MusicPlaylist( name: "Late Night Essentials", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1001,7 +1001,7 @@ MusicPlaylist( name: "Dreams", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1033,7 +1033,7 @@ MusicPlaylist( name: "Velocities", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1069,7 +1069,7 @@ MusicPlaylist( name: "Chillhop Daydreams 2", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1101,7 +1101,7 @@ MusicPlaylist( name: "Chillhop Essentials Summer 2019", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1133,7 +1133,7 @@ MusicPlaylist( name: "Daybreak", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1165,7 +1165,7 @@ MusicPlaylist( name: "Hometown", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1189,7 +1189,7 @@ MusicPlaylist( artist_id: Some("UC3rcrZxH9VW73L2gZtHlU2g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1221,7 +1221,7 @@ MusicPlaylist( name: "Birds Fly Higher Than The Moon", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1265,7 +1265,7 @@ MusicPlaylist( name: "Snacks", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1297,7 +1297,7 @@ MusicPlaylist( name: "Beneath Your Waves", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1329,7 +1329,7 @@ MusicPlaylist( name: "Samui Sunrise", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1365,7 +1365,7 @@ MusicPlaylist( name: "Chillhop Essentials Fall 2021", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1397,7 +1397,7 @@ MusicPlaylist( name: "After Dark", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1429,7 +1429,7 @@ MusicPlaylist( name: "shadows", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1461,7 +1461,7 @@ MusicPlaylist( name: "Save", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1493,7 +1493,7 @@ MusicPlaylist( name: "Boss Spieler University", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1525,7 +1525,7 @@ MusicPlaylist( name: "why dont we", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1561,7 +1561,7 @@ MusicPlaylist( name: "kaleidoscope", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1593,7 +1593,7 @@ MusicPlaylist( name: "Bluewerks Vol. 4: Drift Off", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1629,7 +1629,7 @@ MusicPlaylist( name: "SLIT", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1661,7 +1661,7 @@ MusicPlaylist( name: "Chillhop Essentials Spring 2019", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1693,7 +1693,7 @@ MusicPlaylist( name: "Midnite Ride II", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1725,7 +1725,7 @@ MusicPlaylist( name: "Coniferous", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1757,7 +1757,7 @@ MusicPlaylist( name: "Chillhop Essentials Winter 2021", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1789,7 +1789,7 @@ MusicPlaylist( name: "Silk", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1825,7 +1825,7 @@ MusicPlaylist( name: "Blue Lounge", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1857,7 +1857,7 @@ MusicPlaylist( name: "Detour", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1889,7 +1889,7 @@ MusicPlaylist( name: "coffee & chill", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1921,7 +1921,7 @@ MusicPlaylist( name: "bonus funk", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1953,7 +1953,7 @@ MusicPlaylist( name: "Taiga Native", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1985,7 +1985,7 @@ MusicPlaylist( name: "daydreams", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2017,7 +2017,7 @@ MusicPlaylist( name: "Restart.", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2049,7 +2049,7 @@ MusicPlaylist( name: "Astrovibes", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2081,7 +2081,7 @@ MusicPlaylist( name: "Fly Shit (Forever Nip)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2113,7 +2113,7 @@ MusicPlaylist( name: "Growing Up, Vol. 2", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2145,7 +2145,7 @@ MusicPlaylist( name: "Palms/Canary", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2177,7 +2177,7 @@ MusicPlaylist( name: "Chillhop Essentials Fall 2018", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2209,7 +2209,7 @@ MusicPlaylist( name: "Tired Boy", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2241,7 +2241,7 @@ MusicPlaylist( name: "Craving / Dusk", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2277,7 +2277,7 @@ MusicPlaylist( name: "Suuurf", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2301,7 +2301,7 @@ MusicPlaylist( artist_id: Some("UCiH2wHGFEdhMbpxTbTHnbZA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2333,7 +2333,7 @@ MusicPlaylist( name: "Nothing changes: everything is different", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2365,7 +2365,7 @@ MusicPlaylist( name: "virgo", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2397,7 +2397,7 @@ MusicPlaylist( name: "Tree Tunk", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2429,7 +2429,7 @@ MusicPlaylist( name: "Perpetual", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2461,7 +2461,7 @@ MusicPlaylist( name: "Jellify", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2493,7 +2493,7 @@ MusicPlaylist( name: "Help Me Out", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2529,7 +2529,7 @@ MusicPlaylist( name: "Monothrope", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2561,7 +2561,7 @@ MusicPlaylist( name: "Mirror Universe", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2593,7 +2593,7 @@ MusicPlaylist( name: "Tuesday", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2625,7 +2625,7 @@ MusicPlaylist( name: "2018 – 2021 (mixtape)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2657,7 +2657,7 @@ MusicPlaylist( name: "Aloe Fantasy", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2689,7 +2689,7 @@ MusicPlaylist( name: "Moods Vol. 1", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2713,7 +2713,7 @@ MusicPlaylist( artist_id: Some("UCnX3dJnTo1kf0zZuPcED_FA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2745,7 +2745,7 @@ MusicPlaylist( name: "Don\'t Think About Tomorrow.", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2777,7 +2777,7 @@ MusicPlaylist( name: "Friday Height", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2809,7 +2809,7 @@ MusicPlaylist( name: "EXPEDITion 100, Vol.1: Figub Hadzi-Jusuf", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2841,7 +2841,7 @@ MusicPlaylist( name: "LM026", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2877,7 +2877,7 @@ MusicPlaylist( name: "Lo-Fever: Sober Saturday Night Radio and Instrumental Chillwave Beats to Relax and Study", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2909,7 +2909,7 @@ MusicPlaylist( name: "Bedtime Stories II", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2933,7 +2933,7 @@ MusicPlaylist( artist_id: Some("UCz2MxlGEVX4X1WyrTz7IpXA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2969,7 +2969,7 @@ MusicPlaylist( name: "Beats with Brothers, Vol. 5", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -3005,7 +3005,7 @@ MusicPlaylist( name: "Perspective", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -3037,7 +3037,7 @@ MusicPlaylist( name: "Lost Track", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -3069,7 +3069,7 @@ MusicPlaylist( name: "Frozen Roses", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -3101,7 +3101,7 @@ MusicPlaylist( name: "The Chants", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -3133,7 +3133,7 @@ MusicPlaylist( name: "Summertime and the Livings Easier.", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -3157,7 +3157,7 @@ MusicPlaylist( artist_id: Some("UCWGqmBzWyhxn8a-YDSfb_LA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -3189,7 +3189,7 @@ MusicPlaylist( name: "Lounge Masters Vibes vol. 18", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -3221,7 +3221,7 @@ MusicPlaylist( name: "Pirata", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -3253,7 +3253,7 @@ MusicPlaylist( name: "NY Vibes", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_long.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_long.snap index 1d43500..0c6184d 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_long.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_long.snap @@ -56,7 +56,7 @@ MusicPlaylist( artist_id: Some("UCxpEXfdz8GpczOZ8axPLApg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -80,7 +80,7 @@ MusicPlaylist( artist_id: Some("UCAiYaiG1z72cEF7A4l53x3Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -104,7 +104,7 @@ MusicPlaylist( artist_id: Some("UCR5tGRQZrS7GpImwYUj_Drg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -128,7 +128,7 @@ MusicPlaylist( artist_id: Some("UCsPz48w0M3QUEGAiDP1x17w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -152,7 +152,7 @@ MusicPlaylist( artist_id: Some("UCnAbdPb5psmj2VvDjn6FRIw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -176,7 +176,7 @@ MusicPlaylist( artist_id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -204,7 +204,7 @@ MusicPlaylist( artist_id: Some("UCY06CayCwdaOd1CnDgjy6uw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -228,7 +228,7 @@ MusicPlaylist( artist_id: Some("UCnAbdPb5psmj2VvDjn6FRIw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -252,7 +252,7 @@ MusicPlaylist( artist_id: Some("UCTnPiL9QpipJzruQiV4fR7w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -276,7 +276,7 @@ MusicPlaylist( artist_id: Some("UCicJjripVxiTXbUfociVZwQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -300,7 +300,7 @@ MusicPlaylist( artist_id: Some("UCwEIiKCL4YYnYUnkc3w418w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -324,7 +324,7 @@ MusicPlaylist( artist_id: Some("UCACOVSEb3DGote2ZHZx6jHw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -348,7 +348,7 @@ MusicPlaylist( artist_id: Some("UCAbxL0lZcmlaQrzoUbrvS3A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -372,7 +372,7 @@ MusicPlaylist( artist_id: Some("UCkQRXVZuBMktEdVyptoUgGg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -396,7 +396,7 @@ MusicPlaylist( artist_id: Some("UCwEIiKCL4YYnYUnkc3w418w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -420,7 +420,7 @@ MusicPlaylist( artist_id: Some("UCwEIiKCL4YYnYUnkc3w418w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -444,7 +444,7 @@ MusicPlaylist( artist_id: Some("UCRD-INDaHvHlO8K_33uKetQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -468,7 +468,7 @@ MusicPlaylist( artist_id: Some("UCiBODJaGfd1aBHE7BF_Iv7w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -496,7 +496,7 @@ MusicPlaylist( artist_id: Some("UCvvMm92fPNQNRj54GTPV6UQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -520,7 +520,7 @@ MusicPlaylist( artist_id: Some("UCEHalRyK7ZSFafTtAn3uYIA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -544,7 +544,7 @@ MusicPlaylist( artist_id: Some("UCuNyvmBfTzQZmWI2rsVX3QQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -568,7 +568,7 @@ MusicPlaylist( artist_id: Some("UCgosMU69MpoCqhuS1JZj6Cw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -592,7 +592,7 @@ MusicPlaylist( artist_id: Some("UCAbxL0lZcmlaQrzoUbrvS3A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -616,7 +616,7 @@ MusicPlaylist( artist_id: Some("UCAOPSjipxqxXk5mctGHiUoQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -640,7 +640,7 @@ MusicPlaylist( artist_id: Some("UCyRQa8Azw8K6ISSd4INDGjQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -664,7 +664,7 @@ MusicPlaylist( artist_id: Some("UCkQRXVZuBMktEdVyptoUgGg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -688,7 +688,7 @@ MusicPlaylist( artist_id: Some("UCVAvAvPCnScF3XoFPzvep7g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -712,7 +712,7 @@ MusicPlaylist( artist_id: Some("UCJjgJI2vEDxGZYbQ_-2ZGXQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -736,7 +736,7 @@ MusicPlaylist( artist_id: Some("UCK2ZLsY9Mb_dxZiZfKE3lGg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -760,7 +760,7 @@ MusicPlaylist( artist_id: Some("UCZwxolUWIeUty9Ru39pKNIw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -784,7 +784,7 @@ MusicPlaylist( artist_id: Some("UCr_mpK4vqxfUmyiMolCPfPA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -808,7 +808,7 @@ MusicPlaylist( artist_id: Some("UCVRREKn7V1Cb8qvf43dwZ6w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -832,7 +832,7 @@ MusicPlaylist( artist_id: Some("UCFEQ-Z7CSAA3pqegM1VywrQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -856,7 +856,7 @@ MusicPlaylist( artist_id: Some("UCDkoIRV3UeF4k3F_TgFCPEQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -880,7 +880,7 @@ MusicPlaylist( artist_id: Some("UCK2ZLsY9Mb_dxZiZfKE3lGg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -904,7 +904,7 @@ MusicPlaylist( artist_id: Some("UCvvMm92fPNQNRj54GTPV6UQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -928,7 +928,7 @@ MusicPlaylist( artist_id: Some("UCwdy-QmH4y-gqjC8PMbKVVg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -956,7 +956,7 @@ MusicPlaylist( artist_id: Some("UCZHCkx-08zBqSD1A1C5TWrA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -980,7 +980,7 @@ MusicPlaylist( artist_id: Some("UCmhABfwtPqVfEcn0aKpMRaw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1004,7 +1004,7 @@ MusicPlaylist( artist_id: Some("UCFTcSVPYRWlDoHisR-ZKwgw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1028,7 +1028,7 @@ MusicPlaylist( artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1052,7 +1052,7 @@ MusicPlaylist( artist_id: Some("UC2IxXopNUjjBCC78s_01mnw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1076,7 +1076,7 @@ MusicPlaylist( artist_id: Some("UCVRREKn7V1Cb8qvf43dwZ6w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1100,7 +1100,7 @@ MusicPlaylist( artist_id: Some("UCAbxL0lZcmlaQrzoUbrvS3A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1124,7 +1124,7 @@ MusicPlaylist( artist_id: Some("UCKcDBfdLPF3_d0ZzeiCeaSg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1148,7 +1148,7 @@ MusicPlaylist( artist_id: Some("UCkQRXVZuBMktEdVyptoUgGg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1176,7 +1176,7 @@ MusicPlaylist( artist_id: Some("UCrKtmz26qlXIqlR0CH1vr_g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1200,7 +1200,7 @@ MusicPlaylist( artist_id: Some("UCwEIiKCL4YYnYUnkc3w418w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1224,7 +1224,7 @@ MusicPlaylist( artist_id: Some("UCa7FGSUsN2wNRUclibmicMg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1248,7 +1248,7 @@ MusicPlaylist( artist_id: Some("UCtsP_mr458_eETZOrRVgDCg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1272,7 +1272,7 @@ MusicPlaylist( artist_id: Some("UCiwL2PwE5oWPDFL6Twq904Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1296,7 +1296,7 @@ MusicPlaylist( artist_id: Some("UCR5tGRQZrS7GpImwYUj_Drg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1320,7 +1320,7 @@ MusicPlaylist( artist_id: Some("UCZHCkx-08zBqSD1A1C5TWrA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1344,7 +1344,7 @@ MusicPlaylist( artist_id: Some("UCuA6k6g0Xzf6-JlgMXSSA0g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1372,7 +1372,7 @@ MusicPlaylist( artist_id: Some("UCmhABfwtPqVfEcn0aKpMRaw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1396,7 +1396,7 @@ MusicPlaylist( artist_id: Some("UCCirWHa1TzMlpaXzcn_tGdw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1420,7 +1420,7 @@ MusicPlaylist( artist_id: Some("UCyavaV4GE4o3jW1X4k55fLA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1444,7 +1444,7 @@ MusicPlaylist( artist_id: Some("UCuNyvmBfTzQZmWI2rsVX3QQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1468,7 +1468,7 @@ MusicPlaylist( artist_id: Some("UC4Uo6C43HtCJ1yGeUuCtIsA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1492,7 +1492,7 @@ MusicPlaylist( artist_id: Some("UCkQRXVZuBMktEdVyptoUgGg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1516,7 +1516,7 @@ MusicPlaylist( artist_id: Some("UC765Orc9dupeXxykaXpdQFw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1540,7 +1540,7 @@ MusicPlaylist( artist_id: Some("UCAbxL0lZcmlaQrzoUbrvS3A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1564,7 +1564,7 @@ MusicPlaylist( artist_id: Some("UCozHZjJVp3FcLPlTVL1oUnA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1588,7 +1588,7 @@ MusicPlaylist( artist_id: Some("UCIxzmOKFBzdWaK95Q9xcVGw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1612,7 +1612,7 @@ MusicPlaylist( artist_id: Some("UCR5VDjhUCi0FYr4f-3Zd9Bw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1636,7 +1636,7 @@ MusicPlaylist( artist_id: Some("UCXUNYorrTVi7iG5FUnr-Gbg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1660,7 +1660,7 @@ MusicPlaylist( artist_id: Some("UC_MxOdawj_BStPs4CKBYD0Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1684,7 +1684,7 @@ MusicPlaylist( artist_id: Some("UCyavaV4GE4o3jW1X4k55fLA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1708,7 +1708,7 @@ MusicPlaylist( artist_id: Some("UC-fcAnS3bwGkrfpLSv-0Dag"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1732,7 +1732,7 @@ MusicPlaylist( artist_id: Some("UCyavaV4GE4o3jW1X4k55fLA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1756,7 +1756,7 @@ MusicPlaylist( artist_id: Some("UCxaovR9-q1-mDpwqB9PbXZA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1780,7 +1780,7 @@ MusicPlaylist( artist_id: Some("UCwoO85C8_Pzq-2ek7x53Y9Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1804,7 +1804,7 @@ MusicPlaylist( artist_id: Some("UCymtzNvoLbYPhnZbd2CcCZA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1828,7 +1828,7 @@ MusicPlaylist( artist_id: Some("UCE8BWpRTOxclDmpqf9Zlq8w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1852,7 +1852,7 @@ MusicPlaylist( artist_id: Some("UCACOVSEb3DGote2ZHZx6jHw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1876,7 +1876,7 @@ MusicPlaylist( artist_id: Some("UCcgml_Q7npEKVGM2bSksWBA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1900,7 +1900,7 @@ MusicPlaylist( artist_id: Some("UC9N-YBlbrSGyM8DeAlv717g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1924,7 +1924,7 @@ MusicPlaylist( artist_id: Some("UCuNyvmBfTzQZmWI2rsVX3QQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1948,7 +1948,7 @@ MusicPlaylist( artist_id: Some("UCZwxolUWIeUty9Ru39pKNIw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1972,7 +1972,7 @@ MusicPlaylist( artist_id: Some("UCK2ZLsY9Mb_dxZiZfKE3lGg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1996,7 +1996,7 @@ MusicPlaylist( artist_id: Some("UCZeK8mXLSQV4wJ7IjOfgtwQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2020,7 +2020,7 @@ MusicPlaylist( artist_id: Some("UC3qkJTPxKEp8TOf0V8M8_dw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2044,7 +2044,7 @@ MusicPlaylist( artist_id: Some("UCZeK8mXLSQV4wJ7IjOfgtwQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2068,7 +2068,7 @@ MusicPlaylist( artist_id: Some("UCXGYZ-OhdOpPBamHX3K9YRg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2092,7 +2092,7 @@ MusicPlaylist( artist_id: Some("UCXDkh6v5SI-Y5W-9nGcV8FA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2116,7 +2116,7 @@ MusicPlaylist( artist_id: Some("UCKcDBfdLPF3_d0ZzeiCeaSg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2140,7 +2140,7 @@ MusicPlaylist( artist_id: Some("UCKcDBfdLPF3_d0ZzeiCeaSg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2164,7 +2164,7 @@ MusicPlaylist( artist_id: Some("UCACOVSEb3DGote2ZHZx6jHw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2188,7 +2188,7 @@ MusicPlaylist( artist_id: Some("UCJjgJI2vEDxGZYbQ_-2ZGXQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2212,7 +2212,7 @@ MusicPlaylist( artist_id: Some("UCAbxL0lZcmlaQrzoUbrvS3A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2236,7 +2236,7 @@ MusicPlaylist( artist_id: Some("UCwoO85C8_Pzq-2ek7x53Y9Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2260,7 +2260,7 @@ MusicPlaylist( artist_id: Some("UCvvMm92fPNQNRj54GTPV6UQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2284,7 +2284,7 @@ MusicPlaylist( artist_id: Some("UCuNyvmBfTzQZmWI2rsVX3QQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2312,7 +2312,7 @@ MusicPlaylist( artist_id: Some("UCLmyWpIwbKr6HJQ_teYCkVw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2336,7 +2336,7 @@ MusicPlaylist( artist_id: Some("UCAbxL0lZcmlaQrzoUbrvS3A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2360,7 +2360,7 @@ MusicPlaylist( artist_id: Some("UCFNSyezyK_1_f0nOrNaCdHQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2384,7 +2384,7 @@ MusicPlaylist( artist_id: Some("UCVz_BF7bR39KN0gK8gG3knA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2408,7 +2408,7 @@ MusicPlaylist( artist_id: Some("UCVvL70F5a_APtKzTjGb2L0w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2432,7 +2432,7 @@ MusicPlaylist( artist_id: Some("UCcgml_Q7npEKVGM2bSksWBA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2460,7 +2460,7 @@ MusicPlaylist( artist_id: Some("UCZHCkx-08zBqSD1A1C5TWrA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_nomusic.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_nomusic.snap index 07ca4da..2abbf05 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_nomusic.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_nomusic.snap @@ -56,7 +56,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -80,7 +80,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -104,7 +104,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -128,7 +128,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -152,7 +152,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -176,7 +176,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -200,7 +200,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -224,7 +224,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -248,7 +248,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -272,7 +272,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -296,7 +296,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -320,7 +320,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -344,7 +344,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -368,7 +368,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -392,7 +392,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -416,7 +416,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -440,7 +440,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -464,7 +464,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -488,7 +488,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -512,7 +512,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -536,7 +536,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -560,7 +560,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -584,7 +584,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -608,7 +608,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -632,7 +632,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -656,7 +656,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -680,7 +680,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -704,7 +704,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -728,7 +728,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -752,7 +752,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -776,7 +776,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -800,7 +800,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -824,7 +824,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -848,7 +848,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -872,7 +872,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -896,7 +896,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -920,7 +920,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -944,7 +944,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -968,7 +968,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -992,7 +992,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1016,7 +1016,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1040,7 +1040,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1064,7 +1064,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1088,7 +1088,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1112,7 +1112,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1136,7 +1136,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1160,7 +1160,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1184,7 +1184,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1208,7 +1208,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1232,7 +1232,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1256,7 +1256,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1280,7 +1280,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1304,7 +1304,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1328,7 +1328,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1352,7 +1352,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1376,7 +1376,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1400,7 +1400,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1424,7 +1424,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1448,7 +1448,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1472,7 +1472,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1496,7 +1496,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1520,7 +1520,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1544,7 +1544,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1568,7 +1568,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1592,7 +1592,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1616,7 +1616,7 @@ MusicPlaylist( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_short.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_short.snap index 2d9a1b7..7f4f115 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_short.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_short.snap @@ -58,7 +58,7 @@ MusicPlaylist( artist_id: Some("UCvWtix2TtWGe9kffqnwdaMw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -82,7 +82,7 @@ MusicPlaylist( artist_id: Some("UCxrxwFTBU3DTJ9Y5TKeW7KA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -106,7 +106,7 @@ MusicPlaylist( artist_id: Some("UCxbXb4XdmfbYPjCH80ilOMQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -130,7 +130,7 @@ MusicPlaylist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -154,7 +154,7 @@ MusicPlaylist( artist_id: Some("UChN7Bcek6HoXA-j8K8T7olQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -178,7 +178,7 @@ MusicPlaylist( artist_id: Some("UCc7qv30nl6n6ZLP8TWDKjAw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -202,7 +202,7 @@ MusicPlaylist( artist_id: Some("UCERrDZ8oN0U_n9MphMKERcg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -226,7 +226,7 @@ MusicPlaylist( artist_id: Some("UCz51ZodJbYUNfkdPHOjJKKw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -250,7 +250,7 @@ MusicPlaylist( artist_id: Some("UCCj0RlDqqahEB5BXVtDcPqg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -274,7 +274,7 @@ MusicPlaylist( artist_id: Some("UCiDBtu8whAdUgiJ5o1g7sQQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -298,7 +298,7 @@ MusicPlaylist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -322,7 +322,7 @@ MusicPlaylist( artist_id: Some("UCEiu8KxYtwFeuivzBYREn3Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -346,7 +346,7 @@ MusicPlaylist( artist_id: Some("UCcCMlnsPEBCBIHQxI_NJEYg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -370,7 +370,7 @@ MusicPlaylist( artist_id: Some("UCCK1-D6wWlRuQgaCdIAKsMA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -394,7 +394,7 @@ MusicPlaylist( artist_id: Some("UCNAbUat5xDtp6FeBphe2V_Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -418,7 +418,7 @@ MusicPlaylist( artist_id: Some("UCySKHMJ31dcWmdOUyMQUJPQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -442,7 +442,7 @@ MusicPlaylist( artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -466,7 +466,7 @@ MusicPlaylist( artist_id: Some("UCEiu8KxYtwFeuivzBYREn3Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -490,7 +490,7 @@ MusicPlaylist( artist_id: Some("UCrrbm1toLPud8fFIisPuxpg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -514,7 +514,7 @@ MusicPlaylist( artist_id: Some("UCdFe4KkWwZ_twpo-UECR-Nw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -538,7 +538,7 @@ MusicPlaylist( artist_id: Some("UCZyvQjTvS_1fiCaz-cU9luA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -562,7 +562,7 @@ MusicPlaylist( artist_id: Some("UCdcOKli0OmBrQUVfCqHy7PQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -586,7 +586,7 @@ MusicPlaylist( artist_id: Some("UC8v5OGljUo7ATs_14mm-aQw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -610,7 +610,7 @@ MusicPlaylist( artist_id: Some("UClHxZy_9ArA6rploIzcDReQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -634,7 +634,7 @@ MusicPlaylist( artist_id: Some("UCrrbm1toLPud8fFIisPuxpg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -658,7 +658,7 @@ MusicPlaylist( artist_id: Some("UCDfnnzgPNShOXOYM9V4QIsQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -682,7 +682,7 @@ MusicPlaylist( artist_id: Some("UCIaFw5VBEK8qaW6nRpx_qnw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -706,7 +706,7 @@ MusicPlaylist( artist_id: Some("UC7wYAi5loaBGEbOQz7VBF2w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -730,7 +730,7 @@ MusicPlaylist( artist_id: Some("UCuCDEKaRwc9nGFnh_EwytNw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -754,7 +754,7 @@ MusicPlaylist( artist_id: Some("UCxm9sS8Dd2aRthr_O3rVLJQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -782,7 +782,7 @@ MusicPlaylist( artist_id: Some("UCz86IA7ooUetFnUGa_YlsVw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -806,7 +806,7 @@ MusicPlaylist( artist_id: Some("UCDfnnzgPNShOXOYM9V4QIsQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -830,7 +830,7 @@ MusicPlaylist( artist_id: Some("UCREdEwBdZcnQLIT0ThaAtmQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -858,7 +858,7 @@ MusicPlaylist( artist_id: Some("UCoXUei82oXmv4HJW4of7KuA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -882,7 +882,7 @@ MusicPlaylist( artist_id: Some("UCFTEZcsMSOzX6tZOGwkS-xw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -906,7 +906,7 @@ MusicPlaylist( artist_id: Some("UCxm9sS8Dd2aRthr_O3rVLJQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -930,7 +930,7 @@ MusicPlaylist( artist_id: Some("UCJWJd67r42sByfpOe6S__zw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -954,7 +954,7 @@ MusicPlaylist( artist_id: Some("UChN7Bcek6HoXA-j8K8T7olQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -978,7 +978,7 @@ MusicPlaylist( artist_id: Some("UCx00XxqRCfPS6zaTzRm3H2A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1002,7 +1002,7 @@ MusicPlaylist( artist_id: Some("UCrrbm1toLPud8fFIisPuxpg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1026,7 +1026,7 @@ MusicPlaylist( artist_id: Some("UClHxZy_9ArA6rploIzcDReQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1050,7 +1050,7 @@ MusicPlaylist( artist_id: Some("UCXsen2Eqwx-Et8OsB4WAWpQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1078,7 +1078,7 @@ MusicPlaylist( artist_id: Some("UCnK1mlWb6zp7AQfCpseJ4Qg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1110,7 +1110,7 @@ MusicPlaylist( name: "The Hobbit - The Desolation Of Smaug (Original Motion Picture Soundtrack / Special Edition)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1134,7 +1134,7 @@ MusicPlaylist( artist_id: Some("UCCEzq-Gv6gU-bdM82rtZN4g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1158,7 +1158,7 @@ MusicPlaylist( artist_id: Some("UCgpBsaDW2n_6ruzht3wvP0A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1182,7 +1182,7 @@ MusicPlaylist( artist_id: Some("UCWEOCbdtQTQeQ4C2u7q5nhw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1206,7 +1206,7 @@ MusicPlaylist( artist_id: Some("UCJ1CS4AJjBGFflRZdKEPw1g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1230,7 +1230,7 @@ MusicPlaylist( artist_id: Some("UC1gXK5ZV0phthXSPLZLC9-g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1254,7 +1254,7 @@ MusicPlaylist( artist_id: Some("UCmosdTllvZCyIii6qQVqLuQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1278,7 +1278,7 @@ MusicPlaylist( artist_id: Some("UCn9CRqI75fDZVpKxP8bH2uA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1302,7 +1302,7 @@ MusicPlaylist( artist_id: Some("UCndGjZNR8Na72X3KQxmrzlQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1326,7 +1326,7 @@ MusicPlaylist( artist_id: Some("UCUekv_6fGLPg2V4Lt2-TxWA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1350,7 +1350,7 @@ MusicPlaylist( artist_id: Some("UClHxZy_9ArA6rploIzcDReQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1374,7 +1374,7 @@ MusicPlaylist( artist_id: Some("UCiY4Bc7zlpBb8ZnETq3QhFQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1398,7 +1398,7 @@ MusicPlaylist( artist_id: Some("UCZXFFOvXl9MxKDdIzcrh_eQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1422,7 +1422,7 @@ MusicPlaylist( artist_id: Some("UCTVV4ftXytYeCZ8mr9HvLkA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1446,7 +1446,7 @@ MusicPlaylist( artist_id: Some("UC91Bvz_hS8v8FHBZU3Sb6qw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1474,7 +1474,7 @@ MusicPlaylist( artist_id: Some("UC-bE9kenHs2wN-p96ESCFIg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1498,7 +1498,7 @@ MusicPlaylist( artist_id: Some("UCiDBtu8whAdUgiJ5o1g7sQQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1530,7 +1530,7 @@ MusicPlaylist( name: "Bad Habits (Acoustic Version)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1554,7 +1554,7 @@ MusicPlaylist( artist_id: Some("UCLcdzadtYzkPRyCmvj96BDw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1578,7 +1578,7 @@ MusicPlaylist( artist_id: Some("UCNAbUat5xDtp6FeBphe2V_Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1602,7 +1602,7 @@ MusicPlaylist( artist_id: Some("UC3_kaldIP4G9nOBaE_u6e6Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1626,7 +1626,7 @@ MusicPlaylist( artist_id: Some("UCo5Hx6tOkjyWHmJDucjtB0A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1650,7 +1650,7 @@ MusicPlaylist( artist_id: Some("UCWOoizZfmKq1TtiBx9xBd0g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1674,7 +1674,7 @@ MusicPlaylist( artist_id: Some("UC4FxRR1ZZcap_CY6fTQUU3g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1698,7 +1698,7 @@ MusicPlaylist( artist_id: Some("UCiDBtu8whAdUgiJ5o1g7sQQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1722,7 +1722,7 @@ MusicPlaylist( artist_id: Some("UCzh2UyHyO420UYx1UYEQPBQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1746,7 +1746,7 @@ MusicPlaylist( artist_id: Some("UCZ13GpYX5-b3ePvaGM-lWNA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1770,7 +1770,7 @@ MusicPlaylist( artist_id: Some("UCunB7BiOZ7aN6v6TgCp5dRA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1794,7 +1794,7 @@ MusicPlaylist( artist_id: Some("UC7wYAi5loaBGEbOQz7VBF2w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1818,7 +1818,7 @@ MusicPlaylist( artist_id: Some("UCWfV8HxoaMqkxfTdkG7x7mA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1850,7 +1850,7 @@ MusicPlaylist( name: "The Middle", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1874,7 +1874,7 @@ MusicPlaylist( artist_id: Some("UCN8aYfV4Em0pc0hxVXBTA-A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1898,7 +1898,7 @@ MusicPlaylist( artist_id: Some("UC3_kaldIP4G9nOBaE_u6e6Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1922,7 +1922,7 @@ MusicPlaylist( artist_id: Some("UCTSbqi0xW0G2qyV8fImyntQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1946,7 +1946,7 @@ MusicPlaylist( artist_id: Some("UCS6sU7ELP0W4pxnTTw78yKg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1970,7 +1970,7 @@ MusicPlaylist( artist_id: Some("UCqlM8ftKlcvcvxFIHQEJKbQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1994,7 +1994,7 @@ MusicPlaylist( artist_id: Some("UCdz912kGd604kxSXASTndzQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2026,7 +2026,7 @@ MusicPlaylist( name: "Shivers (Image Of You)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2058,7 +2058,7 @@ MusicPlaylist( name: "Will You Love Me Tomorrow", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2090,7 +2090,7 @@ MusicPlaylist( name: "The Game", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2122,7 +2122,7 @@ MusicPlaylist( name: "Happy Accidents", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2154,7 +2154,7 @@ MusicPlaylist( name: "Grace (We All Try)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2186,7 +2186,7 @@ MusicPlaylist( name: "Don\'t Lay It All On Me", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -2218,7 +2218,7 @@ MusicPlaylist( name: "Words as Weapons", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_albums.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_albums.snap index 1e0a7a8..d09e380 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_albums.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_albums.snap @@ -38,7 +38,7 @@ MusicSearchResult( ), ], artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), - album_type: Single, + album_type: single, year: Some(2020), by_va: false, ), @@ -74,7 +74,7 @@ MusicSearchResult( ), ], artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), - album_type: Album, + album_type: album, year: Some(2022), by_va: false, ), @@ -110,7 +110,7 @@ MusicSearchResult( ), ], artist_id: Some("UCZK5n7V2-iPHfUXLV2tDvzw"), - album_type: Single, + album_type: single, year: Some(2020), by_va: false, ), @@ -146,7 +146,7 @@ MusicSearchResult( ), ], artist_id: Some("UCudOYmRtW3uylYtqY1aAD0A"), - album_type: Single, + album_type: single, year: Some(2020), by_va: false, ), @@ -182,7 +182,7 @@ MusicSearchResult( ), ], artist_id: Some("UC8whsREta_7Fu-EjRq2Ys-A"), - album_type: Single, + album_type: single, year: Some(2018), by_va: false, ), @@ -218,7 +218,7 @@ MusicSearchResult( ), ], artist_id: Some("UCRy7ecValgvorRe_8dum9lA"), - album_type: Ep, + album_type: ep, year: Some(2022), by_va: false, ), @@ -254,7 +254,7 @@ MusicSearchResult( ), ], artist_id: Some("UCdkNrc_l73BHYKRhDqxBo9w"), - album_type: Album, + album_type: album, year: Some(2017), by_va: false, ), @@ -290,7 +290,7 @@ MusicSearchResult( ), ], artist_id: Some("UCn09cNujyKjEA1NxD5Aj_mQ"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -326,7 +326,7 @@ MusicSearchResult( ), ], artist_id: Some("UCYAFIwL4uBWQHBrBiohx1vw"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), @@ -370,7 +370,7 @@ MusicSearchResult( ), ], artist_id: Some("UCs04jfHH78YUziFA52P97LA"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -406,7 +406,7 @@ MusicSearchResult( ), ], artist_id: Some("UCZwE-b-kzA4pQaCQXwOQnlg"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -442,7 +442,7 @@ MusicSearchResult( ), ], artist_id: Some("UC_SI7sOel-qMTvSe-lGHX8w"), - album_type: Single, + album_type: single, year: Some(2018), by_va: false, ), @@ -478,7 +478,7 @@ MusicSearchResult( ), ], artist_id: Some("UCMZowOoC3u_ntr9o52ekeZw"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -514,7 +514,7 @@ MusicSearchResult( ), ], artist_id: Some("UCX6v_euBwliDYV2NMTouuSA"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -550,7 +550,7 @@ MusicSearchResult( ), ], artist_id: Some("UCAlOD5s3Ro27M61-2Z_UB7w"), - album_type: Single, + album_type: single, year: Some(2013), by_va: false, ), @@ -586,7 +586,7 @@ MusicSearchResult( ), ], artist_id: Some("UC77rFNJxH8Y2VwSYp8ZTXHA"), - album_type: Single, + album_type: single, year: Some(2020), by_va: false, ), @@ -622,7 +622,7 @@ MusicSearchResult( ), ], artist_id: Some("UCxX9tNcQgCBuU56ezupriqg"), - album_type: Album, + album_type: album, year: Some(2011), by_va: false, ), @@ -658,7 +658,7 @@ MusicSearchResult( ), ], artist_id: Some("UC6Y8G45J9Uv2EsLLOatymOw"), - album_type: Single, + album_type: single, year: Some(2022), by_va: false, ), @@ -694,7 +694,7 @@ MusicSearchResult( ), ], artist_id: Some("UCaDT20-B3U8h-tPg_VMvntw"), - album_type: Album, + album_type: album, year: Some(2012), by_va: false, ), @@ -730,7 +730,7 @@ MusicSearchResult( ), ], artist_id: Some("UCJq1MEuNM0SidXn5pMqqHBA"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_artist.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_artist.snap index e5d6979..05732a9 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_artist.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_artist.snap @@ -51,7 +51,7 @@ MusicSearchResult( name: "Midnights (3am Edition)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -83,7 +83,7 @@ MusicSearchResult( name: "Fearless (Platinum Edition)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -119,7 +119,7 @@ MusicSearchResult( ), ], artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"), - album_type: Single, + album_type: single, year: Some(2023), by_va: false, )), @@ -151,7 +151,7 @@ MusicSearchResult( name: "Red", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -183,7 +183,7 @@ MusicSearchResult( name: "Red", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -215,7 +215,7 @@ MusicSearchResult( name: "Midnights", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -239,7 +239,7 @@ MusicSearchResult( artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"), album: None, view_count: Some(123000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -263,7 +263,7 @@ MusicSearchResult( artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"), album: None, view_count: Some(1300000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -287,7 +287,7 @@ MusicSearchResult( artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"), album: None, view_count: Some(402000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -323,7 +323,7 @@ MusicSearchResult( ), ], artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, )), @@ -359,7 +359,7 @@ MusicSearchResult( ), ], artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"), - album_type: Ep, + album_type: ep, year: Some(2019), by_va: false, )), @@ -395,7 +395,7 @@ MusicSearchResult( ), ], artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, )), @@ -427,6 +427,7 @@ MusicSearchResult( channel: None, track_count: Some(72), from_ytm: true, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "PLMtpqbF01MkVhY0_Z4Afg1m3xCKa2kNBf", @@ -454,6 +455,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "PLsK_PMdOWOamZphWwqin4A1vw9IJQ0bxC", @@ -481,6 +483,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "PL_MyZJz846m0QstXAZMmDUJAEHw6je6-_", @@ -508,6 +511,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Artist(ArtistItem( id: "UCprAFmT0C6O4X0ToEXpeFTQ", diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_default.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_default.snap index 71664ed..ae29e6a 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_default.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_default.snap @@ -26,7 +26,7 @@ MusicSearchResult( artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, view_count: Some(273000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -50,7 +50,7 @@ MusicSearchResult( artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, view_count: Some(43000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -74,7 +74,7 @@ MusicSearchResult( artist_id: Some("UCx5Dw_5guQcKu_lMGCh-IuQ"), album: None, view_count: Some(1500000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -98,7 +98,7 @@ MusicSearchResult( artist_id: Some("UCrGYENbzwtva2X16bAPhTbA"), album: None, view_count: Some(1500000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -130,7 +130,7 @@ MusicSearchResult( name: "Black Mamba", )), view_count: Some(544000000), - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -162,7 +162,7 @@ MusicSearchResult( name: "Ghetto Millionnaire", )), view_count: Some(1200000), - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -194,7 +194,7 @@ MusicSearchResult( name: "The Black Mamba", )), view_count: Some(1300000), - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -218,7 +218,7 @@ MusicSearchResult( artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, view_count: Some(9600000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -242,7 +242,7 @@ MusicSearchResult( artist_id: Some("UC5BMQOsAB8hKUyHu9KI6yig"), album: None, view_count: None, - is_video: true, + track_type: episode, track_nr: None, by_va: false, )), @@ -266,7 +266,7 @@ MusicSearchResult( artist_id: Some("UCAOoElZAQnI0zN91qvzezCw"), album: None, view_count: Some(213000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -302,7 +302,7 @@ MusicSearchResult( ), ], artist_id: Some("UClSZ2io808U-NOICSbjvwEg"), - album_type: Single, + album_type: single, year: Some(2024), by_va: false, )), @@ -338,7 +338,7 @@ MusicSearchResult( ), ], artist_id: Some("UCzKrKM1QQQyw8uZ_NcNldGQ"), - album_type: Single, + album_type: single, year: Some(2024), by_va: false, )), @@ -374,7 +374,7 @@ MusicSearchResult( ), ], artist_id: Some("UC7R_cJYLxanyOw9KsfOzu7Q"), - album_type: Single, + album_type: single, year: Some(2024), by_va: false, )), @@ -404,6 +404,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "PL38uS170Dxaatridfyyj-fqjSOlwg7h5R", @@ -431,6 +432,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "PLEl8NhnoNOpbZ0HkkChu3xEhKShx_vtya", @@ -458,6 +460,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Artist(ArtistItem( id: "UCaDT20-B3U8h-tPg_VMvntw", @@ -538,6 +541,7 @@ MusicSearchResult( channel: None, track_count: None, from_ytm: false, + is_podcast: true, )), Playlist(MusicPlaylistItem( id: "PL4OEJAvKcBHAe32md9b1c9kEUNi6Ifbqu", @@ -557,6 +561,7 @@ MusicSearchResult( channel: None, track_count: None, from_ytm: false, + is_podcast: true, )), Playlist(MusicPlaylistItem( id: "PLQ0daRB_QJ_ZkIhLnp_nPeURDM4vQM5yg", @@ -586,6 +591,7 @@ MusicSearchResult( channel: None, track_count: None, from_ytm: false, + is_podcast: true, )), Track(TrackItem( id: "xd-9D3GzUpo", @@ -607,7 +613,7 @@ MusicSearchResult( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: episode, track_nr: None, by_va: false, )), @@ -631,7 +637,7 @@ MusicSearchResult( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: episode, track_nr: None, by_va: false, )), @@ -655,7 +661,7 @@ MusicSearchResult( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: episode, track_nr: None, by_va: false, )), diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_live.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_live.snap index 449f0c2..b0f605b 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_live.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_live.snap @@ -34,6 +34,7 @@ MusicSearchResult( channel: None, track_count: None, from_ytm: true, + is_podcast: false, )), Track(TrackItem( id: "t-xeMn8D53o", @@ -63,7 +64,7 @@ MusicSearchResult( name: "A Taste Of The 50\'s", )), view_count: Some(12000000), - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -95,7 +96,7 @@ MusicSearchResult( name: "Top 20 Kids Pop Chart Hits - The Very Best Children\'s Party Smash Hits!", )), view_count: Some(1800000), - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -127,7 +128,7 @@ MusicSearchResult( name: "Hunting High and Low", )), view_count: Some(2400000000), - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -151,7 +152,7 @@ MusicSearchResult( artist_id: Some("UCUUjvLsLlT1rj6N2oqM_tnw"), album: None, view_count: Some(53000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -175,7 +176,7 @@ MusicSearchResult( artist_id: Some("UCKxW3x-6j8r0Yzm1i6bs9WA"), album: None, view_count: Some(23000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -211,7 +212,7 @@ MusicSearchResult( ), ], artist_id: Some("UC9StjndgeeKQmwjy47-FxyA"), - album_type: Single, + album_type: single, year: Some(2024), by_va: false, )), @@ -247,7 +248,7 @@ MusicSearchResult( ), ], artist_id: Some("UC0Gx6D-oHq-17IftnDlWPGA"), - album_type: Album, + album_type: album, year: Some(2014), by_va: false, )), @@ -283,7 +284,7 @@ MusicSearchResult( ), ], artist_id: Some("UCpqFkivR-Erb2npqfQEaaPQ"), - album_type: Album, + album_type: album, year: Some(2020), by_va: false, )), @@ -315,6 +316,7 @@ MusicSearchResult( channel: None, track_count: Some(110), from_ytm: true, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "RDCLAK5uy_nwiihKFMxWvkwG-hJlHX0VxKYFlbL3Muk", @@ -344,6 +346,7 @@ MusicSearchResult( channel: None, track_count: Some(154), from_ytm: true, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "RDCLAK5uy_kskrFUGb5Tnz3-x4wyK9Q5j8RgfwQvq4k", @@ -373,6 +376,7 @@ MusicSearchResult( channel: None, track_count: Some(85), from_ytm: true, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "PLjPrfFZlhTgrv14nDcvsD5Ni9EYgdowe4", @@ -400,6 +404,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "PLGBuKfnErZlB3AThAEKz8_3kbYTocgfbB", @@ -427,6 +432,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "PLBUQc1r4P3Zn8_48OHdcw_2w7wCTA87vo", @@ -454,6 +460,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Artist(ArtistItem( id: "UCBXkAv-NKkbiqWntYOfrX1g", @@ -529,6 +536,7 @@ MusicSearchResult( channel: None, track_count: None, from_ytm: false, + is_podcast: true, )), Playlist(MusicPlaylistItem( id: "PL-ijX1Uy5ZgU4hGBeJ6jLDvQeRaiFhNTd", @@ -553,6 +561,7 @@ MusicSearchResult( channel: None, track_count: None, from_ytm: false, + is_podcast: true, )), Playlist(MusicPlaylistItem( id: "PL-ijX1Uy5ZgU1drn0TYDYHwr0dJ1qc_yD", @@ -577,6 +586,7 @@ MusicSearchResult( channel: None, track_count: None, from_ytm: false, + is_podcast: true, )), Track(TrackItem( id: "M5q3wMm6D7Y", @@ -598,7 +608,7 @@ MusicSearchResult( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: episode, track_nr: None, by_va: false, )), @@ -622,7 +632,7 @@ MusicSearchResult( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: episode, track_nr: None, by_va: false, )), @@ -646,7 +656,7 @@ MusicSearchResult( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: episode, track_nr: None, by_va: false, )), diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_radio.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_radio.snap index 8c5b912..c399053 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_radio.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_radio.snap @@ -34,7 +34,7 @@ MusicSearchResult( name: "Greatest Hits (Deluxe)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -66,7 +66,7 @@ MusicSearchResult( name: "Das böse Glück (Bonus Edition)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -98,7 +98,7 @@ MusicSearchResult( name: "IM NAYEON", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -122,7 +122,7 @@ MusicSearchResult( artist_id: Some("UC6ZVjGqRf7elKAcYTXCaIsw"), album: None, view_count: Some(2400000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -146,7 +146,7 @@ MusicSearchResult( artist_id: Some("UCM7nREGFBumYELglbtUL8FA"), album: None, view_count: Some(2100000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -170,7 +170,7 @@ MusicSearchResult( artist_id: Some("UCOVD3PtbJGiAcp-c6opijoQ"), album: None, view_count: Some(67000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -201,7 +201,7 @@ MusicSearchResult( ], artists: [], artist_id: None, - album_type: Album, + album_type: album, year: Some(2016), by_va: true, )), @@ -232,7 +232,7 @@ MusicSearchResult( ], artists: [], artist_id: None, - album_type: Album, + album_type: album, year: Some(2022), by_va: true, )), @@ -268,7 +268,7 @@ MusicSearchResult( ), ], artist_id: Some("UCG7LUZBrK6GcfTwowTeTiOQ"), - album_type: Album, + album_type: album, year: Some(2002), by_va: false, )), @@ -300,6 +300,7 @@ MusicSearchResult( channel: None, track_count: Some(50), from_ytm: true, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "RDCLAK5uy_kLB769E3eFSzgy4fbpu6-1YPLh90b0JAY", @@ -329,6 +330,7 @@ MusicSearchResult( channel: None, track_count: Some(54), from_ytm: true, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "RDCLAK5uy_mCvOm3kQy1RTBwDOGYkNhtHwMO89ffquk", @@ -358,6 +360,7 @@ MusicSearchResult( channel: None, track_count: Some(50), from_ytm: true, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "PL47aILYuQXEKiHdqMfNCHat1Gck3XQrrK", @@ -385,6 +388,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "PL5ITQ2Yq_HLpidRR3wAio-YRBnG7-FeLd", @@ -412,6 +416,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "PLX6L4t7t6ZanfCJ1wBxRdGZ_mk9ygmKqo", @@ -439,6 +444,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Artist(ArtistItem( id: "UCSZJrhZ2_ILCpyk3Z3AZVTA", diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_typo.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_typo.snap index d37ab3c..2128d16 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_typo.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_typo.snap @@ -38,7 +38,7 @@ MusicSearchResult( ), ], artist_id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"), - album_type: Single, + album_type: single, year: Some(2015), by_va: false, )), @@ -70,7 +70,7 @@ MusicSearchResult( name: "Lieblingsmensch", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -102,7 +102,7 @@ MusicSearchResult( name: "Lieblingsmensch", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -134,7 +134,7 @@ MusicSearchResult( name: "Gegenstück EP", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, )), @@ -158,7 +158,7 @@ MusicSearchResult( artist_id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"), album: None, view_count: Some(108000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -182,7 +182,7 @@ MusicSearchResult( artist_id: Some("UCgoJMRKimbxB374QjHgE6kA"), album: None, view_count: Some(10000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -206,7 +206,7 @@ MusicSearchResult( artist_id: Some("UCiQjRO2m3dBBlg7sqTaFA_A"), album: None, view_count: Some(56000), - is_video: true, + track_type: video, track_nr: None, by_va: false, )), @@ -242,7 +242,7 @@ MusicSearchResult( ), ], artist_id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"), - album_type: Ep, + album_type: ep, year: Some(2015), by_va: false, )), @@ -278,7 +278,7 @@ MusicSearchResult( ), ], artist_id: Some("UCCpID8TTjkkjLCwBybAfHSg"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, )), @@ -314,7 +314,7 @@ MusicSearchResult( ), ], artist_id: Some("UCCpID8TTjkkjLCwBybAfHSg"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, )), @@ -344,6 +344,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "PL-2Z-8cOvEixQ2EKumbXXW8XivJG6U7-D", @@ -371,6 +372,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Playlist(MusicPlaylistItem( id: "PLDnJKuRrOR5sx_jZ8-dsweq1OdayL_kpz", @@ -398,6 +400,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, )), Artist(ArtistItem( id: "UCIh4j8fXWf2U0ro0qnGU8Mg", diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_playlists_community.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_playlists_community.snap index a5b626d..fc64e9c 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_playlists_community.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_playlists_community.snap @@ -32,6 +32,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLI_7Mg2Z_-4Lf7IYeiTEOV8HBn-nMqz5N", @@ -59,6 +60,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLTC7VQ12-9raqhLCx1S1E_ic35t94dj28", @@ -86,6 +88,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLPssMy7y6ygl-Kzi9Mc7TVFFPWwyAXIwW", @@ -113,6 +116,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj", @@ -140,6 +144,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLX6L4t7t6ZanfCJ1wBxRdGZ_mk9ygmKqo", @@ -167,6 +172,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL1jMjCxDqxLvomtUMbqa_4pAjMmzpfgUy", @@ -194,6 +200,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLgRdph0qPLy53IhYrQLPpATDDA2TpFey5", @@ -221,6 +228,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLV9Y77TQ4I9dXpIF-r54ZTLM5T7C4k5jf", @@ -248,6 +256,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLlYKDqBVDxX2TXAf8ruuF3FVZgzF3wCTx", @@ -275,6 +284,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLMC9KNkIncKvYin_USF1qoJQnIyMAfRxl", @@ -302,6 +312,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLKUA473MWUv2jmkqIxzQR3YL4kuPArj4G", @@ -329,6 +340,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLkqz3S84Tw-RfPS9HHi3MRmrinOBKxIr8", @@ -356,6 +368,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLEBX04z4REEaHbC7ghEqFwwL4ptIw8qaZ", @@ -383,6 +396,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLMC9KNkIncKtGvr2kFRuXBVmBev6cAJ2u", @@ -410,6 +424,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PL9NY5axt700FjL6HlEhqlMFT1gjMGVBgy", @@ -437,6 +452,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLTariUrSxayvzHkCnEiX5-NSeFgLTqzHE", @@ -464,6 +480,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLB8HqqmpyIBcPirb5lDm-ol01trE6dOuM", @@ -491,6 +508,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLkqz3S84Tw-Qlth8bNBpXGO7L4J1PkCW7", @@ -518,6 +536,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "PLkqz3S84Tw-SvUSUY5Ov8LTP3KWuWxFab", @@ -545,6 +564,7 @@ MusicSearchResult( )), track_count: None, from_ytm: false, + is_podcast: false, ), ], ctoken: Some("EoQIEgNwb3Aa_AdFZ2VLQVFRb0FFQUJTQlJxREJBREVBUVFDUkFPRUFvUUJZSUJJbEJNUkVsdlZVOW9VVkZRYkZaeU0zRmxjRTFXVW5ORVpUUlVPSFpPVVhOMmJtLUNBU0pRVEVsZk4wMW5NbHBmTFRSTVpqZEpXV1ZwVkVWUFZqaElRbTR0YmsxeGVqVk9nZ0VpVUV4VVF6ZFdVVEV5TFRseVlYRm9URU40TVZNeFJWOXBZek0xZERrMFpHb3lPSUlCSWxCTVVITnpUWGszZVRaNVoyd3RTM3BwT1Uxak4xUldSa1pRVjNkNVFWaEpkMWVDQVNKUVRFMURPVXRPYTBsdVkwdDBVSHBuV1MwMWNtMW9kbW8zWm1GNE9HWmtlRzlxZ2dFaVVFeFlOa3cwZERkME5scGhibVpEU2pGM1FuaFNaRWRhWDIxck9YbG5iVXR4YjRJQklsQk1NV3BOYWtONFJIRjRUSFp2YlhSVlRXSnhZVjgwY0VGcVRXMTZjR1puVlhtQ0FTSlFUR2RTWkhCb01IRlFUSGsxTTBsb1dYSlJURkJ3UVZSRVJFRXlWSEJHWlhrMWdnRWlVRXhXT1ZrM04xUlJORWs1WkZod1NVWXRjalUwV2xSTVRUVlVOME0wYXpWcVpvSUJJbEJNYkZsTFJIRkNWa1I0V0RKVVdFRm1PSEoxZFVZelJsWmFaM3BHTTNkRFZIaUNBU0pRVEUxRE9VdE9hMGx1WTB0MldXbHVYMVZUUmpGeGIwcFJia2w1VFVGbVVuaHNnZ0VpVUV4TFZVRTBOek5OVjFWMk1tcHRhM0ZKZUhwUlVqTlpURFJyZFZCQmNtbzBSNElCSWxCTWEzRjZNMU00TkZSM0xWSm1VRk01U0VocE0wMVNiWEpwYms5Q1MzaEpjamlDQVNKUVRFVkNXREEwZWpSU1JVVmhTR0pETjJkb1JYRkdkM2RNTkhCMFNYYzRjV0ZhZ2dFaVVFeE5RemxMVG10SmJtTkxkRWQyY2pKclJsSjFXRUpXYlVKbGRqWmpRVW95ZFlJQklsQk1PVTVaTldGNGREY3dNRVpxVERaSWJFVm9jV3hOUmxReFoycE5SMVpDWjNtQ0FTSlFURlJoY21sVmNsTjRZWGwyZWtoclEyNUZhVmcxTFU1VFpVWm5URlJ4ZWtoRmdnRWlVRXhDT0VoeGNXMXdlVWxDWTFCcGNtSTFiRVJ0TFc5c01ERjBja1UyWkU5MVRZSUJJbEJNYTNGNk0xTTRORlIzTFZGc2RHZzRZazVDY0ZoSFR6ZE1ORW94VUd0RFZ6ZUNBU0pRVEd0eGVqTlRPRFJVZHkxVGRsVlRWVmsxVDNZNFRGUlFNMHRYZFZkNFJtRmkY8erQLg%3D%3D"), diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_playlists_ytm.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_playlists_ytm.snap index 00daa94..1170fc9 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_playlists_ytm.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_playlists_ytm.snap @@ -34,6 +34,7 @@ MusicSearchResult( channel: None, track_count: Some(225), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk", @@ -63,6 +64,7 @@ MusicSearchResult( channel: None, track_count: Some(100), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nH_fdBVCcbNaVwi_tmZajZRq-ekddiuFY", @@ -92,6 +94,7 @@ MusicSearchResult( channel: None, track_count: Some(92), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lb6CVU6S4uVugLVNTU9WhqfaomWAgnho4", @@ -121,6 +124,7 @@ MusicSearchResult( channel: None, track_count: Some(50), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI", @@ -150,6 +154,7 @@ MusicSearchResult( channel: None, track_count: Some(59), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA", @@ -179,6 +184,7 @@ MusicSearchResult( channel: None, track_count: Some(100), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kLB769E3eFSzgy4fbpu6-1YPLh90b0JAY", @@ -208,6 +214,7 @@ MusicSearchResult( channel: None, track_count: Some(54), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY", @@ -237,6 +244,7 @@ MusicSearchResult( channel: None, track_count: Some(67), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mHW5bcduhjB-PkTePAe6EoRMj1xNT8gzY", @@ -266,6 +274,7 @@ MusicSearchResult( channel: None, track_count: Some(88), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nWFLXjO1mIJnP4wAmxjfDS40Zmu6nF9DU", @@ -295,6 +304,7 @@ MusicSearchResult( channel: None, track_count: Some(61), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lHu_HYAQ0A-OfCwhuky240HOdM1UduuyA", @@ -324,6 +334,7 @@ MusicSearchResult( channel: None, track_count: Some(48), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lw21MuKaqFsDBIPZSbRmZcoDrHmV_c6uY", @@ -353,6 +364,7 @@ MusicSearchResult( channel: None, track_count: Some(53), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lY6JFrs7W9yIhFjUN_yxQ_ubkjcrqQaVs", @@ -382,6 +394,7 @@ MusicSearchResult( channel: None, track_count: Some(176), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nbK9qSkqYZvtMXH1fLCMmC1yn8HEm0W90", @@ -411,6 +424,7 @@ MusicSearchResult( channel: None, track_count: Some(50), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kIcfhFcnJ9fdkKHw96Gvr6Q0_bAyWiZbM", @@ -440,6 +454,7 @@ MusicSearchResult( channel: None, track_count: Some(78), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg", @@ -469,6 +484,7 @@ MusicSearchResult( channel: None, track_count: Some(50), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_l7K78k4EkjcFojhd1617rmUjY-aet6-t0", @@ -498,6 +514,7 @@ MusicSearchResult( channel: None, track_count: Some(106), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nCVF_zUZizzRcojIUuYmaXxMoPgg2WMDo", @@ -527,6 +544,7 @@ MusicSearchResult( channel: None, track_count: Some(55), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nGKsW16ocmP8l8wL1oMIyR53cu4N5fyKI", @@ -556,6 +574,7 @@ MusicSearchResult( channel: None, track_count: Some(50), from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_mVJ3RRi_YBfUJnZnQxLAedQQcXHujbUcg", @@ -585,6 +604,7 @@ MusicSearchResult( channel: None, track_count: Some(100), from_ytm: true, + is_podcast: false, ), ], ctoken: Some("EvQJEgNwb3Aa7AlFZ2VLQVFRb0FEZ0JTQlJxREJBREVBUVFDUkFPRUFvUUJZSUJLMUpFUTB4QlN6VjFlVjl1YlZNeldXOTRVM2RXVmxGck9XeEZVVW93VlZnMFdrTnFXSE5YWDNCelZUaUNBU3RTUkVOTVFVczFkWGxmYm1aelgzUTBSbFYxTURCRk5VVkVObXgyWlVWQ1FsZ3hWazFaWlRGdFJtcHJnZ0VyVWtSRFRFRkxOWFY1WDI1SVgyWmtRbFpEWTJKT1lWWjNhVjkwYlZwaGFscFNjUzFsYTJSa2FYVkdXWUlCSzFKRVEweEJTelYxZVY5c1lqWkRWbFUyVXpSMVZuVm5URlpPVkZVNVYyaHhabUZ2YlZkQloyNW9ielNDQVN0U1JFTk1RVXMxZFhsZmJXWmtjWFpEUVd3NGQyOWtiSGd5VURKZlFXa3laMDVyYVZKRVFYVm1hMnRKZ2dFclVrUkRURUZMTlhWNVgyNUlVM0ZEU21wRWNsYzVTRUpvUTA1a1JqWjBWMUJrYms5TmJtZFBkakIzUVlJQksxSkVRMHhCU3pWMWVWOXJURUkzTmpsRk0yVkdVM3BuZVRSbVluQjFOaTB4V1ZCTWFEa3dZakJLUVZtQ0FTdFNSRU5NUVVzMWRYbGZiVjh3VlRWV1VVNTVlWHAzZDBneGJGSnBOMk5RUVVGSFdIRk9VVzVCVDNGWmdnRXJVa1JEVEVGTE5YVjVYMjFJVnpWaVkyUjFhR3BDTFZCclZHVlFRV1UyUlc5U1RXb3hlRTVVT0dkNldZSUJLMUpFUTB4QlN6VjFlVjl1VjBaTVdHcFBNVzFKU201UU5IZEJiWGhxWmtSVE5EQmFiWFUyYmtZNVJGV0NBU3RTUkVOTVFVczFkWGxmYkVoMVgwaFpRVkV3UVMxUFprTjNhSFZyZVRJME1FaFBaRTB4VldSMWRYbEJnZ0VyVWtSRFRFRkxOWFY1WDJ4M01qRk5kVXRoY1VaelJFSkpVRnBUWWxKdFdtTnZSSEpJYlZaZll6WjFXWUlCSzFKRVEweEJTelYxZVY5c1dUWktSbkp6TjFjNWVVbG9SbXBWVGw5NWVGRmZkV0pyYW1OeWNWRmhWbk9DQVN0U1JFTk1RVXMxZFhsZmJtSkxPWEZUYTNGWlduWjBUVmhJTVdaTVEwMXRRekY1YmpoSVJXMHdWemt3Z2dFclVrUkRURUZMTlhWNVgydEpZMlpvUm1OdVNqbG1aR3RMU0hjNU5rZDJjalpSTUY5aVFYbFhhVnBpVFlJQksxSkVRMHhCU3pWMWVWOXVSRXc0UzJWQ2NsVmhaM2Q1U1ZOM1RtMTVSV2xUWmxsbmVqRm5Wa05sYzJlQ0FTdFNSRU5NUVVzMWRYbGZiRGRMTnpock5FVnJhbU5HYjJwb1pERTJNVGR5YlZWcVdTMWhaWFEyTFhRd2dnRXJVa1JEVEVGTE5YVjVYMjVEVmtaZmVsVmFhWHA2VW1OdmFrbFZkVmx0WVZoNFRXOVFaMmN5VjAxRWI0SUJLMUpFUTB4QlN6VjFlVjl1UjB0elZ6RTJiMk50VURoc09IZE1NVzlOU1hsU05UTmpkVFJPTldaNVMwbUNBU3RTUkVOTVFVczFkWGxmYlZaS00xSlNhVjlaUW1aVlNtNWFibEY0VEVGbFpGRlJZMWhJZFdwaVZXTm4Y8erQLg%3D%3D"), diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_suggestion_default.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_suggestion_default.snap index 719c930..e7e40c0 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_suggestion_default.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_suggestion_default.snap @@ -72,7 +72,7 @@ MusicSearchSuggestion( name: "Was Spaß macht...", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, )), diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_default.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_default.snap index 4b18010..1a7fbc3 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_default.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_default.snap @@ -34,7 +34,7 @@ MusicSearchResult( name: "Black Mamba", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -70,7 +70,7 @@ MusicSearchResult( name: "Megamind (Music from the Motion Picture)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -102,7 +102,7 @@ MusicSearchResult( name: "Black Mamba (Orchestra Version)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -134,7 +134,7 @@ MusicSearchResult( name: "Black Mamba", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -166,7 +166,7 @@ MusicSearchResult( name: "LISTEN ME", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -198,7 +198,7 @@ MusicSearchResult( name: "J-Tull Dot Com", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -230,7 +230,7 @@ MusicSearchResult( name: "Hidden Tape", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -262,7 +262,7 @@ MusicSearchResult( name: "Reptile", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -294,7 +294,7 @@ MusicSearchResult( name: "Black Mamba", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -326,7 +326,7 @@ MusicSearchResult( name: "Black Mamba", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -358,7 +358,7 @@ MusicSearchResult( name: "Elementos", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -390,7 +390,7 @@ MusicSearchResult( name: "Bleem多维视角", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -426,7 +426,7 @@ MusicSearchResult( name: "BLCK MAMBA", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -458,7 +458,7 @@ MusicSearchResult( name: "Mathomo Mayo", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -490,7 +490,7 @@ MusicSearchResult( name: "Told Black", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -526,7 +526,7 @@ MusicSearchResult( name: "Night & Dayz / Black Mamba", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -558,7 +558,7 @@ MusicSearchResult( name: "Black Mamba Jiu Jitsu", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -590,7 +590,7 @@ MusicSearchResult( name: "Kings Dub", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -622,7 +622,7 @@ MusicSearchResult( name: "Out on the Road", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -654,7 +654,7 @@ MusicSearchResult( name: "Area 51", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_no_artist_link.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_no_artist_link.snap index 5c2d043..89e49d0 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_no_artist_link.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_no_artist_link.snap @@ -38,7 +38,7 @@ MusicSearchResult( name: "Am sichersten seid ihr im Auto", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -70,7 +70,7 @@ MusicSearchResult( name: "Am sichersten sind wir zu Hause", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -102,7 +102,7 @@ MusicSearchResult( name: "LIVE in Scheeßel 2020 (Live)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -134,7 +134,7 @@ MusicSearchResult( name: "Anstarren oder Wegsehen?", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -166,7 +166,7 @@ MusicSearchResult( name: "Mallorca Warm Up", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -198,7 +198,7 @@ MusicSearchResult( name: "Ballermann Après-Ski Party 2022", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -238,7 +238,7 @@ MusicSearchResult( name: "#Malehrlich: 52 ungeschminkte Impulse einer Unternehmerin", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_typo.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_typo.snap index 06bc59d..b66f30c 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_typo.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_typo.snap @@ -34,7 +34,7 @@ MusicSearchResult( name: "Lieblingsmensch", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -66,7 +66,7 @@ MusicSearchResult( name: "Lieblingsmensch", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -98,7 +98,7 @@ MusicSearchResult( name: "Lieblingsmensch", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -130,7 +130,7 @@ MusicSearchResult( name: "Lieblingsmensch (Edit)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -162,7 +162,7 @@ MusicSearchResult( name: "echt seerisch", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -194,7 +194,7 @@ MusicSearchResult( name: "Notiz an mich", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -226,7 +226,7 @@ MusicSearchResult( name: "KIDZ BOP Ultimate Playlist", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -258,7 +258,7 @@ MusicSearchResult( name: "Lieblingsmensch", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -290,7 +290,7 @@ MusicSearchResult( name: "Gegenstück EP", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -322,7 +322,7 @@ MusicSearchResult( name: "Lieblingsmensch", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -354,7 +354,7 @@ MusicSearchResult( name: "Lieblingsmensch", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -386,7 +386,7 @@ MusicSearchResult( name: "Zusammen", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -418,7 +418,7 @@ MusicSearchResult( name: "Lieblingsmensch", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -450,7 +450,7 @@ MusicSearchResult( name: "Lieblingsmensch", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -482,7 +482,7 @@ MusicSearchResult( name: "Lieblingsmensch", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -514,7 +514,7 @@ MusicSearchResult( name: "Volksmusik Sommer 2017", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -546,7 +546,7 @@ MusicSearchResult( name: "Ballermann Stars - Après Ski Hits 2016 Party (Die XXL Schlager Party im Karneval und Fasching der Saison 2015 bis 2016)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -578,7 +578,7 @@ MusicSearchResult( name: "25 Trap Beats, Vol. 5", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -610,7 +610,7 @@ MusicSearchResult( name: "Ballermann Raketen - Die Party Hits für Weihnachten und die Silvester Schlager Fete der Saison 2015 bis 2016", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -642,7 +642,7 @@ MusicSearchResult( name: "Live @ DELUXE MUSIC SESSION", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_videos.snap b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_videos.snap index d41b358..0bd76fe 100644 --- a/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_videos.snap +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_tracks_videos.snap @@ -26,7 +26,7 @@ MusicSearchResult( artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, view_count: Some(235000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -50,7 +50,7 @@ MusicSearchResult( artist_id: Some("UCyEMqKQPGdj8wKVKt2-agbQ"), album: None, view_count: Some(6400), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -74,7 +74,7 @@ MusicSearchResult( artist_id: Some("UC0PlwwXUJihXdol4I9vuE0g"), album: None, view_count: Some(701), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -98,7 +98,7 @@ MusicSearchResult( artist_id: Some("UCzP_LIeF9W26F7o03k-Y9CQ"), album: None, view_count: Some(80000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -122,7 +122,7 @@ MusicSearchResult( artist_id: Some("UCRpjHHu8ivVWs73uxHlWwFA"), album: None, view_count: Some(1100000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -146,7 +146,7 @@ MusicSearchResult( artist_id: Some("UCoRXPcv8XK5fAplLbk9PTww"), album: None, view_count: Some(269000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -170,7 +170,7 @@ MusicSearchResult( artist_id: Some("UCsw9NVMkJfbxHTuMUMlk3mw"), album: None, view_count: Some(32000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -194,7 +194,7 @@ MusicSearchResult( artist_id: Some("UCBju0pyQY7EWRvLqMkXcxBw"), album: None, view_count: Some(179000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -218,7 +218,7 @@ MusicSearchResult( artist_id: Some("UCawCt_6XWaFxZSW5ZKcIMew"), album: None, view_count: Some(69000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -242,7 +242,7 @@ MusicSearchResult( artist_id: Some("UC_vrqgb3YLoe2MYSJm2aO-A"), album: None, view_count: Some(28000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -266,7 +266,7 @@ MusicSearchResult( artist_id: Some("UC5BMQOsAB8hKUyHu9KI6yig"), album: None, view_count: Some(1300000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -290,7 +290,7 @@ MusicSearchResult( artist_id: Some("UCoRXPcv8XK5fAplLbk9PTww"), album: None, view_count: Some(3000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -314,7 +314,7 @@ MusicSearchResult( artist_id: Some("UCaDT20-B3U8h-tPg_VMvntw"), album: None, view_count: Some(49000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -338,7 +338,7 @@ MusicSearchResult( artist_id: Some("UCEAgugIw6pHGg7MRlkOU1Dw"), album: None, view_count: Some(29000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -362,7 +362,7 @@ MusicSearchResult( artist_id: Some("UCAj9gLNfM0q3MFhovVmAtBw"), album: None, view_count: Some(823), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -386,7 +386,7 @@ MusicSearchResult( artist_id: Some("UCRpjHHu8ivVWs73uxHlWwFA"), album: None, view_count: Some(1800000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -410,7 +410,7 @@ MusicSearchResult( artist_id: Some("UCeLPm9yH_a_QH8n6445G-Ow"), album: None, view_count: Some(4400000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -434,7 +434,7 @@ MusicSearchResult( artist_id: Some("UCaDT20-B3U8h-tPg_VMvntw"), album: None, view_count: Some(1300), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -458,7 +458,7 @@ MusicSearchResult( artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, view_count: Some(249000000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -482,7 +482,7 @@ MusicSearchResult( artist_id: Some("UCB-TbzcDawIZVkG229eqnKg"), album: None, view_count: Some(15000), - is_video: true, + track_type: video, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist_related.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist_related.snap index e90c1c3..0d194d3 100644 --- a/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist_related.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist_related.snap @@ -23,6 +23,7 @@ Paginator( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nCUL5fa0G5mSAxmXU9tu4uGM1SoZ44OPA", @@ -42,6 +43,7 @@ Paginator( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_ksgASdLdWz-NAd_rDVowAxqT6xAEN5JAA", @@ -61,6 +63,7 @@ Paginator( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_lEt1yX7jdZ0dcr4e8N5Y8pUYsaO8nUc2E", @@ -80,6 +83,7 @@ Paginator( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kn1IcNFwwz5N_qekUFnvxYzPYHHRQ9_mY", @@ -99,6 +103,7 @@ Paginator( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kvH_VWOl1tx0Ad4H2F_4jaTMnImcuCFXc", @@ -118,6 +123,7 @@ Paginator( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_kSJ30ym-GRlGJvlZsM9xnK9dAZdonBoB0", @@ -137,6 +143,7 @@ Paginator( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "PLW4r_btbY6e3p8RuogQM9F8S3dFNgsMqn", @@ -159,6 +166,7 @@ Paginator( )), track_count: None, from_ytm: false, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_m55iAnFa25l8bl7m8vsTsmGph3-_yVBW0", @@ -178,6 +186,7 @@ Paginator( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), MusicPlaylistItem( id: "RDCLAK5uy_nLm6_mnMdOQD1vZypJ0yPpzJPuzfPN4d4", @@ -197,6 +206,7 @@ Paginator( channel: None, track_count: None, from_ytm: true, + is_podcast: false, ), ], ctoken: None, diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist_tracks.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist_tracks.snap index 623b5bc..1c3a627 100644 --- a/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist_tracks.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist_tracks.snap @@ -25,7 +25,7 @@ Paginator( artist_id: Some("UCDLPHv0SrvyUzct8UYQ9R_g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -53,7 +53,7 @@ Paginator( artist_id: Some("UCXUNYorrTVi7iG5FUnr-Gbg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -81,7 +81,7 @@ Paginator( artist_id: Some("UCcyO_SNHFhbdogh9PPBB9LA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -105,7 +105,7 @@ Paginator( artist_id: Some("UCJWteOVucKiI2Zy39jGoMZw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -129,7 +129,7 @@ Paginator( artist_id: Some("UC3MZNlOw72DZEeoBo7PzHEA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -153,7 +153,7 @@ Paginator( artist_id: Some("UCZHCkx-08zBqSD1A1C5TWrA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -177,7 +177,7 @@ Paginator( artist_id: Some("UCuA6k6g0Xzf6-JlgMXSSA0g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -201,7 +201,7 @@ Paginator( artist_id: Some("UCeKm0uZEL5xCB57pNgOw7mg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -225,7 +225,7 @@ Paginator( artist_id: Some("UCfKZwKZy9XFtHWPJMDYrmow"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -249,7 +249,7 @@ Paginator( artist_id: Some("UCx_r_19OjCTU93Koa2kFr1w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -273,7 +273,7 @@ Paginator( artist_id: Some("UCZHCkx-08zBqSD1A1C5TWrA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -297,7 +297,7 @@ Paginator( artist_id: Some("UCwdy-QmH4y-gqjC8PMbKVVg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -321,7 +321,7 @@ Paginator( artist_id: Some("UCXUNYorrTVi7iG5FUnr-Gbg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -345,7 +345,7 @@ Paginator( artist_id: Some("UCAbiUl42boUt6vUL019r9Bw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -369,7 +369,7 @@ Paginator( artist_id: Some("UCRU-s8cv-aOOuGXosCQ-hWA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -393,7 +393,7 @@ Paginator( artist_id: Some("UCXUNYorrTVi7iG5FUnr-Gbg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -417,7 +417,7 @@ Paginator( artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -441,7 +441,7 @@ Paginator( artist_id: Some("UCeKm0uZEL5xCB57pNgOw7mg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -465,7 +465,7 @@ Paginator( artist_id: Some("UCZHCkx-08zBqSD1A1C5TWrA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -489,7 +489,7 @@ Paginator( artist_id: Some("UCaDQ6gDmX-hVFWz_SDb9GKg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -513,7 +513,7 @@ Paginator( artist_id: Some("UCHOrIXuV6IFUS-cdHEwPYcg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -537,7 +537,7 @@ Paginator( artist_id: Some("UC7VGRS1q1XzHsAm1uM1PQ_Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -561,7 +561,7 @@ Paginator( artist_id: Some("UCrWi76yRUDOyIkoM-3rst6g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -585,7 +585,7 @@ Paginator( artist_id: Some("UCrbdusWBqxVtEsktO3EfP3A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -609,7 +609,7 @@ Paginator( artist_id: Some("UCAbiUl42boUt6vUL019r9Bw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -633,7 +633,7 @@ Paginator( artist_id: Some("UCZHCkx-08zBqSD1A1C5TWrA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -657,7 +657,7 @@ Paginator( artist_id: Some("UCZHCkx-08zBqSD1A1C5TWrA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -681,7 +681,7 @@ Paginator( artist_id: Some("UCJWteOVucKiI2Zy39jGoMZw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -705,7 +705,7 @@ Paginator( artist_id: Some("UCZHCkx-08zBqSD1A1C5TWrA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -729,7 +729,7 @@ Paginator( artist_id: Some("UCupgfYuFD4-0Rq7yPIVDLtA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -753,7 +753,7 @@ Paginator( artist_id: Some("UChewMSJ_RAvnoPqMyJZ95_g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -777,7 +777,7 @@ Paginator( artist_id: Some("UCrWi76yRUDOyIkoM-3rst6g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -801,7 +801,7 @@ Paginator( artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -825,7 +825,7 @@ Paginator( artist_id: Some("UCAbiUl42boUt6vUL019r9Bw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -853,7 +853,7 @@ Paginator( artist_id: Some("UCr-f5ECZ7DCJk7ygmEij1HA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -877,7 +877,7 @@ Paginator( artist_id: None, album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -905,7 +905,7 @@ Paginator( artist_id: Some("UC8gxc2fYnL1tHPOXHXyI6sQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -929,7 +929,7 @@ Paginator( artist_id: Some("UCO8_DFkr_fn_YDup_7OZNow"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -957,7 +957,7 @@ Paginator( artist_id: Some("UCQpUg11TCB1eLGO1f59Ce6Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -985,7 +985,7 @@ Paginator( artist_id: Some("UC8gxc2fYnL1tHPOXHXyI6sQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1009,7 +1009,7 @@ Paginator( artist_id: Some("UCuA6k6g0Xzf6-JlgMXSSA0g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1033,7 +1033,7 @@ Paginator( artist_id: Some("UCDOMU7d2xhTF90FFzij3kgg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1057,7 +1057,7 @@ Paginator( artist_id: Some("UCXDkh6v5SI-Y5W-9nGcV8FA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1081,7 +1081,7 @@ Paginator( artist_id: Some("UCriUQh7BGZUop8BW4ZTx7Lg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1105,7 +1105,7 @@ Paginator( artist_id: Some("UCv83kiz_XGb4rfO0CXxzn5A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1129,7 +1129,7 @@ Paginator( artist_id: Some("UCQCDX-NwtNYXcRaVRCmIZKw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1153,7 +1153,7 @@ Paginator( artist_id: Some("UCVvL70F5a_APtKzTjGb2L0w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1177,7 +1177,7 @@ Paginator( artist_id: Some("UCmhABfwtPqVfEcn0aKpMRaw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1205,7 +1205,7 @@ Paginator( artist_id: Some("UC8gxc2fYnL1tHPOXHXyI6sQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1229,7 +1229,7 @@ Paginator( artist_id: Some("UCfKZwKZy9XFtHWPJMDYrmow"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1253,7 +1253,7 @@ Paginator( artist_id: Some("UCjWIuu9eZlxQaFgLZfQx7CA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1277,7 +1277,7 @@ Paginator( artist_id: Some("UCFNSyezyK_1_f0nOrNaCdHQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1301,7 +1301,7 @@ Paginator( artist_id: Some("UCkQRXVZuBMktEdVyptoUgGg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1325,7 +1325,7 @@ Paginator( artist_id: Some("UCDLPHv0SrvyUzct8UYQ9R_g"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1349,7 +1349,7 @@ Paginator( artist_id: Some("UCVvL70F5a_APtKzTjGb2L0w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1373,7 +1373,7 @@ Paginator( artist_id: Some("UCs6GGpd9zvsYghuYe0VDFUQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1397,7 +1397,7 @@ Paginator( artist_id: Some("UCgosMU69MpoCqhuS1JZj6Cw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1421,7 +1421,7 @@ Paginator( artist_id: Some("UCcyO_SNHFhbdogh9PPBB9LA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1445,7 +1445,7 @@ Paginator( artist_id: Some("UCJjgJI2vEDxGZYbQ_-2ZGXQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1469,7 +1469,7 @@ Paginator( artist_id: Some("UCicJjripVxiTXbUfociVZwQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1493,7 +1493,7 @@ Paginator( artist_id: Some("UC5k_3LEPSGchsGEGpqoF6dg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1517,7 +1517,7 @@ Paginator( artist_id: Some("UCEHalRyK7ZSFafTtAn3uYIA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1541,7 +1541,7 @@ Paginator( artist_id: Some("UCkQRXVZuBMktEdVyptoUgGg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1565,7 +1565,7 @@ Paginator( artist_id: Some("UCcgml_Q7npEKVGM2bSksWBA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1589,7 +1589,7 @@ Paginator( artist_id: Some("UCT7MCko43YqeZ1x55O1DRtw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1613,7 +1613,7 @@ Paginator( artist_id: Some("UCqsyOBd31LT-EwwqiSBKxSA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1637,7 +1637,7 @@ Paginator( artist_id: Some("UCXUNYorrTVi7iG5FUnr-Gbg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1661,7 +1661,7 @@ Paginator( artist_id: Some("UCACOVSEb3DGote2ZHZx6jHw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1685,7 +1685,7 @@ Paginator( artist_id: Some("UCkQRXVZuBMktEdVyptoUgGg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1713,7 +1713,7 @@ Paginator( artist_id: Some("UC9-2io8F6puEBsQZ8uCQ1qw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1737,7 +1737,7 @@ Paginator( artist_id: Some("UCVvL70F5a_APtKzTjGb2L0w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1761,7 +1761,7 @@ Paginator( artist_id: Some("UC3MZNlOw72DZEeoBo7PzHEA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1785,7 +1785,7 @@ Paginator( artist_id: Some("UCnH4k3ASwytYAgfsW83OvTg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1809,7 +1809,7 @@ Paginator( artist_id: Some("UCeKm0uZEL5xCB57pNgOw7mg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1833,7 +1833,7 @@ Paginator( artist_id: Some("UCJjgJI2vEDxGZYbQ_-2ZGXQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1857,7 +1857,7 @@ Paginator( artist_id: Some("UCwdy-QmH4y-gqjC8PMbKVVg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1881,7 +1881,7 @@ Paginator( artist_id: Some("UCgosMU69MpoCqhuS1JZj6Cw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1905,7 +1905,7 @@ Paginator( artist_id: Some("UCwoO85C8_Pzq-2ek7x53Y9Q"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1929,7 +1929,7 @@ Paginator( artist_id: Some("UCGh8tmH9x9njaI2mXfh2fyg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1957,7 +1957,7 @@ Paginator( artist_id: Some("UCyavaV4GE4o3jW1X4k55fLA"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -1981,7 +1981,7 @@ Paginator( artist_id: Some("UCLmyWpIwbKr6HJQ_teYCkVw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2005,7 +2005,7 @@ Paginator( artist_id: Some("UCLmyWpIwbKr6HJQ_teYCkVw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2029,7 +2029,7 @@ Paginator( artist_id: Some("UCUtLzBYwbDWCbZpZ5qkMLwQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2053,7 +2053,7 @@ Paginator( artist_id: Some("UCkUwPD973AomSmANZuoCrfg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2077,7 +2077,7 @@ Paginator( artist_id: Some("UCg9Mw2YNnXqrecKl4bKLVCQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2101,7 +2101,7 @@ Paginator( artist_id: Some("UCDvquKlXAy3pY4dFwj3QKtw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2125,7 +2125,7 @@ Paginator( artist_id: Some("UCXGYZ-OhdOpPBamHX3K9YRg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2153,7 +2153,7 @@ Paginator( artist_id: Some("UCLmyWpIwbKr6HJQ_teYCkVw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2177,7 +2177,7 @@ Paginator( artist_id: Some("UCACOVSEb3DGote2ZHZx6jHw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2201,7 +2201,7 @@ Paginator( artist_id: Some("UCvnCXuh_zhm75EJ89qJ95Kw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2225,7 +2225,7 @@ Paginator( artist_id: Some("UCgosMU69MpoCqhuS1JZj6Cw"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2249,7 +2249,7 @@ Paginator( artist_id: Some("UCUQY0RLnpERvFlTCtzdU3Xg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2273,7 +2273,7 @@ Paginator( artist_id: Some("UCAOPSjipxqxXk5mctGHiUoQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2301,7 +2301,7 @@ Paginator( artist_id: Some("UC2-YEIq9n-IH6eUMqzEWAaQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2325,7 +2325,7 @@ Paginator( artist_id: Some("UCK2ZLsY9Mb_dxZiZfKE3lGg"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2349,7 +2349,7 @@ Paginator( artist_id: Some("UCcV2StZKkutS-1GsgL-XobQ"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2373,7 +2373,7 @@ Paginator( artist_id: Some("UCiBODJaGfd1aBHE7BF_Iv7w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2397,7 +2397,7 @@ Paginator( artist_id: Some("UCiBODJaGfd1aBHE7BF_Iv7w"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2421,7 +2421,7 @@ Paginator( artist_id: Some("UCAbxL0lZcmlaQrzoUbrvS3A"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), @@ -2449,7 +2449,7 @@ Paginator( artist_id: Some("UCqG3KFVWvCPCtKzEYifV5Ew"), album: None, view_count: None, - is_video: true, + track_type: video, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_radio_tracks.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_radio_tracks.snap index 793db3d..2f5c164 100644 --- a/src/client/snapshots/rustypipe__client__pagination__tests__map_radio_tracks.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_radio_tracks.snap @@ -53,7 +53,7 @@ Paginator( name: "My Voice - The 1st Album", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -105,7 +105,7 @@ Paginator( name: "LOVE DIVE (LOVE DIVE)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -157,7 +157,7 @@ Paginator( name: "I Love", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -209,7 +209,7 @@ Paginator( name: "\'The ReVe Festival 2022 - Feel My Rhythm\'", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -261,7 +261,7 @@ Paginator( name: "NewJeans 1st EP \'New Jeans\'", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -313,7 +313,7 @@ Paginator( name: "FOREVER 1 - The 7th Album", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -365,7 +365,7 @@ Paginator( name: "BORN PINK", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -417,7 +417,7 @@ Paginator( name: "Next Level", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -469,7 +469,7 @@ Paginator( name: "Nine Track Mind", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -525,7 +525,7 @@ Paginator( name: "Scared to Be Lonely", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -577,7 +577,7 @@ Paginator( name: "Offset", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -629,7 +629,7 @@ Paginator( name: "NONSTOP", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -681,7 +681,7 @@ Paginator( name: "ELEVEN (ELEVEN)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -733,7 +733,7 @@ Paginator( name: "IU 5th Album \'LILAC\' (IU 5th Album \'LILAC\')", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -785,7 +785,7 @@ Paginator( name: "YOUNG-LUV.COM (YOUNG-LUV.COM)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -837,7 +837,7 @@ Paginator( name: "Weekend", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -889,7 +889,7 @@ Paginator( name: "Expectations", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -945,7 +945,7 @@ Paginator( name: "My Universe", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -997,7 +997,7 @@ Paginator( name: "So Good", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1049,7 +1049,7 @@ Paginator( name: "After LIKE", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1101,7 +1101,7 @@ Paginator( name: "LALISA", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1153,7 +1153,7 @@ Paginator( name: "Rollin\'", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1205,7 +1205,7 @@ Paginator( name: "CHECKMATE", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -1257,7 +1257,7 @@ Paginator( name: "The ReVe Festival: Finale", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_search_tracks.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_search_tracks.snap index 7dc7b49..6e7e4ef 100644 --- a/src/client/snapshots/rustypipe__client__pagination__tests__map_search_tracks.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_search_tracks.snap @@ -33,7 +33,7 @@ Paginator( name: "Kings Dub", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -65,7 +65,7 @@ Paginator( name: "Boom!", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -97,7 +97,7 @@ Paginator( name: "Black Mamba", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -129,7 +129,7 @@ Paginator( name: "Ballin\' Like I\'m Kobe", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -161,7 +161,7 @@ Paginator( name: "Out on the Road", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -193,7 +193,7 @@ Paginator( name: "Black Mamba", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -225,7 +225,7 @@ Paginator( name: "Born To Fight", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -257,7 +257,7 @@ Paginator( name: "Black Mamba", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -289,7 +289,7 @@ Paginator( name: "Savage - The 1st Mini Album", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -321,7 +321,7 @@ Paginator( name: "Black Mamba", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -353,7 +353,7 @@ Paginator( name: "Black Mamba", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -385,7 +385,7 @@ Paginator( name: "Urban Vibes (The Underground Sound of House Music, Vol. 9)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -417,7 +417,7 @@ Paginator( name: "Soul Surrender", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -449,7 +449,7 @@ Paginator( name: "Anti Venom", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -481,7 +481,7 @@ Paginator( name: "Basila", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -521,7 +521,7 @@ Paginator( name: "Double jeu (Intégrale Romane, vol. 9)", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -553,7 +553,7 @@ Paginator( name: "Singapore Slingers", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -585,7 +585,7 @@ Paginator( name: "Don\'t Look Back", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -617,7 +617,7 @@ Paginator( name: "Black Mamba", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), @@ -649,7 +649,7 @@ Paginator( name: "Black Mamba Style", )), view_count: None, - is_video: false, + track_type: track, track_nr: None, by_va: false, ), diff --git a/src/model/mod.rs b/src/model/mod.rs index 973e981..e252c05 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -938,8 +938,8 @@ pub struct TrackItem { /// /// [`None`] if it is a not a video or the view count could not be extracted. pub view_count: Option, - /// True if the track is a music video - pub is_video: bool, + /// Type of the track (YTM track / music video / podcast episode) + pub track_type: TrackType, /// Album track number /// /// [`None`] if the track is not fetched from an album. @@ -1025,12 +1025,15 @@ pub struct MusicPlaylistItem { pub track_count: Option, /// True if the playlist is from YouTube Music pub from_ytm: bool, + /// True if the playlist is a podcast + pub is_podcast: bool, } /// YouTube Music album type #[derive( Default, Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash, )] +#[serde(rename_all = "snake_case")] #[non_exhaustive] pub enum AlbumType { /// Regular album (default) @@ -1046,6 +1049,30 @@ pub enum AlbumType { Show, } +/// YouTube Music track type +#[derive(Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[serde(rename_all = "snake_case")] +pub enum TrackType { + /// Official YouTube Music track without video + Track, + /// Music video + Video, + /// Podcast episode + Episode, +} + +impl TrackType { + /// Return true if the track is an official YouTube Music track without video + pub fn is_track(&self) -> bool { + self == &Self::Track + } + + /// Return true if the track is a YouTube video + pub fn is_video(&self) -> bool { + self != &Self::Track + } +} + /// Album identifier #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] @@ -1158,6 +1185,7 @@ pub enum MusicItem { /// YouTube Music item type #[derive(Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[serde(rename_all = "snake_case")] #[allow(missing_docs)] pub enum MusicItemType { Track, diff --git a/testfiles/dict/album_type_samples.json b/testfiles/dict/album_type_samples.json index 9b3af4e..8016196 100644 --- a/testfiles/dict/album_type_samples.json +++ b/testfiles/dict/album_type_samples.json @@ -1,583 +1,583 @@ { "af": { - "Album": "Album", - "Ep": "EP", - "Single": "Enkelsnit", - "Audiobook": "Oudioboek", - "Show": "Drama" + "album": "Album", + "ep": "EP", + "single": "Enkelsnit", + "audiobook": "Oudioboek", + "show": "Drama" }, "am": { - "Album": "አልበም", - "Ep": "የተራዘመ አልበም", - "Single": "ነጠላ", - "Audiobook": "ኦዲዮ መጽሐፍ", - "Show": "ትዕይንት" + "album": "አልበም", + "ep": "የተራዘመ አልበም", + "single": "ነጠላ", + "audiobook": "ኦዲዮ መጽሐፍ", + "show": "ትዕይንት" }, "ar": { - "Album": "ألبوم", - "Ep": "ألبوم قصير", - "Single": "أغنية منفردة", - "Audiobook": "الكتب المسموعة", - "Show": "عرض" + "album": "ألبوم", + "ep": "ألبوم قصير", + "single": "أغنية منفردة", + "audiobook": "الكتب المسموعة", + "show": "عرض" }, "as": { - "Album": "এলবাম", - "Ep": "EP", - "Single": "একক", - "Audiobook": "অডিঅ’বুক", - "Show": "শ্ব’" + "album": "এলবাম", + "ep": "EP", + "single": "একক", + "audiobook": "অডিঅ’বুক", + "show": "শ্ব’" }, "az": { - "Album": "Albom", - "Ep": "EP", - "Single": "Tək", - "Audiobook": "Audio kitab", - "Show": "Şou" + "album": "Albom", + "ep": "EP", + "single": "Tək", + "audiobook": "Audio kitab", + "show": "Şou" }, "be": { - "Album": "Альбом", - "Ep": "Міні-альбом", - "Single": "Сінгл", - "Audiobook": "Аўдыякніга", - "Show": "Шоу" + "album": "Альбом", + "ep": "Міні-альбом", + "single": "Сінгл", + "audiobook": "Аўдыякніга", + "show": "Шоу" }, "bg": { - "Album": "Албум", - "Ep": "Миниалбум", - "Single": "Сингъл", - "Audiobook": "Аудиокнига", - "Show": "Предаване" + "album": "Албум", + "ep": "Миниалбум", + "single": "Сингъл", + "audiobook": "Аудиокнига", + "show": "Предаване" }, "bn": { - "Album": "অ্যালবাম", - "Ep": "ইপি", - "Single": "সিঙ্গেল", - "Audiobook": "অডিওবুক", - "Show": "শো" + "album": "অ্যালবাম", + "ep": "ইপি", + "single": "সিঙ্গেল", + "audiobook": "অডিওবুক", + "show": "শো" }, "bs": { - "Album": "Album", - "Ep": "EP", - "Single": "Singl", - "Audiobook": "Audio knjiga", - "Show": "Serija" + "album": "Album", + "ep": "EP", + "single": "Singl", + "audiobook": "Audio knjiga", + "show": "Serija" }, "ca": { - "Album": "Àlbum", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Audiollibre", - "Show": "Programa" + "album": "Àlbum", + "ep": "EP", + "single": "Single", + "audiobook": "Audiollibre", + "show": "Programa" }, "cs": { - "Album": "Album", - "Ep": "EP", - "Single": "Singl", - "Audiobook": "Audiokniha", - "Show": "Zobrazit" + "album": "Album", + "ep": "EP", + "single": "Singl", + "audiobook": "Audiokniha", + "show": "Zobrazit" }, "da": { - "Album": "Album", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Lydbog", - "Show": "Lyddrama" + "album": "Album", + "ep": "EP", + "single": "Single", + "audiobook": "Lydbog", + "show": "Lyddrama" }, "de": { - "Album": "Album", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Hörbuch", - "Show": "Hörspiel" + "album": "Album", + "ep": "EP", + "single": "Single", + "audiobook": "Hörbuch", + "show": "Hörspiel" }, "el": { - "Album": "Άλμπουμ", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Ηχητικό βιβλίο", - "Show": "Εκπομπή" + "album": "Άλμπουμ", + "ep": "EP", + "single": "Single", + "audiobook": "Ηχητικό βιβλίο", + "show": "Εκπομπή" }, "en": { - "Album": "Album", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Audiobook", - "Show": "Show" + "album": "Album", + "ep": "EP", + "single": "Single", + "audiobook": "Audiobook", + "show": "Show" }, "en-GB": { - "Album": "Album", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Audiobook", - "Show": "Show" + "album": "Album", + "ep": "EP", + "single": "Single", + "audiobook": "Audiobook", + "show": "Show" }, "en-IN": { - "Album": "Album", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Audiobook", - "Show": "Show" + "album": "Album", + "ep": "EP", + "single": "Single", + "audiobook": "Audiobook", + "show": "Show" }, "es": { - "Album": "Álbum", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Audiolibro", - "Show": "Audiodrama" + "album": "Álbum", + "ep": "EP", + "single": "Single", + "audiobook": "Audiolibro", + "show": "Audiodrama" }, "es-419": { - "Album": "Álbum", - "Ep": "EP", - "Single": "Sencillo", - "Audiobook": "Audiolibro", - "Show": "Programa" + "album": "Álbum", + "ep": "EP", + "single": "Sencillo", + "audiobook": "Audiolibro", + "show": "Programa" }, "es-US": { - "Album": "Álbum", - "Ep": "EP", - "Single": "Sencillo", - "Audiobook": "Audiolibro", - "Show": "Programa" + "album": "Álbum", + "ep": "EP", + "single": "Sencillo", + "audiobook": "Audiolibro", + "show": "Programa" }, "et": { - "Album": "Album", - "Ep": "EP", - "Single": "Singel", - "Audiobook": "Audioraamat", - "Show": "Sari" + "album": "Album", + "ep": "EP", + "single": "Singel", + "audiobook": "Audioraamat", + "show": "Sari" }, "eu": { - "Album": "Albuma", - "Ep": "EP", - "Single": "Singlea", - "Audiobook": "Audio-liburua", - "Show": "Saioa" + "album": "Albuma", + "ep": "EP", + "single": "Singlea", + "audiobook": "Audio-liburua", + "show": "Saioa" }, "fa": { - "Album": "آلبوم", - "Ep": "پخش فوق‌العاده", - "Single": "تک آهنگ", - "Audiobook": "کتاب صوتی", - "Show": "نمایش" + "album": "آلبوم", + "ep": "پخش فوق‌العاده", + "single": "تک آهنگ", + "audiobook": "کتاب صوتی", + "show": "نمایش" }, "fi": { - "Album": "Albumi", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Äänikirja", - "Show": "Näytä" + "album": "Albumi", + "ep": "EP", + "single": "Single", + "audiobook": "Äänikirja", + "show": "Näytä" }, "fil": { - "Album": "Album", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Audiobook", - "Show": "Palabas" + "album": "Album", + "ep": "EP", + "single": "Single", + "audiobook": "Audiobook", + "show": "Palabas" }, "fr": { - "Album": "Album", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Livre audio", - "Show": "Émission" + "album": "Album", + "ep": "EP", + "single": "Single", + "audiobook": "Livre audio", + "show": "Émission" }, "fr-CA": { - "Album": "Album", - "Ep": "Microalbum", - "Single": "Simple", - "Audiobook": "Livre audio", - "Show": "Émission" + "album": "Album", + "ep": "Microalbum", + "single": "Simple", + "audiobook": "Livre audio", + "show": "Émission" }, "gl": { - "Album": "Álbum", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Audiolibro", - "Show": "Programa" + "album": "Álbum", + "ep": "EP", + "single": "Single", + "audiobook": "Audiolibro", + "show": "Programa" }, "gu": { - "Album": "આલ્બમ", - "Ep": "EP", - "Single": "સિંગલ", - "Audiobook": "ઑડિયોબુક", - "Show": "શો" + "album": "આલ્બમ", + "ep": "EP", + "single": "સિંગલ", + "audiobook": "ઑડિયોબુક", + "show": "શો" }, "hi": { - "Album": "एल्‍बम", - "Ep": "ईपी", - "Single": "सिंगल", - "Audiobook": "ऑडियो बुक", - "Show": "शो" + "album": "एल्‍बम", + "ep": "ईपी", + "single": "सिंगल", + "audiobook": "ऑडियो बुक", + "show": "शो" }, "hr": { - "Album": "Album", - "Ep": "EP", - "Single": "Singl", - "Audiobook": "Audioknjiga", - "Show": "Serija" + "album": "Album", + "ep": "EP", + "single": "Singl", + "audiobook": "Audioknjiga", + "show": "Serija" }, "hu": { - "Album": "Album", - "Ep": "EP", - "Single": "Kislemez", - "Audiobook": "Hangoskönyv", - "Show": "Műsor" + "album": "Album", + "ep": "EP", + "single": "Kislemez", + "audiobook": "Hangoskönyv", + "show": "Műsor" }, "hy": { - "Album": "Ալբոմ", - "Ep": "EP", - "Single": "Սինգլ", - "Audiobook": "Աուդիոգիրք", - "Show": "Աուդիոդրամա" + "album": "Ալբոմ", + "ep": "EP", + "single": "Սինգլ", + "audiobook": "Աուդիոգիրք", + "show": "Աուդիոդրամա" }, "id": { - "Album": "Album", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Buku audio", - "Show": "Acara" + "album": "Album", + "ep": "EP", + "single": "Single", + "audiobook": "Buku audio", + "show": "Acara" }, "is": { - "Album": "Plata", - "Ep": "EP", - "Single": "Smáskífa", - "Audiobook": "Hljóðbók", - "Show": "Þáttur" + "album": "Plata", + "ep": "EP", + "single": "Smáskífa", + "audiobook": "Hljóðbók", + "show": "Þáttur" }, "it": { - "Album": "Album", - "Ep": "EP", - "Single": "Singolo", - "Audiobook": "Audiolibro", - "Show": "Programma" + "album": "Album", + "ep": "EP", + "single": "Singolo", + "audiobook": "Audiolibro", + "show": "Programma" }, "iw": { - "Album": "אלבום", - "Ep": "מיני-אלבום", - "Single": "סינגל", - "Audiobook": "ספר אודיו", - "Show": "תסכית" + "album": "אלבום", + "ep": "מיני-אלבום", + "single": "סינגל", + "audiobook": "ספר אודיו", + "show": "תסכית" }, "ja": { - "Album": "アルバム", - "Ep": "EP", - "Single": "シングル", - "Audiobook": "オーディオブック", - "Show": "表示" + "album": "アルバム", + "ep": "EP", + "single": "シングル", + "audiobook": "オーディオブック", + "show": "表示" }, "ka": { - "Album": "ალბომი", - "Ep": "მინი-ალბომი", - "Single": "სინგლი", - "Audiobook": "აუდიოწიგნი", - "Show": "ჩვენება" + "album": "ალბომი", + "ep": "მინი-ალბომი", + "single": "სინგლი", + "audiobook": "აუდიოწიგნი", + "show": "ჩვენება" }, "kk": { - "Album": "Альбом", - "Ep": "EP", - "Single": "Сингл", - "Audiobook": "Аудиокітап", - "Show": "Шоу" + "album": "Альбом", + "ep": "EP", + "single": "Сингл", + "audiobook": "Аудиокітап", + "show": "Шоу" }, "km": { - "Album": "អាល់ប៊ុម", - "Ep": "EP", - "Single": "ចម្រៀងទោល", - "Audiobook": "សៀវភៅ​ជា​សំឡេង", - "Show": "កម្មវិធីទូរទស្សន៍" + "album": "អាល់ប៊ុម", + "ep": "EP", + "single": "ចម្រៀងទោល", + "audiobook": "សៀវភៅ​ជា​សំឡេង", + "show": "កម្មវិធីទូរទស្សន៍" }, "kn": { - "Album": "ಆಲ್ಬಮ್", - "Ep": "EP", - "Single": "ಒಂದೇ", - "Audiobook": "ಆಡಿಯೋಬುಕ್", - "Show": "ಶೋ" + "album": "ಆಲ್ಬಮ್", + "ep": "EP", + "single": "ಒಂದೇ", + "audiobook": "ಆಡಿಯೋಬುಕ್", + "show": "ಶೋ" }, "ko": { - "Album": "앨범", - "Ep": "EP", - "Single": "싱글", - "Audiobook": "오디오북", - "Show": "표시" + "album": "앨범", + "ep": "EP", + "single": "싱글", + "audiobook": "오디오북", + "show": "표시" }, "ky": { - "Album": "Альбом", - "Ep": "Чакан альбом", - "Single": "Сингл", - "Audiobook": "Аудиокитеп", - "Show": "Шоу" + "album": "Альбом", + "ep": "Чакан альбом", + "single": "Сингл", + "audiobook": "Аудиокитеп", + "show": "Шоу" }, "lo": { - "Album": "ອະລະບໍ້າ", - "Ep": "EP", - "Single": "ຊິງເກິນ", - "Audiobook": "ປຶ້ມສຽງ", - "Show": "ສະແດງ" + "album": "ອະລະບໍ້າ", + "ep": "EP", + "single": "ຊິງເກິນ", + "audiobook": "ປຶ້ມສຽງ", + "show": "ສະແດງ" }, "lt": { - "Album": "Albumas", - "Ep": "Mini albumas", - "Single": "Singlas", - "Audiobook": "Garsinė knyga", - "Show": "Serialas" + "album": "Albumas", + "ep": "Mini albumas", + "single": "Singlas", + "audiobook": "Garsinė knyga", + "show": "Serialas" }, "lv": { - "Album": "Albums", - "Ep": "EP ieraksts", - "Single": "Singls", - "Audiobook": "Audiogrāmata", - "Show": "Pārraide" + "album": "Albums", + "ep": "EP ieraksts", + "single": "Singls", + "audiobook": "Audiogrāmata", + "show": "Pārraide" }, "mk": { - "Album": "Албум", - "Ep": "EP", - "Single": "Сингл", - "Audiobook": "Аудиокнига", - "Show": "Серија" + "album": "Албум", + "ep": "EP", + "single": "Сингл", + "audiobook": "Аудиокнига", + "show": "Серија" }, "ml": { - "Album": "ആല്‍‌ബം", - "Ep": "EP", - "Single": "സിംഗിൾ", - "Audiobook": "ഓഡിയോ ബുക്ക്", - "Show": "ഷോ" + "album": "ആല്‍‌ബം", + "ep": "EP", + "single": "സിംഗിൾ", + "audiobook": "ഓഡിയോ ബുക്ക്", + "show": "ഷോ" }, "mn": { - "Album": "Цомог", - "Ep": "EP", - "Single": "Сингл", - "Audiobook": "Аудио ном", - "Show": "Жүжиг" + "album": "Цомог", + "ep": "EP", + "single": "Сингл", + "audiobook": "Аудио ном", + "show": "Жүжиг" }, "mr": { - "Album": "अल्बम", - "Ep": "भाग", - "Single": "सिंगल", - "Audiobook": "ऑडिओबुक", - "Show": "शो" + "album": "अल्बम", + "ep": "भाग", + "single": "सिंगल", + "audiobook": "ऑडिओबुक", + "show": "शो" }, "ms": { - "Album": "Album", - "Ep": "EP", - "Single": "Rekod single", - "Audiobook": "Buku audio", - "Show": "Rancangan" + "album": "Album", + "ep": "EP", + "single": "Rekod single", + "audiobook": "Buku audio", + "show": "Rancangan" }, "my": { - "Album": "အယ်လ်ဘမ်", - "Ep": "EP", - "Single": "တစ်ကိုယ်တော်", - "Audiobook": "အော်ဒီယိုစာအုပ်", - "Show": "ရှိုး" + "album": "အယ်လ်ဘမ်", + "ep": "EP", + "single": "တစ်ကိုယ်တော်", + "audiobook": "အော်ဒီယိုစာအုပ်", + "show": "ရှိုး" }, "ne": { - "Album": "एल्बम", - "Ep": "EP", - "Single": "एकल एल्बम", - "Audiobook": "अडियोबुक", - "Show": "टिभी सो" + "album": "एल्बम", + "ep": "EP", + "single": "एकल एल्बम", + "audiobook": "अडियोबुक", + "show": "टिभी सो" }, "nl": { - "Album": "Album", - "Ep": "Ep", - "Single": "Single", - "Audiobook": "Audioboek", - "Show": "Aflevering" + "album": "Album", + "ep": "Ep", + "single": "Single", + "audiobook": "Audioboek", + "show": "Aflevering" }, "no": { - "Album": "Album", - "Ep": "EP", - "Single": "Singel", - "Audiobook": "Lydbok", - "Show": "Hørespill" + "album": "Album", + "ep": "EP", + "single": "Singel", + "audiobook": "Lydbok", + "show": "Hørespill" }, "or": { - "Album": "ଆଲବମ୍", - "Ep": "EP", - "Single": "ସିଙ୍ଗଲ୍", - "Audiobook": "ଅଡିଓବୁକ୍", - "Show": "ଶୋ" + "album": "ଆଲବମ୍", + "ep": "EP", + "single": "ସିଙ୍ଗଲ୍", + "audiobook": "ଅଡିଓବୁକ୍", + "show": "ଶୋ" }, "pa": { - "Album": "ਐਲਬਮ", - "Ep": "EP", - "Single": "ਸਿੰਗਲ", - "Audiobook": "ਆਡੀਓ-ਕਿਤਾਬ", - "Show": "ਸ਼ੋਅ" + "album": "ਐਲਬਮ", + "ep": "EP", + "single": "ਸਿੰਗਲ", + "audiobook": "ਆਡੀਓ-ਕਿਤਾਬ", + "show": "ਸ਼ੋਅ" }, "pl": { - "Album": "Album", - "Ep": "EP", - "Single": "Singiel", - "Audiobook": "Audiobook", - "Show": "Słuchowisko" + "album": "Album", + "ep": "EP", + "single": "Singiel", + "audiobook": "Audiobook", + "show": "Słuchowisko" }, "pt": { - "Album": "Álbum", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Audiolivro", - "Show": "Programa" + "album": "Álbum", + "ep": "EP", + "single": "Single", + "audiobook": "Audiolivro", + "show": "Programa" }, "pt-PT": { - "Album": "Álbum", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Audiolivro", - "Show": "Programa" + "album": "Álbum", + "ep": "EP", + "single": "Single", + "audiobook": "Audiolivro", + "show": "Programa" }, "ro": { - "Album": "Album", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Carte audio", - "Show": "Emisiune" + "album": "Album", + "ep": "EP", + "single": "Single", + "audiobook": "Carte audio", + "show": "Emisiune" }, "ru": { - "Album": "Альбом", - "Ep": "EP", - "Single": "Сингл", - "Audiobook": "Аудиокнига", - "Show": "Аудиошоу" + "album": "Альбом", + "ep": "EP", + "single": "Сингл", + "audiobook": "Аудиокнига", + "show": "Аудиошоу" }, "si": { - "Album": "ඇල්බමය", - "Ep": "දීවා", - "Single": "තනි", - "Audiobook": "ශ්‍රව්‍යපොත", - "Show": "සංදර්ශනය" + "album": "ඇල්බමය", + "ep": "දීවා", + "single": "තනි", + "audiobook": "ශ්‍රව්‍යපොත", + "show": "සංදර්ශනය" }, "sk": { - "Album": "Album", - "Ep": "EP", - "Single": "Singel", - "Audiobook": "Audiokniha", - "Show": "Relácia" + "album": "Album", + "ep": "EP", + "single": "Singel", + "audiobook": "Audiokniha", + "show": "Relácia" }, "sl": { - "Album": "Album", - "Ep": "EP", - "Single": "Singel", - "Audiobook": "Zvočna knjiga", - "Show": "Oddaja" + "album": "Album", + "ep": "EP", + "single": "Singel", + "audiobook": "Zvočna knjiga", + "show": "Oddaja" }, "sq": { - "Album": "Album", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Libër me audio", - "Show": "Shfaq" + "album": "Album", + "ep": "EP", + "single": "Single", + "audiobook": "Libër me audio", + "show": "Shfaq" }, "sr": { - "Album": "Албум", - "Ep": "EP", - "Single": "Сингл", - "Audiobook": "Аудио-књига", - "Show": "Серија" + "album": "Албум", + "ep": "EP", + "single": "Сингл", + "audiobook": "Аудио-књига", + "show": "Серија" }, "sr-Latn": { - "Album": "Album", - "Ep": "EP", - "Single": "Singl", - "Audiobook": "Audio-knjiga", - "Show": "Serija" + "album": "Album", + "ep": "EP", + "single": "Singl", + "audiobook": "Audio-knjiga", + "show": "Serija" }, "sv": { - "Album": "Album", - "Ep": "EP", - "Single": "Singel", - "Audiobook": "Ljudbok", - "Show": "Ljuddrama" + "album": "Album", + "ep": "EP", + "single": "Singel", + "audiobook": "Ljudbok", + "show": "Ljuddrama" }, "sw": { - "Album": "Albamu", - "Ep": "EP", - "Single": "Singo", - "Audiobook": "Kitabu cha kusikiliza", - "Show": "Kipindi" + "album": "Albamu", + "ep": "EP", + "single": "Singo", + "audiobook": "Kitabu cha kusikiliza", + "show": "Kipindi" }, "ta": { - "Album": "ஆல்பம்", - "Ep": "EP", - "Single": "சிங்கிள்", - "Audiobook": "ஆடியோ புத்தகம்", - "Show": "ஆடியோ ஷோ" + "album": "ஆல்பம்", + "ep": "EP", + "single": "சிங்கிள்", + "audiobook": "ஆடியோ புத்தகம்", + "show": "ஆடியோ ஷோ" }, "te": { - "Album": "ఆల్బమ్", - "Ep": "EP", - "Single": "సింగిల్", - "Audiobook": "ఆడియోబుక్", - "Show": "చూపించు" + "album": "ఆల్బమ్", + "ep": "EP", + "single": "సింగిల్", + "audiobook": "ఆడియోబుక్", + "show": "చూపించు" }, "th": { - "Album": "อัลบั้ม", - "Ep": "EP", - "Single": "ซิงเกิล", - "Audiobook": "หนังสือเสียง", - "Show": "รายการ" + "album": "อัลบั้ม", + "ep": "EP", + "single": "ซิงเกิล", + "audiobook": "หนังสือเสียง", + "show": "รายการ" }, "tr": { - "Album": "Albüm", - "Ep": "EP", - "Single": "Single", - "Audiobook": "Sesli kitap", - "Show": "Program" + "album": "Albüm", + "ep": "EP", + "single": "Single", + "audiobook": "Sesli kitap", + "show": "Program" }, "uk": { - "Album": "Альбом", - "Ep": "Мініальбом", - "Single": "Сингл", - "Audiobook": "Аудіокнига", - "Show": "Аудіодрама" + "album": "Альбом", + "ep": "Мініальбом", + "single": "Сингл", + "audiobook": "Аудіокнига", + "show": "Аудіодрама" }, "ur": { - "Album": "البم", - "Ep": "EP", - "Single": "واحد", - "Audiobook": "آڈیو بک", - "Show": "شو" + "album": "البم", + "ep": "EP", + "single": "واحد", + "audiobook": "آڈیو بک", + "show": "شو" }, "uz": { - "Album": "Albom", - "Ep": "EP", - "Single": "Singl", - "Audiobook": "Audiokitob", - "Show": "Shou" + "album": "Albom", + "ep": "EP", + "single": "Singl", + "audiobook": "Audiokitob", + "show": "Shou" }, "vi": { - "Album": "Đĩa nhạc", - "Ep": "Đĩa nhạc mở rộng (EP)", - "Single": "Đĩa đơn", - "Audiobook": "Sách nói", - "Show": "Chương trình" + "album": "Đĩa nhạc", + "ep": "Đĩa nhạc mở rộng (EP)", + "single": "Đĩa đơn", + "audiobook": "Sách nói", + "show": "Chương trình" }, "zh-CN": { - "Album": "专辑", - "Ep": "迷你专辑", - "Single": "单曲", - "Audiobook": "有声读物", - "Show": "广播剧" + "album": "专辑", + "ep": "迷你专辑", + "single": "单曲", + "audiobook": "有声读物", + "show": "广播剧" }, "zh-HK": { - "Album": "專輯", - "Ep": "EP", - "Single": "單曲", - "Audiobook": "有聲書", - "Show": "節目" + "album": "專輯", + "ep": "EP", + "single": "單曲", + "audiobook": "有聲書", + "show": "節目" }, "zh-TW": { - "Album": "專輯", - "Ep": "EP", - "Single": "單曲", - "Audiobook": "有聲書", - "Show": "節目" + "album": "專輯", + "ep": "EP", + "single": "單曲", + "audiobook": "有聲書", + "show": "節目" }, "zu": { - "Album": "I-albhamu", - "Ep": "I-EP", - "Single": "I-Single", - "Audiobook": "I-audiobook", - "Show": "Bonisa" + "album": "I-albhamu", + "ep": "I-EP", + "single": "I-Single", + "audiobook": "I-audiobook", + "show": "Bonisa" } } diff --git a/testfiles/dict/dictionary.json b/testfiles/dict/dictionary.json index d4c47cf..a7d2a58 100644 --- a/testfiles/dict/dictionary.json +++ b/testfiles/dict/dictionary.json @@ -50,11 +50,11 @@ "nie": 0 }, "album_types": { - "album": "Album", - "oudioboek": "Audiobook", - "ep": "Ep", - "drama": "Show", - "enkelsnit": "Single" + "album": "album", + "oudioboek": "audiobook", + "ep": "ep", + "drama": "show", + "enkelsnit": "single" }, "chan_prefix": "deur", "chan_suffix": "" @@ -114,11 +114,11 @@ "የለዉም": 0 }, "album_types": { - "አልበም": "Album", - "ኦዲዮ መጽሐፍ": "Audiobook", - "የተራዘመ አልበም": "Ep", - "ትዕይንት": "Show", - "ነጠላ": "Single" + "አልበም": "album", + "ኦዲዮ መጽሐፍ": "audiobook", + "የተራዘመ አልበም": "ep", + "ትዕይንት": "show", + "ነጠላ": "single" }, "chan_prefix": "በ", "chan_suffix": "" @@ -179,11 +179,11 @@ "واحد": 1 }, "album_types": { - "ألبوم": "Album", - "الكتب المسموعة": "Audiobook", - "ألبوم قصير": "Ep", - "عرض": "Show", - "أغنية منفردة": "Single" + "ألبوم": "album", + "الكتب المسموعة": "audiobook", + "ألبوم قصير": "ep", + "عرض": "show", + "أغنية منفردة": "single" }, "chan_prefix": "بواسطة", "chan_suffix": "" @@ -227,11 +227,11 @@ "১টা": 1 }, "album_types": { - "এলবাম": "Album", - "অডিঅ’বুক": "Audiobook", - "ep": "Ep", - "শ্ব’": "Show", - "একক": "Single" + "এলবাম": "album", + "অডিঅ’বুক": "audiobook", + "ep": "ep", + "শ্ব’": "show", + "একক": "single" }, "chan_prefix": "", "chan_suffix": "ৰ দ্বাৰা" @@ -278,11 +278,11 @@ "yoxdur": 0 }, "album_types": { - "albom": "Album", - "audio kitab": "Audiobook", - "ep": "Ep", - "şou": "Show", - "tək": "Single" + "albom": "album", + "audio kitab": "audiobook", + "ep": "ep", + "şou": "show", + "tək": "single" }, "chan_prefix": "by", "chan_suffix": "" @@ -354,11 +354,11 @@ "няма": 0 }, "album_types": { - "альбом": "Album", - "аўдыякніга": "Audiobook", - "міні-альбом": "Ep", - "шоу": "Show", - "сінгл": "Single" + "альбом": "album", + "аўдыякніга": "audiobook", + "міні-альбом": "ep", + "шоу": "show", + "сінгл": "single" }, "chan_prefix": "ад", "chan_suffix": "" @@ -404,11 +404,11 @@ "няма": 0 }, "album_types": { - "албум": "Album", - "аудиокнига": "Audiobook", - "миниалбум": "Ep", - "предаване": "Show", - "сингъл": "Single" + "албум": "album", + "аудиокнига": "audiobook", + "миниалбум": "ep", + "предаване": "show", + "сингъл": "single" }, "chan_prefix": "от", "chan_suffix": "" @@ -459,11 +459,11 @@ "১": 1 }, "album_types": { - "অ্যালবাম": "Album", - "অডিওবুক": "Audiobook", - "ইপি": "Ep", - "শো": "Show", - "সিঙ্গেল": "Single" + "অ্যালবাম": "album", + "অডিওবুক": "audiobook", + "ইপি": "ep", + "শো": "show", + "সিঙ্গেল": "single" }, "chan_prefix": ",", "chan_suffix": "দ্বারা" @@ -530,11 +530,11 @@ "nema": 0 }, "album_types": { - "album": "Album", - "audio knjiga": "Audiobook", - "ep": "Ep", - "serija": "Show", - "singl": "Single" + "album": "album", + "audio knjiga": "audiobook", + "ep": "ep", + "serija": "show", + "singl": "single" }, "chan_prefix": "od", "chan_suffix": "" @@ -590,11 +590,11 @@ "sense": 0 }, "album_types": { - "àlbum": "Album", - "audiollibre": "Audiobook", - "ep": "Ep", - "programa": "Show", - "single": "Single" + "àlbum": "album", + "audiollibre": "audiobook", + "ep": "ep", + "programa": "show", + "single": "single" }, "chan_prefix": "de:", "chan_suffix": "" @@ -651,11 +651,11 @@ }, "number_nd_tokens": {}, "album_types": { - "album": "Album", - "audiokniha": "Audiobook", - "ep": "Ep", - "zobrazit": "Show", - "singl": "Single" + "album": "album", + "audiokniha": "audiobook", + "ep": "ep", + "zobrazit": "show", + "singl": "single" }, "chan_prefix": "autor:", "chan_suffix": "" @@ -710,11 +710,11 @@ "ingen": 0 }, "album_types": { - "album": "Album", - "lydbog": "Audiobook", - "ep": "Ep", - "lyddrama": "Show", - "single": "Single" + "album": "album", + "lydbog": "audiobook", + "ep": "ep", + "lyddrama": "show", + "single": "single" }, "chan_prefix": "af", "chan_suffix": "" @@ -756,11 +756,11 @@ "keine": 0 }, "album_types": { - "album": "Album", - "hörbuch": "Audiobook", - "ep": "Ep", - "hörspiel": "Show", - "single": "Single" + "album": "album", + "hörbuch": "audiobook", + "ep": "ep", + "hörspiel": "show", + "single": "single" }, "chan_prefix": "von", "chan_suffix": "" @@ -819,11 +819,11 @@ "καμία": 0 }, "album_types": { - "άλμπουμ": "Album", - "ηχητικό βιβλίο": "Audiobook", - "ep": "Ep", - "εκπομπή": "Show", - "single": "Single" + "άλμπουμ": "album", + "ηχητικό βιβλίο": "audiobook", + "ep": "ep", + "εκπομπή": "show", + "single": "single" }, "chan_prefix": "από το χρήστη", "chan_suffix": "" @@ -895,11 +895,11 @@ "no": 0 }, "album_types": { - "album": "Album", - "audiobook": "Audiobook", - "ep": "Ep", - "show": "Show", - "single": "Single" + "album": "album", + "audiobook": "audiobook", + "ep": "ep", + "show": "show", + "single": "single" }, "chan_prefix": "by", "chan_suffix": "" @@ -955,11 +955,11 @@ }, "number_nd_tokens": {}, "album_types": { - "álbum": "Album", - "audiolibro": "Audiobook", - "ep": "Ep", - "audiodrama": "Show", - "single": "Single" + "álbum": "album", + "audiolibro": "audiobook", + "ep": "ep", + "audiodrama": "show", + "single": "single" }, "chan_prefix": "de", "chan_suffix": "" @@ -1018,11 +1018,11 @@ "sin": 0 }, "album_types": { - "álbum": "Album", - "audiolibro": "Audiobook", - "ep": "Ep", - "programa": "Show", - "sencillo": "Single" + "álbum": "album", + "audiolibro": "audiobook", + "ep": "ep", + "programa": "show", + "sencillo": "single" }, "chan_prefix": "de", "chan_suffix": "" @@ -1081,11 +1081,11 @@ "pole": 0 }, "album_types": { - "album": "Album", - "audioraamat": "Audiobook", - "ep": "Ep", - "sari": "Show", - "singel": "Single" + "album": "album", + "audioraamat": "audiobook", + "ep": "ep", + "sari": "show", + "singel": "single" }, "chan_prefix": "kanalilt", "chan_suffix": "" @@ -1132,11 +1132,11 @@ "ez": 0 }, "album_types": { - "albuma": "Album", - "audio-liburua": "Audiobook", - "ep": "Ep", - "saioa": "Show", - "singlea": "Single" + "albuma": "album", + "audio-liburua": "audiobook", + "ep": "ep", + "saioa": "show", + "singlea": "single" }, "chan_prefix": "egilea:", "chan_suffix": "" @@ -1183,11 +1183,11 @@ "۱": 1 }, "album_types": { - "آلبوم": "Album", - "کتاب صوتی": "Audiobook", - "پخش فوق‌العاده": "Ep", - "نمایش": "Show", - "تک آهنگ": "Single" + "آلبوم": "album", + "کتاب صوتی": "audiobook", + "پخش فوق‌العاده": "ep", + "نمایش": "show", + "تک آهنگ": "single" }, "chan_prefix": "توسط", "chan_suffix": "" @@ -1235,11 +1235,11 @@ "katselukertoja": 0 }, "album_types": { - "albumi": "Album", - "äänikirja": "Audiobook", - "ep": "Ep", - "näytä": "Show", - "single": "Single" + "albumi": "album", + "äänikirja": "audiobook", + "ep": "ep", + "näytä": "show", + "single": "single" }, "chan_prefix": "tekijä:", "chan_suffix": "" @@ -1286,11 +1286,11 @@ "walang": 0 }, "album_types": { - "album": "Album", - "audiobook": "Audiobook", - "ep": "Ep", - "palabas": "Show", - "single": "Single" + "album": "album", + "audiobook": "audiobook", + "ep": "ep", + "palabas": "show", + "single": "single" }, "chan_prefix": "ni/ng", "chan_suffix": "" @@ -1352,13 +1352,13 @@ "aucune": 0 }, "album_types": { - "album": "Album", - "livre audio": "Audiobook", - "ep": "Ep", - "microalbum": "Ep", - "émission": "Show", - "simple": "Single", - "single": "Single" + "album": "album", + "livre audio": "audiobook", + "ep": "ep", + "microalbum": "ep", + "émission": "show", + "simple": "single", + "single": "single" }, "chan_prefix": "de", "chan_suffix": "" @@ -1413,11 +1413,11 @@ "ningunha": 0 }, "album_types": { - "álbum": "Album", - "audiolibro": "Audiobook", - "ep": "Ep", - "programa": "Show", - "single": "Single" + "álbum": "album", + "audiolibro": "audiobook", + "ep": "ep", + "programa": "show", + "single": "single" }, "chan_prefix": "de", "chan_suffix": "" @@ -1463,11 +1463,11 @@ }, "number_nd_tokens": {}, "album_types": { - "આલ્બમ": "Album", - "ઑડિયોબુક": "Audiobook", - "ep": "Ep", - "શો": "Show", - "સિંગલ": "Single" + "આલ્બમ": "album", + "ઑડિયોબુક": "audiobook", + "ep": "ep", + "શો": "show", + "સિંગલ": "single" }, "chan_prefix": "", "chan_suffix": "દ્વારા" @@ -1517,11 +1517,11 @@ "नहीं": 0 }, "album_types": { - "एल्‍बम": "Album", - "ऑडियो बुक": "Audiobook", - "ईपी": "Ep", - "शो": "Show", - "सिंगल": "Single" + "एल्‍बम": "album", + "ऑडियो बुक": "audiobook", + "ईपी": "ep", + "शो": "show", + "सिंगल": "single" }, "chan_prefix": "", "chan_suffix": "के ज़रिए" @@ -1587,11 +1587,11 @@ "nema": 0 }, "album_types": { - "album": "Album", - "audioknjiga": "Audiobook", - "ep": "Ep", - "serija": "Show", - "singl": "Single" + "album": "album", + "audioknjiga": "audiobook", + "ep": "ep", + "serija": "show", + "singl": "single" }, "chan_prefix": "omogućio kanal", "chan_suffix": "" @@ -1649,11 +1649,11 @@ "nincs": 0 }, "album_types": { - "album": "Album", - "hangoskönyv": "Audiobook", - "ep": "Ep", - "műsor": "Show", - "kislemez": "Single" + "album": "album", + "hangoskönyv": "audiobook", + "ep": "ep", + "műsor": "show", + "kislemez": "single" }, "chan_prefix": "", "chan_suffix": "csatornától" @@ -1705,11 +1705,11 @@ "չկան": 0 }, "album_types": { - "ալբոմ": "Album", - "աուդիոգիրք": "Audiobook", - "ep": "Ep", - "աուդիոդրամա": "Show", - "սինգլ": "Single" + "ալբոմ": "album", + "աուդիոգիրք": "audiobook", + "ep": "ep", + "աուդիոդրամա": "show", + "սինգլ": "single" }, "chan_prefix": "հեղինակ՝", "chan_suffix": "" @@ -1761,11 +1761,11 @@ "belum": 0 }, "album_types": { - "album": "Album", - "buku audio": "Audiobook", - "ep": "Ep", - "acara": "Show", - "single": "Single" + "album": "album", + "buku audio": "audiobook", + "ep": "ep", + "acara": "show", + "single": "single" }, "chan_prefix": "oleh", "chan_suffix": "" @@ -1828,11 +1828,11 @@ "eitt": 1 }, "album_types": { - "plata": "Album", - "hljóðbók": "Audiobook", - "ep": "Ep", - "þáttur": "Show", - "smáskífa": "Single" + "plata": "album", + "hljóðbók": "audiobook", + "ep": "ep", + "þáttur": "show", + "smáskífa": "single" }, "chan_prefix": "eftir", "chan_suffix": "" @@ -1892,11 +1892,11 @@ "nessuna": 0 }, "album_types": { - "album": "Album", - "audiolibro": "Audiobook", - "ep": "Ep", - "programma": "Show", - "singolo": "Single" + "album": "album", + "audiolibro": "audiobook", + "ep": "ep", + "programma": "show", + "singolo": "single" }, "chan_prefix": "di", "chan_suffix": "" @@ -1961,11 +1961,11 @@ "אחד": 1 }, "album_types": { - "אלבום": "Album", - "ספר אודיו": "Audiobook", - "מיני-אלבום": "Ep", - "תסכית": "Show", - "סינגל": "Single" + "אלבום": "album", + "ספר אודיו": "audiobook", + "מיני-אלבום": "ep", + "תסכית": "show", + "סינגל": "single" }, "chan_prefix": "מאת", "chan_suffix": "" @@ -1995,11 +1995,11 @@ }, "number_nd_tokens": {}, "album_types": { - "アルバム": "Album", - "オーディオブック": "Audiobook", - "ep": "Ep", - "表示": "Show", - "シングル": "Single" + "アルバム": "album", + "オーディオブック": "audiobook", + "ep": "ep", + "表示": "show", + "シングル": "single" }, "chan_prefix": "作成者:", "chan_suffix": "" @@ -2051,11 +2051,11 @@ "არ": 0 }, "album_types": { - "ალბომი": "Album", - "აუდიოწიგნი": "Audiobook", - "მინი-ალბომი": "Ep", - "ჩვენება": "Show", - "სინგლი": "Single" + "ალბომი": "album", + "აუდიოწიგნი": "audiobook", + "მინი-ალბომი": "ep", + "ჩვენება": "show", + "სინგლი": "single" }, "chan_prefix": "", "chan_suffix": "-ის მიერ" @@ -2108,11 +2108,11 @@ "ешкім": 0 }, "album_types": { - "альбом": "Album", - "аудиокітап": "Audiobook", - "ep": "Ep", - "шоу": "Show", - "сингл": "Single" + "альбом": "album", + "аудиокітап": "audiobook", + "ep": "ep", + "шоу": "show", + "сингл": "single" }, "chan_prefix": "қосқан", "chan_suffix": "" @@ -2158,11 +2158,11 @@ }, "number_nd_tokens": {}, "album_types": { - "អាល់ប៊ុម": "Album", - "សៀវភៅ​ជា​សំឡេង": "Audiobook", - "ep": "Ep", - "កម្មវិធីទូរទស្សន៍": "Show", - "ចម្រៀងទោល": "Single" + "អាល់ប៊ុម": "album", + "សៀវភៅ​ជា​សំឡេង": "audiobook", + "ep": "ep", + "កម្មវិធីទូរទស្សន៍": "show", + "ចម្រៀងទោល": "single" }, "chan_prefix": "ដោយ", "chan_suffix": "" @@ -2221,11 +2221,11 @@ "ವೀಕ್ಷಣೆಗಳಿಲ್ಲ": 0 }, "album_types": { - "ಆಲ್ಬಮ್": "Album", - "ಆಡಿಯೋಬುಕ್": "Audiobook", - "ep": "Ep", - "ಶೋ": "Show", - "ಒಂದೇ": "Single" + "ಆಲ್ಬಮ್": "album", + "ಆಡಿಯೋಬುಕ್": "audiobook", + "ep": "ep", + "ಶೋ": "show", + "ಒಂದೇ": "single" }, "chan_prefix": "", "chan_suffix": "ಚಾನಲ್‌ನಿಂದ" @@ -2258,11 +2258,11 @@ "없": 0 }, "album_types": { - "앨범": "Album", - "오디오북": "Audiobook", - "ep": "Ep", - "표시": "Show", - "싱글": "Single" + "앨범": "album", + "오디오북": "audiobook", + "ep": "ep", + "표시": "show", + "싱글": "single" }, "chan_prefix": "게시자:", "chan_suffix": "" @@ -2311,11 +2311,11 @@ "эч": 0 }, "album_types": { - "альбом": "Album", - "аудиокитеп": "Audiobook", - "чакан альбом": "Ep", - "шоу": "Show", - "сингл": "Single" + "альбом": "album", + "аудиокитеп": "audiobook", + "чакан альбом": "ep", + "шоу": "show", + "сингл": "single" }, "chan_prefix": "", "chan_suffix": "каналы аркылуу" @@ -2369,11 +2369,11 @@ "ຍັງບໍ່ມີຄົນເບິ່ງເທື່ອ": 0 }, "album_types": { - "ອະລະບໍ້າ": "Album", - "ປຶ້ມສຽງ": "Audiobook", - "ep": "Ep", - "ສະແດງ": "Show", - "ຊິງເກິນ": "Single" + "ອະລະບໍ້າ": "album", + "ປຶ້ມສຽງ": "audiobook", + "ep": "ep", + "ສະແດງ": "show", + "ຊິງເກິນ": "single" }, "chan_prefix": "ໂດຍ", "chan_suffix": "" @@ -2434,11 +2434,11 @@ "nėra": 0 }, "album_types": { - "albumas": "Album", - "garsinė knyga": "Audiobook", - "mini albumas": "Ep", - "serialas": "Show", - "singlas": "Single" + "albumas": "album", + "garsinė knyga": "audiobook", + "mini albumas": "ep", + "serialas": "show", + "singlas": "single" }, "chan_prefix": "pridėjo", "chan_suffix": "" @@ -2502,11 +2502,11 @@ "nav": 0 }, "album_types": { - "albums": "Album", - "audiogrāmata": "Audiobook", - "ep ieraksts": "Ep", - "pārraide": "Show", - "singls": "Single" + "albums": "album", + "audiogrāmata": "audiobook", + "ep ieraksts": "ep", + "pārraide": "show", + "singls": "single" }, "chan_prefix": "autors:", "chan_suffix": "" @@ -2550,11 +2550,11 @@ "нема": 0 }, "album_types": { - "албум": "Album", - "аудиокнига": "Audiobook", - "ep": "Ep", - "серија": "Show", - "сингл": "Single" + "албум": "album", + "аудиокнига": "audiobook", + "ep": "ep", + "серија": "show", + "сингл": "single" }, "chan_prefix": "од", "chan_suffix": "" @@ -2602,11 +2602,11 @@ "ഇല്ല": 0 }, "album_types": { - "ആല്‍‌ബം": "Album", - "ഓഡിയോ ബുക്ക്": "Audiobook", - "ep": "Ep", - "ഷോ": "Show", - "സിംഗിൾ": "Single" + "ആല്‍‌ബം": "album", + "ഓഡിയോ ബുക്ക്": "audiobook", + "ep": "ep", + "ഷോ": "show", + "സിംഗിൾ": "single" }, "chan_prefix": "", "chan_suffix": "മുഖേന" @@ -2645,11 +2645,11 @@ "үзэлтгүй": 0 }, "album_types": { - "цомог": "Album", - "аудио ном": "Audiobook", - "ep": "Ep", - "жүжиг": "Show", - "сингл": "Single" + "цомог": "album", + "аудио ном": "audiobook", + "ep": "ep", + "жүжиг": "show", + "сингл": "single" }, "chan_prefix": "сувгийн нэр:", "chan_suffix": "" @@ -2710,11 +2710,11 @@ "नाहीत": 0 }, "album_types": { - "अल्बम": "Album", - "ऑडिओबुक": "Audiobook", - "भाग": "Ep", - "शो": "Show", - "सिंगल": "Single" + "अल्बम": "album", + "ऑडिओबुक": "audiobook", + "भाग": "ep", + "शो": "show", + "सिंगल": "single" }, "chan_prefix": "", "chan_suffix": "द्वारे" @@ -2763,11 +2763,11 @@ "tiada": 0 }, "album_types": { - "album": "Album", - "buku audio": "Audiobook", - "ep": "Ep", - "rancangan": "Show", - "rekod single": "Single" + "album": "album", + "buku audio": "audiobook", + "ep": "ep", + "rancangan": "show", + "rekod single": "single" }, "chan_prefix": "oleh", "chan_suffix": "" @@ -2820,11 +2820,11 @@ "၁": 1 }, "album_types": { - "အယ်လ်ဘမ်": "Album", - "အော်ဒီယိုစာအုပ်": "Audiobook", - "ep": "Ep", - "ရှိုး": "Show", - "တစ်ကိုယ်တော်": "Single" + "အယ်လ်ဘမ်": "album", + "အော်ဒီယိုစာအုပ်": "audiobook", + "ep": "ep", + "ရှိုး": "show", + "တစ်ကိုယ်တော်": "single" }, "chan_prefix": "", "chan_suffix": "မှ" @@ -2872,11 +2872,11 @@ "छैन": 0 }, "album_types": { - "एल्बम": "Album", - "अडियोबुक": "Audiobook", - "ep": "Ep", - "टिभी सो": "Show", - "एकल एल्बम": "Single" + "एल्बम": "album", + "अडियोबुक": "audiobook", + "ep": "ep", + "टिभी सो": "show", + "एकल एल्बम": "single" }, "chan_prefix": "", "chan_suffix": "द्वारा" @@ -2929,11 +2929,11 @@ "geen": 0 }, "album_types": { - "album": "Album", - "audioboek": "Audiobook", - "ep": "Ep", - "aflevering": "Show", - "single": "Single" + "album": "album", + "audioboek": "audiobook", + "ep": "ep", + "aflevering": "show", + "single": "single" }, "chan_prefix": "door", "chan_suffix": "" @@ -2995,11 +2995,11 @@ "én": 1 }, "album_types": { - "album": "Album", - "lydbok": "Audiobook", - "ep": "Ep", - "hørespill": "Show", - "singel": "Single" + "album": "album", + "lydbok": "audiobook", + "ep": "ep", + "hørespill": "show", + "singel": "single" }, "chan_prefix": "av", "chan_suffix": "" @@ -3058,11 +3058,11 @@ "ନାହିଁ": 0 }, "album_types": { - "ଆଲବମ୍": "Album", - "ଅଡିଓବୁକ୍": "Audiobook", - "ep": "Ep", - "ଶୋ": "Show", - "ସିଙ୍ଗଲ୍": "Single" + "ଆଲବମ୍": "album", + "ଅଡିଓବୁକ୍": "audiobook", + "ep": "ep", + "ଶୋ": "show", + "ସିଙ୍ଗଲ୍": "single" }, "chan_prefix": "", "chan_suffix": "ଦ୍ଵାରା" @@ -3112,11 +3112,11 @@ "ਨਹੀਂ": 0 }, "album_types": { - "ਐਲਬਮ": "Album", - "ਆਡੀਓ-ਕਿਤਾਬ": "Audiobook", - "ep": "Ep", - "ਸ਼ੋਅ": "Show", - "ਸਿੰਗਲ": "Single" + "ਐਲਬਮ": "album", + "ਆਡੀਓ-ਕਿਤਾਬ": "audiobook", + "ep": "ep", + "ਸ਼ੋਅ": "show", + "ਸਿੰਗਲ": "single" }, "chan_prefix": "", "chan_suffix": "ਵੱਲੋਂ" @@ -3187,11 +3187,11 @@ "brak": 0 }, "album_types": { - "album": "Album", - "audiobook": "Audiobook", - "ep": "Ep", - "słuchowisko": "Show", - "singiel": "Single" + "album": "album", + "audiobook": "audiobook", + "ep": "ep", + "słuchowisko": "show", + "singiel": "single" }, "chan_prefix": "autor:", "chan_suffix": "" @@ -3249,11 +3249,11 @@ "um": 1 }, "album_types": { - "álbum": "Album", - "audiolivro": "Audiobook", - "ep": "Ep", - "programa": "Show", - "single": "Single" + "álbum": "album", + "audiolivro": "audiobook", + "ep": "ep", + "programa": "show", + "single": "single" }, "chan_prefix": "por", "chan_suffix": "" @@ -3295,11 +3295,11 @@ }, "number_nd_tokens": {}, "album_types": { - "álbum": "Album", - "audiolivro": "Audiobook", - "ep": "Ep", - "programa": "Show", - "single": "Single" + "álbum": "album", + "audiolivro": "audiobook", + "ep": "ep", + "programa": "show", + "single": "single" }, "chan_prefix": "de", "chan_suffix": "" @@ -3357,11 +3357,11 @@ "un": 1 }, "album_types": { - "album": "Album", - "carte audio": "Audiobook", - "ep": "Ep", - "emisiune": "Show", - "single": "Single" + "album": "album", + "carte audio": "audiobook", + "ep": "ep", + "emisiune": "show", + "single": "single" }, "chan_prefix": "de", "chan_suffix": "" @@ -3430,11 +3430,11 @@ }, "number_nd_tokens": {}, "album_types": { - "альбом": "Album", - "аудиокнига": "Audiobook", - "ep": "Ep", - "аудиошоу": "Show", - "сингл": "Single" + "альбом": "album", + "аудиокнига": "audiobook", + "ep": "ep", + "аудиошоу": "show", + "сингл": "single" }, "chan_prefix": "", "chan_suffix": "" @@ -3482,11 +3482,11 @@ "නැත": 0 }, "album_types": { - "ඇල්බමය": "Album", - "ශ්‍රව්‍යපොත": "Audiobook", - "දීවා": "Ep", - "සංදර්ශනය": "Show", - "තනි": "Single" + "ඇල්බමය": "album", + "ශ්‍රව්‍යපොත": "audiobook", + "දීවා": "ep", + "සංදර්ශනය": "show", + "තනි": "single" }, "chan_prefix": "", "chan_suffix": "විසින්" @@ -3543,11 +3543,11 @@ "žiadne": 0 }, "album_types": { - "album": "Album", - "audiokniha": "Audiobook", - "ep": "Ep", - "relácia": "Show", - "singel": "Single" + "album": "album", + "audiokniha": "audiobook", + "ep": "ep", + "relácia": "show", + "singel": "single" }, "chan_prefix": "Autori:", "chan_suffix": "" @@ -3622,11 +3622,11 @@ "brez": 0 }, "album_types": { - "album": "Album", - "zvočna knjiga": "Audiobook", - "ep": "Ep", - "oddaja": "Show", - "singel": "Single" + "album": "album", + "zvočna knjiga": "audiobook", + "ep": "ep", + "oddaja": "show", + "singel": "single" }, "chan_prefix": "kanal", "chan_suffix": "" @@ -3677,11 +3677,11 @@ "nuk": 0 }, "album_types": { - "album": "Album", - "libër me audio": "Audiobook", - "ep": "Ep", - "shfaq": "Show", - "single": "Single" + "album": "album", + "libër me audio": "audiobook", + "ep": "ep", + "shfaq": "show", + "single": "single" }, "chan_prefix": "nga", "chan_suffix": "" @@ -3729,11 +3729,11 @@ "нема": 0 }, "album_types": { - "албум": "Album", - "аудио-књига": "Audiobook", - "ep": "Ep", - "серија": "Show", - "сингл": "Single" + "албум": "album", + "аудио-књига": "audiobook", + "ep": "ep", + "серија": "show", + "сингл": "single" }, "chan_prefix": "са канала", "chan_suffix": "" @@ -3781,11 +3781,11 @@ "nema": 0 }, "album_types": { - "album": "Album", - "audio-knjiga": "Audiobook", - "ep": "Ep", - "serija": "Show", - "singl": "Single" + "album": "album", + "audio-knjiga": "audiobook", + "ep": "ep", + "serija": "show", + "singl": "single" }, "chan_prefix": "sa kanala", "chan_suffix": "" @@ -3842,11 +3842,11 @@ "inga": 0 }, "album_types": { - "album": "Album", - "ljudbok": "Audiobook", - "ep": "Ep", - "ljuddrama": "Show", - "singel": "Single" + "album": "album", + "ljudbok": "audiobook", + "ep": "ep", + "ljuddrama": "show", + "singel": "single" }, "chan_prefix": "från", "chan_suffix": "" @@ -3894,11 +3894,11 @@ "haijatazamwa": 0 }, "album_types": { - "albamu": "Album", - "kitabu cha kusikiliza": "Audiobook", - "ep": "Ep", - "kipindi": "Show", - "singo": "Single" + "albamu": "album", + "kitabu cha kusikiliza": "audiobook", + "ep": "ep", + "kipindi": "show", + "singo": "single" }, "chan_prefix": "kutoka", "chan_suffix": "" @@ -3959,11 +3959,11 @@ "இல்லை": 0 }, "album_types": { - "ஆல்பம்": "Album", - "ஆடியோ புத்தகம்": "Audiobook", - "ep": "Ep", - "ஆடியோ ஷோ": "Show", - "சிங்கிள்": "Single" + "ஆல்பம்": "album", + "ஆடியோ புத்தகம்": "audiobook", + "ep": "ep", + "ஆடியோ ஷோ": "show", + "சிங்கிள்": "single" }, "chan_prefix": "வழங்கியவர்:", "chan_suffix": "" @@ -4022,11 +4022,11 @@ "లేవు": 0 }, "album_types": { - "ఆల్బమ్": "Album", - "ఆడియోబుక్": "Audiobook", - "ep": "Ep", - "చూపించు": "Show", - "సింగిల్": "Single" + "ఆల్బమ్": "album", + "ఆడియోబుక్": "audiobook", + "ep": "ep", + "చూపించు": "show", + "సింగిల్": "single" }, "chan_prefix": "", "chan_suffix": "ఛానెల్ ద్వారా" @@ -4085,11 +4085,11 @@ "ไม่มีการดู": 0 }, "album_types": { - "อัลบั้ม": "Album", - "หนังสือเสียง": "Audiobook", - "ep": "Ep", - "รายการ": "Show", - "ซิงเกิล": "Single" + "อัลบั้ม": "album", + "หนังสือเสียง": "audiobook", + "ep": "ep", + "รายการ": "show", + "ซิงเกิล": "single" }, "chan_prefix": "โดย", "chan_suffix": "" @@ -4139,11 +4139,11 @@ "yok": 0 }, "album_types": { - "albüm": "Album", - "sesli kitap": "Audiobook", - "ep": "Ep", - "program": "Show", - "single": "Single" + "albüm": "album", + "sesli kitap": "audiobook", + "ep": "ep", + "program": "show", + "single": "single" }, "chan_prefix": "", "chan_suffix": "tarafından" @@ -4216,11 +4216,11 @@ "жодного": 0 }, "album_types": { - "альбом": "Album", - "аудіокнига": "Audiobook", - "мініальбом": "Ep", - "аудіодрама": "Show", - "сингл": "Single" + "альбом": "album", + "аудіокнига": "audiobook", + "мініальбом": "ep", + "аудіодрама": "show", + "сингл": "single" }, "chan_prefix": "власник:", "chan_suffix": "" @@ -4275,11 +4275,11 @@ "نہیں": 0 }, "album_types": { - "البم": "Album", - "آڈیو بک": "Audiobook", - "ep": "Ep", - "شو": "Show", - "واحد": "Single" + "البم": "album", + "آڈیو بک": "audiobook", + "ep": "ep", + "شو": "show", + "واحد": "single" }, "chan_prefix": "منجانب", "chan_suffix": "" @@ -4325,11 +4325,11 @@ }, "number_nd_tokens": {}, "album_types": { - "albom": "Album", - "audiokitob": "Audiobook", - "ep": "Ep", - "shou": "Show", - "singl": "Single" + "albom": "album", + "audiokitob": "audiobook", + "ep": "ep", + "shou": "show", + "singl": "single" }, "chan_prefix": "muallif:", "chan_suffix": "" @@ -4360,11 +4360,11 @@ }, "number_nd_tokens": {}, "album_types": { - "đĩa nhạc": "Album", - "sách nói": "Audiobook", - "đĩa nhạc mở rộng (ep)": "Ep", - "chương trình": "Show", - "đĩa đơn": "Single" + "đĩa nhạc": "album", + "sách nói": "audiobook", + "đĩa nhạc mở rộng (ep)": "ep", + "chương trình": "show", + "đĩa đơn": "single" }, "chan_prefix": "của", "chan_suffix": "" @@ -4396,11 +4396,11 @@ "无": 0 }, "album_types": { - "专辑": "Album", - "有声读物": "Audiobook", - "迷你专辑": "Ep", - "广播剧": "Show", - "单曲": "Single" + "专辑": "album", + "有声读物": "audiobook", + "迷你专辑": "ep", + "广播剧": "show", + "单曲": "single" }, "chan_prefix": "创建者:", "chan_suffix": "" @@ -4431,11 +4431,11 @@ }, "number_nd_tokens": {}, "album_types": { - "專輯": "Album", - "有聲書": "Audiobook", - "ep": "Ep", - "節目": "Show", - "單曲": "Single" + "專輯": "album", + "有聲書": "audiobook", + "ep": "ep", + "節目": "show", + "單曲": "single" }, "chan_prefix": "來自", "chan_suffix": "" @@ -4465,11 +4465,11 @@ }, "number_nd_tokens": {}, "album_types": { - "專輯": "Album", - "有聲書": "Audiobook", - "ep": "Ep", - "節目": "Show", - "單曲": "Single" + "專輯": "album", + "有聲書": "audiobook", + "ep": "ep", + "節目": "show", + "單曲": "single" }, "chan_prefix": "由", "chan_suffix": "建立" @@ -4531,11 +4531,11 @@ "akukho": 0 }, "album_types": { - "i-albhamu": "Album", - "i-audiobook": "Audiobook", - "i-ep": "Ep", - "bonisa": "Show", - "i-single": "Single" + "i-albhamu": "album", + "i-audiobook": "audiobook", + "i-ep": "ep", + "bonisa": "show", + "i-single": "single" }, "chan_prefix": "ka-", "chan_suffix": "" diff --git a/tests/snapshots/youtube__music_album_audiobook.snap b/tests/snapshots/youtube__music_album_audiobook.snap index 5699c30..a1f0632 100644 --- a/tests/snapshots/youtube__music_album_audiobook.snap +++ b/tests/snapshots/youtube__music_album_audiobook.snap @@ -15,7 +15,7 @@ MusicAlbum( ], artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), description: None, - album_type: Audiobook, + album_type: audiobook, year: Some(2022), by_va: false, tracks: [ @@ -31,7 +31,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -47,7 +47,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -63,7 +63,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -79,7 +79,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -95,7 +95,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -111,7 +111,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), @@ -127,7 +127,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(7), by_va: false, ), @@ -143,7 +143,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(8), by_va: false, ), @@ -159,7 +159,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(9), by_va: false, ), @@ -175,7 +175,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(10), by_va: false, ), @@ -191,7 +191,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(11), by_va: false, ), @@ -207,7 +207,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(12), by_va: false, ), @@ -223,7 +223,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(13), by_va: false, ), @@ -239,7 +239,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(14), by_va: false, ), @@ -255,7 +255,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(15), by_va: false, ), @@ -271,7 +271,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(16), by_va: false, ), @@ -287,7 +287,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(17), by_va: false, ), @@ -303,7 +303,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(18), by_va: false, ), @@ -319,7 +319,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(19), by_va: false, ), @@ -335,7 +335,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(20), by_va: false, ), @@ -351,7 +351,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(21), by_va: false, ), @@ -367,7 +367,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(22), by_va: false, ), @@ -383,7 +383,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(23), by_va: false, ), @@ -399,7 +399,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(24), by_va: false, ), @@ -415,7 +415,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(25), by_va: false, ), @@ -431,7 +431,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(26), by_va: false, ), @@ -447,7 +447,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(27), by_va: false, ), @@ -463,7 +463,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(28), by_va: false, ), @@ -479,7 +479,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(29), by_va: false, ), @@ -495,7 +495,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(30), by_va: false, ), @@ -511,7 +511,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(31), by_va: false, ), @@ -527,7 +527,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(32), by_va: false, ), @@ -543,7 +543,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(33), by_va: false, ), @@ -559,7 +559,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(34), by_va: false, ), @@ -575,7 +575,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(35), by_va: false, ), @@ -591,7 +591,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(36), by_va: false, ), @@ -607,7 +607,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(37), by_va: false, ), @@ -623,7 +623,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(38), by_va: false, ), @@ -639,7 +639,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(39), by_va: false, ), @@ -655,7 +655,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(40), by_va: false, ), @@ -671,7 +671,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(41), by_va: false, ), @@ -687,7 +687,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(42), by_va: false, ), @@ -703,7 +703,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(43), by_va: false, ), @@ -719,7 +719,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(44), by_va: false, ), @@ -735,7 +735,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(45), by_va: false, ), @@ -751,7 +751,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(46), by_va: false, ), @@ -767,7 +767,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(47), by_va: false, ), @@ -783,7 +783,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(48), by_va: false, ), @@ -799,7 +799,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(49), by_va: false, ), @@ -815,7 +815,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(50), by_va: false, ), @@ -831,7 +831,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(51), by_va: false, ), @@ -847,7 +847,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(52), by_va: false, ), @@ -863,7 +863,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(53), by_va: false, ), @@ -879,7 +879,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(54), by_va: false, ), @@ -895,7 +895,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(55), by_va: false, ), @@ -911,7 +911,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(56), by_va: false, ), @@ -927,7 +927,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(57), by_va: false, ), @@ -943,7 +943,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(58), by_va: false, ), @@ -959,7 +959,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(59), by_va: false, ), @@ -975,7 +975,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(60), by_va: false, ), @@ -991,7 +991,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(61), by_va: false, ), @@ -1007,7 +1007,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(62), by_va: false, ), @@ -1023,7 +1023,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(63), by_va: false, ), @@ -1039,7 +1039,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(64), by_va: false, ), @@ -1055,7 +1055,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(65), by_va: false, ), @@ -1071,7 +1071,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(66), by_va: false, ), @@ -1087,7 +1087,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(67), by_va: false, ), @@ -1103,7 +1103,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(68), by_va: false, ), @@ -1119,7 +1119,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(69), by_va: false, ), @@ -1135,7 +1135,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(70), by_va: false, ), @@ -1151,7 +1151,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(71), by_va: false, ), @@ -1167,7 +1167,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(72), by_va: false, ), @@ -1183,7 +1183,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(73), by_va: false, ), @@ -1199,7 +1199,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(74), by_va: false, ), @@ -1215,7 +1215,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(75), by_va: false, ), @@ -1231,7 +1231,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(76), by_va: false, ), @@ -1247,7 +1247,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(77), by_va: false, ), @@ -1263,7 +1263,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(78), by_va: false, ), @@ -1279,7 +1279,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(79), by_va: false, ), @@ -1295,7 +1295,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(80), by_va: false, ), @@ -1311,7 +1311,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(81), by_va: false, ), @@ -1327,7 +1327,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(82), by_va: false, ), @@ -1343,7 +1343,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(83), by_va: false, ), @@ -1359,7 +1359,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(84), by_va: false, ), @@ -1375,7 +1375,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(85), by_va: false, ), @@ -1391,7 +1391,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(86), by_va: false, ), @@ -1407,7 +1407,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(87), by_va: false, ), @@ -1423,7 +1423,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(88), by_va: false, ), @@ -1439,7 +1439,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(90), by_va: false, ), @@ -1455,7 +1455,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(91), by_va: false, ), @@ -1471,7 +1471,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(92), by_va: false, ), @@ -1487,7 +1487,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(93), by_va: false, ), @@ -1503,7 +1503,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(94), by_va: false, ), @@ -1519,7 +1519,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(95), by_va: false, ), @@ -1535,7 +1535,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(96), by_va: false, ), @@ -1551,7 +1551,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(97), by_va: false, ), @@ -1567,7 +1567,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(98), by_va: false, ), @@ -1583,7 +1583,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(99), by_va: false, ), @@ -1599,7 +1599,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(100), by_va: false, ), @@ -1615,7 +1615,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(101), by_va: false, ), @@ -1631,7 +1631,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(102), by_va: false, ), @@ -1647,7 +1647,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(103), by_va: false, ), @@ -1663,7 +1663,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(104), by_va: false, ), @@ -1679,7 +1679,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(105), by_va: false, ), @@ -1695,7 +1695,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(106), by_va: false, ), @@ -1711,7 +1711,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(107), by_va: false, ), @@ -1727,7 +1727,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(108), by_va: false, ), @@ -1743,7 +1743,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(109), by_va: false, ), @@ -1759,7 +1759,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(110), by_va: false, ), @@ -1775,7 +1775,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(111), by_va: false, ), @@ -1791,7 +1791,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(112), by_va: false, ), @@ -1807,7 +1807,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(113), by_va: false, ), @@ -1823,7 +1823,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(114), by_va: false, ), @@ -1839,7 +1839,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(115), by_va: false, ), @@ -1855,7 +1855,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(116), by_va: false, ), @@ -1871,7 +1871,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(117), by_va: false, ), @@ -1887,7 +1887,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(118), by_va: false, ), @@ -1903,7 +1903,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(119), by_va: false, ), @@ -1919,7 +1919,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(120), by_va: false, ), @@ -1935,7 +1935,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(121), by_va: false, ), @@ -1951,7 +1951,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(122), by_va: false, ), @@ -1967,7 +1967,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(123), by_va: false, ), @@ -1983,7 +1983,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(124), by_va: false, ), @@ -1999,7 +1999,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(125), by_va: false, ), @@ -2015,7 +2015,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(126), by_va: false, ), @@ -2031,7 +2031,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(127), by_va: false, ), @@ -2047,7 +2047,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(128), by_va: false, ), @@ -2063,7 +2063,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(129), by_va: false, ), @@ -2079,7 +2079,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(130), by_va: false, ), @@ -2095,7 +2095,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(131), by_va: false, ), @@ -2111,7 +2111,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(132), by_va: false, ), @@ -2127,7 +2127,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(133), by_va: false, ), @@ -2143,7 +2143,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(134), by_va: false, ), @@ -2159,7 +2159,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(135), by_va: false, ), @@ -2175,7 +2175,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(136), by_va: false, ), @@ -2191,7 +2191,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(137), by_va: false, ), @@ -2207,7 +2207,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(138), by_va: false, ), @@ -2223,7 +2223,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(139), by_va: false, ), @@ -2239,7 +2239,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(140), by_va: false, ), @@ -2255,7 +2255,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(141), by_va: false, ), @@ -2271,7 +2271,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(142), by_va: false, ), @@ -2287,7 +2287,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(143), by_va: false, ), @@ -2303,7 +2303,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(144), by_va: false, ), @@ -2319,7 +2319,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(145), by_va: false, ), @@ -2335,7 +2335,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(146), by_va: false, ), @@ -2351,7 +2351,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(147), by_va: false, ), @@ -2367,7 +2367,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(148), by_va: false, ), @@ -2383,7 +2383,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(149), by_va: false, ), @@ -2399,7 +2399,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(150), by_va: false, ), @@ -2415,7 +2415,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(151), by_va: false, ), @@ -2431,7 +2431,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(152), by_va: false, ), @@ -2447,7 +2447,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(153), by_va: false, ), @@ -2463,7 +2463,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(154), by_va: false, ), @@ -2479,7 +2479,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(155), by_va: false, ), @@ -2495,7 +2495,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(156), by_va: false, ), @@ -2511,7 +2511,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(157), by_va: false, ), @@ -2527,7 +2527,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(158), by_va: false, ), @@ -2543,7 +2543,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(159), by_va: false, ), @@ -2559,7 +2559,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(160), by_va: false, ), @@ -2575,7 +2575,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(161), by_va: false, ), @@ -2591,7 +2591,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(162), by_va: false, ), @@ -2607,7 +2607,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(163), by_va: false, ), @@ -2623,7 +2623,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(164), by_va: false, ), @@ -2639,7 +2639,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(165), by_va: false, ), @@ -2655,7 +2655,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(166), by_va: false, ), @@ -2671,7 +2671,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(167), by_va: false, ), @@ -2687,7 +2687,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(168), by_va: false, ), @@ -2703,7 +2703,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(169), by_va: false, ), @@ -2719,7 +2719,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(170), by_va: false, ), @@ -2735,7 +2735,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(171), by_va: false, ), @@ -2751,7 +2751,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(172), by_va: false, ), @@ -2767,7 +2767,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(173), by_va: false, ), @@ -2783,7 +2783,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(174), by_va: false, ), @@ -2799,7 +2799,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(175), by_va: false, ), @@ -2815,7 +2815,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(176), by_va: false, ), @@ -2831,7 +2831,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(177), by_va: false, ), @@ -2847,7 +2847,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(178), by_va: false, ), @@ -2863,7 +2863,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(179), by_va: false, ), @@ -2879,7 +2879,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(180), by_va: false, ), @@ -2895,7 +2895,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(181), by_va: false, ), @@ -2911,7 +2911,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(182), by_va: false, ), @@ -2927,7 +2927,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(183), by_va: false, ), @@ -2943,7 +2943,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(184), by_va: false, ), @@ -2959,7 +2959,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(185), by_va: false, ), @@ -2975,7 +2975,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(186), by_va: false, ), @@ -2991,7 +2991,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(187), by_va: false, ), @@ -3007,7 +3007,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(188), by_va: false, ), @@ -3023,7 +3023,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(189), by_va: false, ), @@ -3039,7 +3039,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(190), by_va: false, ), @@ -3055,7 +3055,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(191), by_va: false, ), @@ -3071,7 +3071,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(192), by_va: false, ), @@ -3087,7 +3087,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(193), by_va: false, ), @@ -3103,7 +3103,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(194), by_va: false, ), @@ -3119,7 +3119,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(195), by_va: false, ), @@ -3135,7 +3135,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(196), by_va: false, ), @@ -3151,7 +3151,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(197), by_va: false, ), @@ -3167,7 +3167,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(198), by_va: false, ), @@ -3183,7 +3183,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(199), by_va: false, ), @@ -3199,7 +3199,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(200), by_va: false, ), @@ -3215,7 +3215,7 @@ MusicAlbum( name: "1984", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(201), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_audiobook_intl.snap b/tests/snapshots/youtube__music_album_audiobook_intl.snap index d741a01..dfae958 100644 --- a/tests/snapshots/youtube__music_album_audiobook_intl.snap +++ b/tests/snapshots/youtube__music_album_audiobook_intl.snap @@ -15,7 +15,7 @@ MusicAlbum( ], artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), description: "[description]", - album_type: Audiobook, + album_type: audiobook, year: Some(2022), by_va: false, tracks: [ @@ -31,7 +31,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -47,7 +47,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -63,7 +63,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -79,7 +79,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -95,7 +95,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -111,7 +111,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), @@ -127,7 +127,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(7), by_va: false, ), @@ -143,7 +143,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(8), by_va: false, ), @@ -159,7 +159,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(9), by_va: false, ), @@ -175,7 +175,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(10), by_va: false, ), @@ -191,7 +191,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(11), by_va: false, ), @@ -207,7 +207,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(12), by_va: false, ), @@ -223,7 +223,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(13), by_va: false, ), @@ -239,7 +239,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(14), by_va: false, ), @@ -255,7 +255,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(15), by_va: false, ), @@ -271,7 +271,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(16), by_va: false, ), @@ -287,7 +287,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(17), by_va: false, ), @@ -303,7 +303,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(18), by_va: false, ), @@ -319,7 +319,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(19), by_va: false, ), @@ -335,7 +335,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(20), by_va: false, ), @@ -351,7 +351,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(21), by_va: false, ), @@ -367,7 +367,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(22), by_va: false, ), @@ -383,7 +383,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(23), by_va: false, ), @@ -399,7 +399,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(24), by_va: false, ), @@ -415,7 +415,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(25), by_va: false, ), @@ -431,7 +431,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(26), by_va: false, ), @@ -447,7 +447,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(27), by_va: false, ), @@ -463,7 +463,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(28), by_va: false, ), @@ -479,7 +479,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(29), by_va: false, ), @@ -495,7 +495,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(30), by_va: false, ), @@ -511,7 +511,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(31), by_va: false, ), @@ -527,7 +527,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(32), by_va: false, ), @@ -543,7 +543,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(33), by_va: false, ), @@ -559,7 +559,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(34), by_va: false, ), @@ -575,7 +575,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(35), by_va: false, ), @@ -591,7 +591,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(36), by_va: false, ), @@ -607,7 +607,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(37), by_va: false, ), @@ -623,7 +623,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(38), by_va: false, ), @@ -639,7 +639,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(39), by_va: false, ), @@ -655,7 +655,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(40), by_va: false, ), @@ -671,7 +671,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(41), by_va: false, ), @@ -687,7 +687,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(42), by_va: false, ), @@ -703,7 +703,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(43), by_va: false, ), @@ -719,7 +719,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(44), by_va: false, ), @@ -735,7 +735,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(45), by_va: false, ), @@ -751,7 +751,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(46), by_va: false, ), @@ -767,7 +767,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(47), by_va: false, ), @@ -783,7 +783,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(48), by_va: false, ), @@ -799,7 +799,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(49), by_va: false, ), @@ -815,7 +815,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(50), by_va: false, ), @@ -831,7 +831,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(51), by_va: false, ), @@ -847,7 +847,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(52), by_va: false, ), @@ -863,7 +863,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(53), by_va: false, ), @@ -879,7 +879,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(54), by_va: false, ), @@ -895,7 +895,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(55), by_va: false, ), @@ -911,7 +911,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(56), by_va: false, ), @@ -927,7 +927,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(57), by_va: false, ), @@ -943,7 +943,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(58), by_va: false, ), @@ -959,7 +959,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(59), by_va: false, ), @@ -975,7 +975,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(60), by_va: false, ), @@ -991,7 +991,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(61), by_va: false, ), @@ -1007,7 +1007,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(62), by_va: false, ), @@ -1023,7 +1023,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(63), by_va: false, ), @@ -1039,7 +1039,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(64), by_va: false, ), @@ -1055,7 +1055,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(65), by_va: false, ), @@ -1071,7 +1071,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(66), by_va: false, ), @@ -1087,7 +1087,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(67), by_va: false, ), @@ -1103,7 +1103,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(68), by_va: false, ), @@ -1119,7 +1119,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(69), by_va: false, ), @@ -1135,7 +1135,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(70), by_va: false, ), @@ -1151,7 +1151,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(71), by_va: false, ), @@ -1167,7 +1167,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(72), by_va: false, ), @@ -1183,7 +1183,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(73), by_va: false, ), @@ -1199,7 +1199,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(74), by_va: false, ), @@ -1215,7 +1215,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(75), by_va: false, ), @@ -1231,7 +1231,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(76), by_va: false, ), @@ -1247,7 +1247,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(77), by_va: false, ), @@ -1263,7 +1263,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(78), by_va: false, ), @@ -1279,7 +1279,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(79), by_va: false, ), @@ -1295,7 +1295,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(80), by_va: false, ), @@ -1311,7 +1311,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(81), by_va: false, ), @@ -1327,7 +1327,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(82), by_va: false, ), @@ -1343,7 +1343,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(83), by_va: false, ), @@ -1359,7 +1359,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(84), by_va: false, ), @@ -1375,7 +1375,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(85), by_va: false, ), @@ -1391,7 +1391,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(86), by_va: false, ), @@ -1407,7 +1407,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(87), by_va: false, ), @@ -1423,7 +1423,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(88), by_va: false, ), @@ -1439,7 +1439,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(90), by_va: false, ), @@ -1455,7 +1455,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(91), by_va: false, ), @@ -1471,7 +1471,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(92), by_va: false, ), @@ -1487,7 +1487,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(93), by_va: false, ), @@ -1503,7 +1503,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(94), by_va: false, ), @@ -1519,7 +1519,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(95), by_va: false, ), @@ -1535,7 +1535,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(96), by_va: false, ), @@ -1551,7 +1551,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(97), by_va: false, ), @@ -1567,7 +1567,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(98), by_va: false, ), @@ -1583,7 +1583,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(99), by_va: false, ), @@ -1599,7 +1599,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(100), by_va: false, ), @@ -1615,7 +1615,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(101), by_va: false, ), @@ -1631,7 +1631,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(102), by_va: false, ), @@ -1647,7 +1647,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(103), by_va: false, ), @@ -1663,7 +1663,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(104), by_va: false, ), @@ -1679,7 +1679,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(105), by_va: false, ), @@ -1695,7 +1695,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(106), by_va: false, ), @@ -1711,7 +1711,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(107), by_va: false, ), @@ -1727,7 +1727,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(108), by_va: false, ), @@ -1743,7 +1743,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(109), by_va: false, ), @@ -1759,7 +1759,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(110), by_va: false, ), @@ -1775,7 +1775,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(111), by_va: false, ), @@ -1791,7 +1791,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(112), by_va: false, ), @@ -1807,7 +1807,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(113), by_va: false, ), @@ -1823,7 +1823,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(114), by_va: false, ), @@ -1839,7 +1839,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(115), by_va: false, ), @@ -1855,7 +1855,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(116), by_va: false, ), @@ -1871,7 +1871,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(117), by_va: false, ), @@ -1887,7 +1887,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(118), by_va: false, ), @@ -1903,7 +1903,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(119), by_va: false, ), @@ -1919,7 +1919,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(120), by_va: false, ), @@ -1935,7 +1935,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(121), by_va: false, ), @@ -1951,7 +1951,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(122), by_va: false, ), @@ -1967,7 +1967,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(123), by_va: false, ), @@ -1983,7 +1983,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(124), by_va: false, ), @@ -1999,7 +1999,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(125), by_va: false, ), @@ -2015,7 +2015,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(126), by_va: false, ), @@ -2031,7 +2031,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(127), by_va: false, ), @@ -2047,7 +2047,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(128), by_va: false, ), @@ -2063,7 +2063,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(129), by_va: false, ), @@ -2079,7 +2079,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(130), by_va: false, ), @@ -2095,7 +2095,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(131), by_va: false, ), @@ -2111,7 +2111,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(132), by_va: false, ), @@ -2127,7 +2127,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(133), by_va: false, ), @@ -2143,7 +2143,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(134), by_va: false, ), @@ -2159,7 +2159,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(135), by_va: false, ), @@ -2175,7 +2175,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(136), by_va: false, ), @@ -2191,7 +2191,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(137), by_va: false, ), @@ -2207,7 +2207,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(138), by_va: false, ), @@ -2223,7 +2223,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(139), by_va: false, ), @@ -2239,7 +2239,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(140), by_va: false, ), @@ -2255,7 +2255,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(141), by_va: false, ), @@ -2271,7 +2271,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(142), by_va: false, ), @@ -2287,7 +2287,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(143), by_va: false, ), @@ -2303,7 +2303,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(144), by_va: false, ), @@ -2319,7 +2319,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(145), by_va: false, ), @@ -2335,7 +2335,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(146), by_va: false, ), @@ -2351,7 +2351,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(147), by_va: false, ), @@ -2367,7 +2367,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(148), by_va: false, ), @@ -2383,7 +2383,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(149), by_va: false, ), @@ -2399,7 +2399,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(150), by_va: false, ), @@ -2415,7 +2415,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(151), by_va: false, ), @@ -2431,7 +2431,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(152), by_va: false, ), @@ -2447,7 +2447,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(153), by_va: false, ), @@ -2463,7 +2463,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(154), by_va: false, ), @@ -2479,7 +2479,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(155), by_va: false, ), @@ -2495,7 +2495,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(156), by_va: false, ), @@ -2511,7 +2511,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(157), by_va: false, ), @@ -2527,7 +2527,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(158), by_va: false, ), @@ -2543,7 +2543,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(159), by_va: false, ), @@ -2559,7 +2559,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(160), by_va: false, ), @@ -2575,7 +2575,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(161), by_va: false, ), @@ -2591,7 +2591,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(162), by_va: false, ), @@ -2607,7 +2607,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(163), by_va: false, ), @@ -2623,7 +2623,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(164), by_va: false, ), @@ -2639,7 +2639,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(165), by_va: false, ), @@ -2655,7 +2655,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(166), by_va: false, ), @@ -2671,7 +2671,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(167), by_va: false, ), @@ -2687,7 +2687,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(168), by_va: false, ), @@ -2703,7 +2703,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(169), by_va: false, ), @@ -2719,7 +2719,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(170), by_va: false, ), @@ -2735,7 +2735,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(171), by_va: false, ), @@ -2751,7 +2751,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(172), by_va: false, ), @@ -2767,7 +2767,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(173), by_va: false, ), @@ -2783,7 +2783,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(174), by_va: false, ), @@ -2799,7 +2799,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(175), by_va: false, ), @@ -2815,7 +2815,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(176), by_va: false, ), @@ -2831,7 +2831,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(177), by_va: false, ), @@ -2847,7 +2847,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(178), by_va: false, ), @@ -2863,7 +2863,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(179), by_va: false, ), @@ -2879,7 +2879,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(180), by_va: false, ), @@ -2895,7 +2895,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(181), by_va: false, ), @@ -2911,7 +2911,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(182), by_va: false, ), @@ -2927,7 +2927,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(183), by_va: false, ), @@ -2943,7 +2943,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(184), by_va: false, ), @@ -2959,7 +2959,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(185), by_va: false, ), @@ -2975,7 +2975,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(186), by_va: false, ), @@ -2991,7 +2991,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(187), by_va: false, ), @@ -3007,7 +3007,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(188), by_va: false, ), @@ -3023,7 +3023,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(189), by_va: false, ), @@ -3039,7 +3039,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(190), by_va: false, ), @@ -3055,7 +3055,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(191), by_va: false, ), @@ -3071,7 +3071,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(192), by_va: false, ), @@ -3087,7 +3087,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(193), by_va: false, ), @@ -3103,7 +3103,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(194), by_va: false, ), @@ -3119,7 +3119,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(195), by_va: false, ), @@ -3135,7 +3135,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(196), by_va: false, ), @@ -3151,7 +3151,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(197), by_va: false, ), @@ -3167,7 +3167,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(198), by_va: false, ), @@ -3183,7 +3183,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(199), by_va: false, ), @@ -3199,7 +3199,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(200), by_va: false, ), @@ -3215,7 +3215,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(201), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_ep.snap b/tests/snapshots/youtube__music_album_ep.snap index 03a55ab..92e2f4d 100644 --- a/tests/snapshots/youtube__music_album_ep.snap +++ b/tests/snapshots/youtube__music_album_ep.snap @@ -15,7 +15,7 @@ MusicAlbum( ], artist_id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"), description: None, - album_type: Ep, + album_type: ep, year: Some(2016), by_va: false, tracks: [ @@ -36,7 +36,7 @@ MusicAlbum( name: "Waldbrand", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -57,7 +57,7 @@ MusicAlbum( name: "Waldbrand", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -78,7 +78,7 @@ MusicAlbum( name: "Waldbrand", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -99,7 +99,7 @@ MusicAlbum( name: "Waldbrand", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -120,7 +120,7 @@ MusicAlbum( name: "Waldbrand", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_ep_intl.snap b/tests/snapshots/youtube__music_album_ep_intl.snap index 83775be..bf344f7 100644 --- a/tests/snapshots/youtube__music_album_ep_intl.snap +++ b/tests/snapshots/youtube__music_album_ep_intl.snap @@ -15,7 +15,7 @@ MusicAlbum( ], artist_id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"), description: "[description]", - album_type: Ep, + album_type: ep, year: Some(2016), by_va: false, tracks: [ @@ -36,7 +36,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -57,7 +57,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -78,7 +78,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -99,7 +99,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -120,7 +120,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_no_artist.snap b/tests/snapshots/youtube__music_album_no_artist.snap index e7b9f2e..c4831dd 100644 --- a/tests/snapshots/youtube__music_album_no_artist.snap +++ b/tests/snapshots/youtube__music_album_no_artist.snap @@ -10,7 +10,7 @@ MusicAlbum( artists: [], artist_id: None, description: None, - album_type: Album, + album_type: album, year: Some(2024), by_va: true, tracks: [ @@ -35,7 +35,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -56,7 +56,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -77,7 +77,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -98,7 +98,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -123,7 +123,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -144,7 +144,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), @@ -169,7 +169,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(7), by_va: false, ), @@ -190,7 +190,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(8), by_va: false, ), @@ -211,7 +211,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(9), by_va: false, ), @@ -232,7 +232,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(10), by_va: false, ), @@ -257,7 +257,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(11), by_va: false, ), @@ -278,7 +278,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(12), by_va: false, ), @@ -299,7 +299,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(13), by_va: false, ), @@ -324,7 +324,7 @@ MusicAlbum( name: "June Compilation", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(14), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_no_artist_intl.snap b/tests/snapshots/youtube__music_album_no_artist_intl.snap index b57f39f..7454e41 100644 --- a/tests/snapshots/youtube__music_album_no_artist_intl.snap +++ b/tests/snapshots/youtube__music_album_no_artist_intl.snap @@ -10,7 +10,7 @@ MusicAlbum( artists: [], artist_id: None, description: "[description]", - album_type: Album, + album_type: album, year: Some(2024), by_va: true, tracks: [ @@ -35,7 +35,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -56,7 +56,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -77,7 +77,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -98,7 +98,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -123,7 +123,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -144,7 +144,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), @@ -169,7 +169,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(7), by_va: false, ), @@ -190,7 +190,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(8), by_va: false, ), @@ -211,7 +211,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(9), by_va: false, ), @@ -232,7 +232,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(10), by_va: false, ), @@ -257,7 +257,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(11), by_va: false, ), @@ -278,7 +278,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(12), by_va: false, ), @@ -299,7 +299,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(13), by_va: false, ), @@ -324,7 +324,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(14), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_no_year.snap b/tests/snapshots/youtube__music_album_no_year.snap index e9a913e..44c8290 100644 --- a/tests/snapshots/youtube__music_album_no_year.snap +++ b/tests/snapshots/youtube__music_album_no_year.snap @@ -23,7 +23,7 @@ MusicAlbum( ], artist_id: Some("UCAJwa_1l4rHzBJyWbeBtGZw"), description: None, - album_type: Single, + album_type: single, year: None, by_va: false, tracks: [ @@ -52,7 +52,7 @@ MusicAlbum( name: "La Ultima Vez (Remix)", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_no_year_intl.snap b/tests/snapshots/youtube__music_album_no_year_intl.snap index 2ff6a5f..49ecdbb 100644 --- a/tests/snapshots/youtube__music_album_no_year_intl.snap +++ b/tests/snapshots/youtube__music_album_no_year_intl.snap @@ -23,7 +23,7 @@ MusicAlbum( ], artist_id: Some("UCAJwa_1l4rHzBJyWbeBtGZw"), description: "[description]", - album_type: Single, + album_type: single, year: None, by_va: false, tracks: [ @@ -52,7 +52,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_one_artist.snap b/tests/snapshots/youtube__music_album_one_artist.snap index a417bc4..20e8a9a 100644 --- a/tests/snapshots/youtube__music_album_one_artist.snap +++ b/tests/snapshots/youtube__music_album_one_artist.snap @@ -33,7 +33,7 @@ MusicAlbum( text: ")", ), ])), - album_type: Album, + album_type: album, year: Some(2011), by_va: false, tracks: [ @@ -62,7 +62,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -87,7 +87,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -112,7 +112,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -137,7 +137,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -158,7 +158,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -179,7 +179,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), @@ -200,7 +200,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(7), by_va: false, ), @@ -221,7 +221,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(8), by_va: false, ), @@ -242,7 +242,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(9), by_va: false, ), @@ -263,7 +263,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(10), by_va: false, ), @@ -284,7 +284,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(11), by_va: false, ), @@ -305,7 +305,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(12), by_va: false, ), @@ -326,7 +326,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(13), by_va: false, ), @@ -347,7 +347,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(14), by_va: false, ), @@ -368,7 +368,7 @@ MusicAlbum( name: "Unbroken", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(15), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_one_artist_intl.snap b/tests/snapshots/youtube__music_album_one_artist_intl.snap index d67935f..8f4496e 100644 --- a/tests/snapshots/youtube__music_album_one_artist_intl.snap +++ b/tests/snapshots/youtube__music_album_one_artist_intl.snap @@ -15,7 +15,7 @@ MusicAlbum( ], artist_id: Some("UCwem2sj-QUJCiWiPAo9JuAw"), description: "[description]", - album_type: Album, + album_type: album, year: Some(2011), by_va: false, tracks: [ @@ -44,7 +44,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -69,7 +69,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -94,7 +94,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -119,7 +119,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -140,7 +140,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -161,7 +161,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), @@ -182,7 +182,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(7), by_va: false, ), @@ -203,7 +203,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(8), by_va: false, ), @@ -224,7 +224,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(9), by_va: false, ), @@ -245,7 +245,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(10), by_va: false, ), @@ -266,7 +266,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(11), by_va: false, ), @@ -287,7 +287,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(12), by_va: false, ), @@ -308,7 +308,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(13), by_va: false, ), @@ -329,7 +329,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(14), by_va: false, ), @@ -350,7 +350,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(15), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_show.snap b/tests/snapshots/youtube__music_album_show.snap index 570534a..b91af31 100644 --- a/tests/snapshots/youtube__music_album_show.snap +++ b/tests/snapshots/youtube__music_album_show.snap @@ -19,7 +19,7 @@ MusicAlbum( ], artist_id: Some("UCAotr_lJ3JJ79DPRlA7k47w"), description: None, - album_type: Show, + album_type: show, year: Some(2015), by_va: false, tracks: [ @@ -44,7 +44,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -69,7 +69,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -94,7 +94,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -119,7 +119,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -144,7 +144,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -169,7 +169,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), @@ -194,7 +194,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(7), by_va: false, ), @@ -219,7 +219,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(8), by_va: false, ), @@ -244,7 +244,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(9), by_va: false, ), @@ -269,7 +269,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(10), by_va: false, ), @@ -294,7 +294,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(11), by_va: false, ), @@ -319,7 +319,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(12), by_va: false, ), @@ -344,7 +344,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(13), by_va: false, ), @@ -369,7 +369,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(14), by_va: false, ), @@ -394,7 +394,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(15), by_va: false, ), @@ -419,7 +419,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(16), by_va: false, ), @@ -444,7 +444,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(17), by_va: false, ), @@ -469,7 +469,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(18), by_va: false, ), @@ -494,7 +494,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(19), by_va: false, ), @@ -519,7 +519,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(20), by_va: false, ), @@ -544,7 +544,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(21), by_va: false, ), @@ -569,7 +569,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(22), by_va: false, ), @@ -594,7 +594,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(23), by_va: false, ), @@ -619,7 +619,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(24), by_va: false, ), @@ -644,7 +644,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(25), by_va: false, ), @@ -669,7 +669,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(26), by_va: false, ), @@ -694,7 +694,7 @@ MusicAlbum( name: "Die Abenteuer des Odysseus. Hörspiel", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(27), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_show_intl.snap b/tests/snapshots/youtube__music_album_show_intl.snap index 219157c..9b614a8 100644 --- a/tests/snapshots/youtube__music_album_show_intl.snap +++ b/tests/snapshots/youtube__music_album_show_intl.snap @@ -19,7 +19,7 @@ MusicAlbum( ], artist_id: Some("UCAotr_lJ3JJ79DPRlA7k47w"), description: "[description]", - album_type: Show, + album_type: show, year: Some(2015), by_va: false, tracks: [ @@ -44,7 +44,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -69,7 +69,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -94,7 +94,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -119,7 +119,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -144,7 +144,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -169,7 +169,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), @@ -194,7 +194,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(7), by_va: false, ), @@ -219,7 +219,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(8), by_va: false, ), @@ -244,7 +244,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(9), by_va: false, ), @@ -269,7 +269,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(10), by_va: false, ), @@ -294,7 +294,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(11), by_va: false, ), @@ -319,7 +319,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(12), by_va: false, ), @@ -344,7 +344,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(13), by_va: false, ), @@ -369,7 +369,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(14), by_va: false, ), @@ -394,7 +394,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(15), by_va: false, ), @@ -419,7 +419,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(16), by_va: false, ), @@ -444,7 +444,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(17), by_va: false, ), @@ -469,7 +469,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(18), by_va: false, ), @@ -494,7 +494,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(19), by_va: false, ), @@ -519,7 +519,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(20), by_va: false, ), @@ -544,7 +544,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(21), by_va: false, ), @@ -569,7 +569,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(22), by_va: false, ), @@ -594,7 +594,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(23), by_va: false, ), @@ -619,7 +619,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(24), by_va: false, ), @@ -644,7 +644,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(25), by_va: false, ), @@ -669,7 +669,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(26), by_va: false, ), @@ -694,7 +694,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(27), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_single.snap b/tests/snapshots/youtube__music_album_single.snap index 7b557d0..e650e4c 100644 --- a/tests/snapshots/youtube__music_album_single.snap +++ b/tests/snapshots/youtube__music_album_single.snap @@ -19,7 +19,7 @@ MusicAlbum( ], artist_id: Some("UCXGYZ-OhdOpPBamHX3K9YRg"), description: None, - album_type: Single, + album_type: single, year: Some(2020), by_va: false, tracks: [ @@ -44,7 +44,7 @@ MusicAlbum( name: "Der Himmel reißt auf", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_single_intl.snap b/tests/snapshots/youtube__music_album_single_intl.snap index c831216..1fe519e 100644 --- a/tests/snapshots/youtube__music_album_single_intl.snap +++ b/tests/snapshots/youtube__music_album_single_intl.snap @@ -19,7 +19,7 @@ MusicAlbum( ], artist_id: Some("UCXGYZ-OhdOpPBamHX3K9YRg"), description: "[description]", - album_type: Single, + album_type: single, year: Some(2020), by_va: false, tracks: [ @@ -44,7 +44,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_unavailable.snap b/tests/snapshots/youtube__music_album_unavailable.snap index 1ae3a45..607c137 100644 --- a/tests/snapshots/youtube__music_album_unavailable.snap +++ b/tests/snapshots/youtube__music_album_unavailable.snap @@ -23,7 +23,7 @@ MusicAlbum( ], artist_id: Some("UCCj0RlDqqahEB5BXVtDcPqg"), description: None, - album_type: Album, + album_type: album, year: Some(2019), by_va: false, tracks: [ @@ -44,7 +44,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -65,7 +65,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -86,7 +86,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -107,7 +107,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -128,7 +128,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), @@ -149,7 +149,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(7), by_va: false, ), @@ -170,7 +170,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(8), by_va: false, ), @@ -191,7 +191,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(9), by_va: false, ), @@ -212,7 +212,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(11), by_va: false, ), @@ -233,7 +233,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(12), by_va: false, ), @@ -254,7 +254,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(13), by_va: false, ), @@ -275,7 +275,7 @@ MusicAlbum( name: "13 Reasons Why (Season 3)", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(18), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_unavailable_intl.snap b/tests/snapshots/youtube__music_album_unavailable_intl.snap index b41f826..d90ba57 100644 --- a/tests/snapshots/youtube__music_album_unavailable_intl.snap +++ b/tests/snapshots/youtube__music_album_unavailable_intl.snap @@ -23,7 +23,7 @@ MusicAlbum( ], artist_id: Some("UCCj0RlDqqahEB5BXVtDcPqg"), description: "[description]", - album_type: Album, + album_type: album, year: Some(2019), by_va: false, tracks: [ @@ -44,7 +44,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -65,7 +65,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -86,7 +86,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -107,7 +107,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -128,7 +128,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), @@ -149,7 +149,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(7), by_va: false, ), @@ -170,7 +170,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(8), by_va: false, ), @@ -191,7 +191,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(9), by_va: false, ), @@ -212,7 +212,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(11), by_va: false, ), @@ -233,7 +233,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(12), by_va: false, ), @@ -254,7 +254,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(13), by_va: false, ), @@ -275,7 +275,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(18), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_various_artists.snap b/tests/snapshots/youtube__music_album_various_artists.snap index 75ffe38..f3ab8f0 100644 --- a/tests/snapshots/youtube__music_album_various_artists.snap +++ b/tests/snapshots/youtube__music_album_various_artists.snap @@ -10,7 +10,7 @@ MusicAlbum( artists: [], artist_id: None, description: None, - album_type: Single, + album_type: single, year: Some(2022), by_va: true, tracks: [ @@ -31,7 +31,7 @@ MusicAlbum( name: "<Queendom2> FINAL", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -52,7 +52,7 @@ MusicAlbum( name: "<Queendom2> FINAL", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -73,7 +73,7 @@ MusicAlbum( name: "<Queendom2> FINAL", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -94,7 +94,7 @@ MusicAlbum( name: "<Queendom2> FINAL", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -115,7 +115,7 @@ MusicAlbum( name: "<Queendom2> FINAL", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -136,7 +136,7 @@ MusicAlbum( name: "<Queendom2> FINAL", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), diff --git a/tests/snapshots/youtube__music_album_various_artists_intl.snap b/tests/snapshots/youtube__music_album_various_artists_intl.snap index 6215266..5209d65 100644 --- a/tests/snapshots/youtube__music_album_various_artists_intl.snap +++ b/tests/snapshots/youtube__music_album_various_artists_intl.snap @@ -10,7 +10,7 @@ MusicAlbum( artists: [], artist_id: None, description: "[description]", - album_type: Single, + album_type: single, year: Some(2022), by_va: true, tracks: [ @@ -31,7 +31,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(1), by_va: false, ), @@ -52,7 +52,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(2), by_va: false, ), @@ -73,7 +73,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(3), by_va: false, ), @@ -94,7 +94,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(4), by_va: false, ), @@ -115,7 +115,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(5), by_va: false, ), @@ -136,7 +136,7 @@ MusicAlbum( name: "[name]", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: Some(6), by_va: false, ), diff --git a/tests/snapshots/youtube__music_artist_basic.snap b/tests/snapshots/youtube__music_artist_basic.snap index c88198a..c4f3f75 100644 --- a/tests/snapshots/youtube__music_artist_basic.snap +++ b/tests/snapshots/youtube__music_artist_basic.snap @@ -22,7 +22,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2010), by_va: false, ), @@ -37,7 +37,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2014), by_va: false, ), @@ -52,7 +52,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Ep, + album_type: ep, year: Some(2008), by_va: false, ), @@ -67,7 +67,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -82,7 +82,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2018), by_va: false, ), @@ -97,7 +97,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2012), by_va: false, ), @@ -112,7 +112,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -127,7 +127,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2006), by_va: false, ), @@ -142,7 +142,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2016), by_va: false, ), @@ -157,7 +157,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -172,7 +172,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -187,7 +187,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2008), by_va: false, ), @@ -202,7 +202,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -217,7 +217,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2006), by_va: false, ), @@ -232,7 +232,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2015), by_va: false, ), @@ -247,7 +247,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Ep, + album_type: ep, year: Some(2015), by_va: false, ), @@ -262,7 +262,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -277,7 +277,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Ep, + album_type: ep, year: Some(2010), by_va: false, ), @@ -292,7 +292,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -307,7 +307,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2008), by_va: false, ), diff --git a/tests/snapshots/youtube__music_artist_basic_all.snap b/tests/snapshots/youtube__music_artist_basic_all.snap index e03c7a1..2fd25a1 100644 --- a/tests/snapshots/youtube__music_artist_basic_all.snap +++ b/tests/snapshots/youtube__music_artist_basic_all.snap @@ -22,7 +22,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -37,7 +37,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2003), by_va: false, ), @@ -52,7 +52,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2009), by_va: false, ), @@ -67,7 +67,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2007), by_va: false, ), @@ -82,7 +82,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2001), by_va: false, ), @@ -97,7 +97,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2012), by_va: false, ), @@ -112,7 +112,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2016), by_va: false, ), @@ -127,7 +127,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Single, + album_type: single, year: Some(2020), by_va: false, ), @@ -142,7 +142,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Ep, + album_type: ep, year: Some(2015), by_va: false, ), @@ -157,7 +157,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2017), by_va: false, ), @@ -172,7 +172,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2014), by_va: false, ), @@ -187,7 +187,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2021), by_va: false, ), @@ -202,7 +202,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Ep, + album_type: ep, year: Some(2000), by_va: false, ), @@ -217,7 +217,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2005), by_va: false, ), diff --git a/tests/snapshots/youtube__music_artist_basic_all_intl.snap b/tests/snapshots/youtube__music_artist_basic_all_intl.snap index 4a7ad20..6e08687 100644 --- a/tests/snapshots/youtube__music_artist_basic_all_intl.snap +++ b/tests/snapshots/youtube__music_artist_basic_all_intl.snap @@ -22,7 +22,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -37,7 +37,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2003), by_va: false, ), @@ -52,7 +52,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2009), by_va: false, ), @@ -67,7 +67,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2007), by_va: false, ), @@ -82,7 +82,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2001), by_va: false, ), @@ -97,7 +97,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2012), by_va: false, ), @@ -112,7 +112,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2016), by_va: false, ), @@ -127,7 +127,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Single, + album_type: single, year: Some(2020), by_va: false, ), @@ -142,7 +142,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Ep, + album_type: ep, year: Some(2015), by_va: false, ), @@ -157,7 +157,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2017), by_va: false, ), @@ -172,7 +172,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2014), by_va: false, ), @@ -187,7 +187,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2021), by_va: false, ), @@ -202,7 +202,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Ep, + album_type: ep, year: Some(2000), by_va: false, ), @@ -217,7 +217,7 @@ MusicArtist( ), ], artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: Album, + album_type: album, year: Some(2005), by_va: false, ), diff --git a/tests/snapshots/youtube__music_artist_basic_intl.snap b/tests/snapshots/youtube__music_artist_basic_intl.snap index 8a3d210..c00ff93 100644 --- a/tests/snapshots/youtube__music_artist_basic_intl.snap +++ b/tests/snapshots/youtube__music_artist_basic_intl.snap @@ -22,7 +22,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2010), by_va: false, ), @@ -37,7 +37,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2014), by_va: false, ), @@ -52,7 +52,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Ep, + album_type: ep, year: Some(2008), by_va: false, ), @@ -67,7 +67,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -82,7 +82,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2018), by_va: false, ), @@ -97,7 +97,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2012), by_va: false, ), @@ -112,7 +112,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -127,7 +127,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2006), by_va: false, ), @@ -142,7 +142,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2016), by_va: false, ), @@ -157,7 +157,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -172,7 +172,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -187,7 +187,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2008), by_va: false, ), @@ -202,7 +202,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2021), by_va: false, ), @@ -217,7 +217,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2006), by_va: false, ), @@ -232,7 +232,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2015), by_va: false, ), @@ -247,7 +247,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Ep, + album_type: ep, year: Some(2015), by_va: false, ), @@ -262,7 +262,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -277,7 +277,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Ep, + album_type: ep, year: Some(2010), by_va: false, ), @@ -292,7 +292,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -307,7 +307,7 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, + album_type: album, year: Some(2008), by_va: false, ), diff --git a/tests/snapshots/youtube__music_artist_no_more_albums.snap b/tests/snapshots/youtube__music_artist_no_more_albums.snap index e9b1902..c73304d 100644 --- a/tests/snapshots/youtube__music_artist_no_more_albums.snap +++ b/tests/snapshots/youtube__music_artist_no_more_albums.snap @@ -22,7 +22,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -37,7 +37,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -52,7 +52,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Ep, + album_type: ep, year: Some(2014), by_va: false, ), @@ -67,7 +67,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -82,7 +82,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Album, + album_type: album, year: Some(2017), by_va: false, ), @@ -97,7 +97,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Album, + album_type: album, year: Some(2014), by_va: false, ), @@ -112,7 +112,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -127,7 +127,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -142,7 +142,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -157,7 +157,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2024), by_va: false, ), diff --git a/tests/snapshots/youtube__music_artist_no_more_albums_intl.snap b/tests/snapshots/youtube__music_artist_no_more_albums_intl.snap index 5b0fb81..ddd35a7 100644 --- a/tests/snapshots/youtube__music_artist_no_more_albums_intl.snap +++ b/tests/snapshots/youtube__music_artist_no_more_albums_intl.snap @@ -22,7 +22,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -37,7 +37,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -52,7 +52,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Ep, + album_type: ep, year: Some(2014), by_va: false, ), @@ -67,7 +67,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -82,7 +82,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Album, + album_type: album, year: Some(2017), by_va: false, ), @@ -97,7 +97,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Album, + album_type: album, year: Some(2014), by_va: false, ), @@ -112,7 +112,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2017), by_va: false, ), @@ -127,7 +127,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -142,7 +142,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2014), by_va: false, ), @@ -157,7 +157,7 @@ MusicArtist( ), ], artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), - album_type: Single, + album_type: single, year: Some(2024), by_va: false, ), diff --git a/tests/snapshots/youtube__music_artist_only_singles.snap b/tests/snapshots/youtube__music_artist_only_singles.snap index 3531789..db6561d 100644 --- a/tests/snapshots/youtube__music_artist_only_singles.snap +++ b/tests/snapshots/youtube__music_artist_only_singles.snap @@ -22,7 +22,7 @@ MusicArtist( ), ], artist_id: Some("UCfwCE5VhPMGxNPFxtVv7lRw"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), diff --git a/tests/snapshots/youtube__music_artist_only_singles_intl.snap b/tests/snapshots/youtube__music_artist_only_singles_intl.snap index a25c44c..a9ae9bf 100644 --- a/tests/snapshots/youtube__music_artist_only_singles_intl.snap +++ b/tests/snapshots/youtube__music_artist_only_singles_intl.snap @@ -22,7 +22,7 @@ MusicArtist( ), ], artist_id: Some("UCfwCE5VhPMGxNPFxtVv7lRw"), - album_type: Single, + album_type: single, year: Some(2019), by_va: false, ), diff --git a/tests/snapshots/youtube__music_details_mv.snap b/tests/snapshots/youtube__music_details_mv.snap index e2af07b..afbd05f 100644 --- a/tests/snapshots/youtube__music_details_mv.snap +++ b/tests/snapshots/youtube__music_details_mv.snap @@ -17,7 +17,7 @@ TrackDetails( artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), album: None, view_count: "[view_count]", - is_video: true, + track_type: video, track_nr: None, by_va: false, ), diff --git a/tests/snapshots/youtube__music_details_track.snap b/tests/snapshots/youtube__music_details_track.snap index 15d9ae8..4d85918 100644 --- a/tests/snapshots/youtube__music_details_track.snap +++ b/tests/snapshots/youtube__music_details_track.snap @@ -24,7 +24,7 @@ TrackDetails( name: "Ein Gutes Schlechtes Vorbild", )), view_count: "[view_count]", - is_video: false, + track_type: track, track_nr: None, by_va: false, ), diff --git a/tests/snapshots/youtube__music_details_track_details.snap b/tests/snapshots/youtube__music_details_track_details.snap index f3c8f30..e91052f 100644 --- a/tests/snapshots/youtube__music_details_track_details.snap +++ b/tests/snapshots/youtube__music_details_track_details.snap @@ -17,7 +17,7 @@ TrackDetails( artist_id: Some("UCk2E0dbAyEJWnrN2bbQOcbg"), album: None, view_count: "[view_count]", - is_video: true, + track_type: video, track_nr: None, by_va: false, ), diff --git a/tests/youtube.rs b/tests/youtube.rs index a5e9cfd..5bd4024 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -5,6 +5,7 @@ use std::fmt::Display; use std::str::FromStr; use rstest::{fixture, rstest}; +use rustypipe::model::TrackType; use rustypipe::param::{AlbumOrder, LANGUAGES}; use time::{macros::date, OffsetDateTime}; @@ -1673,7 +1674,7 @@ async fn music_artist( artist.tracks.iter().for_each(|t| { assert!(!t.cover.is_empty()); - if t.is_video { + if t.track_type.is_video() { assert!(t.view_count.is_some()); } else { assert!(t.album.is_some()); @@ -1859,7 +1860,7 @@ async fn music_search_main(#[case] typo: bool, rp: RustyPipe, unlocalized: bool) assert_eq!(track_album.id, "MPREb_RXHxrUFfrvQ"); assert_eq!(track_album.name, "Lieblingsmensch"); - assert!(!track.is_video, "got mv"); + assert_eq!(track.track_type, TrackType::Track); assert_eq!(track.track_nr, None); } @@ -1907,9 +1908,9 @@ fn check_search_result(items: &[MusicItem]) { for itm in items { match itm { MusicItem::Track(t) => { - if t.is_video { + if t.track_type == TrackType::Video { has_videos = true - } else { + } else if t.track_type == TrackType::Track { has_tracks = true } } @@ -1944,7 +1945,7 @@ async fn music_search_tracks(rp: RustyPipe, unlocalized: bool) { assert_eq!(track.name, "Black Mamba"); assert!(!track.cover.is_empty(), "got no cover"); - assert!(!track.is_video); + assert_eq!(track.track_type, TrackType::Track); assert_eq!(track.track_nr, None); assert_eq!(track.artists.len(), 1); @@ -1979,7 +1980,7 @@ async fn music_search_videos(rp: RustyPipe, unlocalized: bool) { assert_eq!(track.name, "Black Mamba"); assert!(!track.cover.is_empty(), "got no cover"); - assert!(track.is_video); + assert_eq!(track.track_type, TrackType::Video); assert_eq!(track.track_nr, None); assert_eq!(track.artists.len(), 1); @@ -2035,7 +2036,7 @@ async fn music_search_episode(rp: RustyPipe) { assert_eq!(track_artist.id.as_deref(), None); assert_eq!(track.artist_id.as_deref(), None); assert!(!track.cover.is_empty(), "got no cover"); - assert!(track.is_video); + assert_eq!(track.track_type, TrackType::Episode); } #[rstest] @@ -2360,7 +2361,7 @@ async fn music_related(#[case] id: &str, #[case] full: bool, rp: RustyPipe) { track_artists += 1; } - if track.is_video { + if track.track_type.is_video() { assert!(track.album.is_none()); assert_gteo(track.view_count, 10_000, "views") } else { @@ -2578,7 +2579,7 @@ async fn music_new_videos(rp: RustyPipe) { // Podcast episode: shows duration instead of view count assert!(video.duration.is_some(), "no view count or duration"); } - assert!(video.is_video); + assert!(video.track_type.is_video()); } } From 0919cbd0dfe28ea00610c67a694e5f319e80635f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 9 Nov 2024 03:00:04 +0100 Subject: [PATCH 022/191] fix: fetch unlocalized player data to interpret errors correctly; regression introduced with v0.6.0 --- src/client/channel.rs | 10 ++++++++-- src/client/mod.rs | 9 ++++++--- src/client/music_artist.rs | 4 ++-- src/client/pagination.rs | 6 +++--- src/client/player.rs | 5 +++-- 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/client/channel.rs b/src/client/channel.rs index 9584697..58cdf85 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -16,7 +16,9 @@ use crate::{ util::{self, timeago, ProtoBuilder}, }; -use super::{response, ClientType, MapRespCtx, MapResponse, QContinuation, RustyPipeQuery}; +use super::{ + response, ClientType, MapRespCtx, MapRespOptions, MapResponse, QContinuation, RustyPipeQuery, +}; #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] @@ -178,12 +180,16 @@ impl RustyPipeQuery { continuation: &channel_info_ctoken(channel_id, &random_target()), }; - self.execute_request::( + self.execute_request_ctx::( ClientType::Desktop, "channel_info", channel_id, "browse", &request_body, + MapRespOptions { + unlocalized: true, + ..Default::default() + }, ) .await } diff --git a/src/client/mod.rs b/src/client/mod.rs index a2410cc..f1b49b3 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1820,7 +1820,7 @@ impl RustyPipeQuery { id: &str, endpoint: &str, body: &B, - ctx_src: MapRespCtxSource<'_>, + ctx_src: MapRespOptions<'_>, ) -> Result { tracing::debug!("getting {}({})", operation, id); @@ -1946,7 +1946,7 @@ impl RustyPipeQuery { id, endpoint, body, - MapRespCtxSource::default(), + MapRespOptions::default(), ) .await } @@ -1989,6 +1989,7 @@ impl AsRef for RustyPipeQuery { } } +/// Additional data needed for mapping YouTube responses struct MapRespCtx<'a> { id: &'a str, lang: Language, @@ -1998,8 +1999,10 @@ struct MapRespCtx<'a> { artist: Option, } +/// Options to give to the mapper when making requests; +/// used to construct the [`MapRespCtx`] #[derive(Default)] -struct MapRespCtxSource<'a> { +struct MapRespOptions<'a> { visitor_data: Option<&'a str>, deobf: Option<&'a DeobfData>, artist: Option, diff --git a/src/client/music_artist.rs b/src/client/music_artist.rs index 35728c1..99e86ce 100644 --- a/src/client/music_artist.rs +++ b/src/client/music_artist.rs @@ -5,7 +5,7 @@ use regex::Regex; use tracing::debug; use crate::{ - client::{response::url_endpoint::NavigationEndpoint, MapRespCtxSource, QContinuation}, + client::{response::url_endpoint::NavigationEndpoint, MapRespOptions, QContinuation}, error::{Error, ExtractionError}, model::{ paginator::Paginator, traits::FromYtItem, AlbumItem, ArtistId, MusicArtist, MusicItem, @@ -109,7 +109,7 @@ impl RustyPipeQuery { artist_id, "browse", &request_body, - MapRespCtxSource { + MapRespOptions { artist: Some(first_page.artist.clone()), visitor_data: first_page.visitor_data.as_deref(), ..Default::default() diff --git a/src/client/pagination.rs b/src/client/pagination.rs index f656bab..4a3c166 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -10,7 +10,7 @@ use crate::serializer::MapResult; use super::response::music_item::{map_queue_item, MusicListMapper, PlaylistPanelVideo}; use super::{ - response, ClientType, MapRespCtx, MapRespCtxSource, MapResponse, QContinuation, RustyPipeQuery, + response, ClientType, MapRespCtx, MapRespOptions, MapResponse, QContinuation, RustyPipeQuery, }; impl RustyPipeQuery { @@ -35,7 +35,7 @@ impl RustyPipeQuery { ctoken, endpoint.as_str(), &request_body, - MapRespCtxSource { + MapRespOptions { visitor_data, ..Default::default() }, @@ -55,7 +55,7 @@ impl RustyPipeQuery { ctoken, endpoint.as_str(), &request_body, - MapRespCtxSource { + MapRespOptions { visitor_data, ..Default::default() }, diff --git a/src/client/player.rs b/src/client/player.rs index e4961aa..9d9ee5e 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -24,7 +24,7 @@ use super::{ self, player::{self, Format}, }, - ClientType, MapRespCtx, MapRespCtxSource, MapResponse, MapResult, RustyPipeQuery, + ClientType, MapRespCtx, MapRespOptions, MapResponse, MapResult, RustyPipeQuery, DEFAULT_PLAYER_CLIENT_ORDER, }; @@ -159,8 +159,9 @@ impl RustyPipeQuery { video_id, "player", &request_body, - MapRespCtxSource { + MapRespOptions { deobf: Some(&deobf), + unlocalized: true, ..Default::default() }, ) From 342119dba6f3dc2152eef1fc9841264a9e56b9f0 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 9 Nov 2024 05:11:41 +0100 Subject: [PATCH 023/191] fix: A/B test 17: channel playlists lockupViewModel --- codegen/src/abtest.rs | 39 +- notes/AB_Tests.md | 70 + src/client/channel.rs | 8 +- src/client/response/mod.rs | 51 +- src/client/response/music_details.rs | 4 +- src/client/response/playlist.rs | 24 +- src/client/response/url_endpoint.rs | 6 + src/client/response/video_item.rs | 81 +- ...map_channel_playlists_20241109_lockup.snap | 672 ++ ...l__tests__map_channel_playlists_base.snap} | 0 src/serializer/text.rs | 10 +- .../channel_playlists_20241109_lockup.json | 7854 +++++++++++++++++ ...lists.json => channel_playlists_base.json} | 0 13 files changed, 8770 insertions(+), 49 deletions(-) create mode 100644 src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_20241109_lockup.snap rename src/client/snapshots/{rustypipe__client__channel__tests__map_channel_playlists.snap => rustypipe__client__channel__tests__map_channel_playlists_base.snap} (100%) create mode 100644 testfiles/channel/channel_playlists_20241109_lockup.json rename testfiles/channel/{channel_playlists.json => channel_playlists_base.json} (100%) diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index 153a080..ceb99f3 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -36,6 +36,7 @@ pub enum ABTest { CommentsFrameworkUpdate = 14, ChannelShortsLockup = 15, PlaylistPageHeader = 16, + ChannelPlaylistsLockup = 17, } /// List of active A/B tests that are run when none is manually specified @@ -112,6 +113,7 @@ pub async fn run_test( ABTest::CommentsFrameworkUpdate => comments_framework_update(&query).await, ABTest::ChannelShortsLockup => channel_shorts_lockup(&query).await, ABTest::PlaylistPageHeader => playlist_page_header_renderer(&query).await, + ABTest::ChannelPlaylistsLockup => channel_playlists_lockup(&query).await, } .unwrap(); pb.inc(1); @@ -156,7 +158,7 @@ pub async fn attributed_text_description(rp: &RustyPipeQuery) -> Result { content_check_ok: false, racy_check_ok: false, }; - let response_txt = rp.raw(ClientType::Desktop, "next", &q).await.unwrap(); + let response_txt = rp.raw(ClientType::Desktop, "next", &q).await?; if !response_txt.contains("\"Black Mamba\"") { bail!("invalid response data"); @@ -166,7 +168,7 @@ pub async fn attributed_text_description(rp: &RustyPipeQuery) -> Result { } pub async fn three_tab_channel_layout(rp: &RustyPipeQuery) -> Result { - let channel = rp.channel_videos("UCR-DXc1voovS8nhAvccRZhg").await.unwrap(); + let channel = rp.channel_videos("UCR-DXc1voovS8nhAvccRZhg").await?; Ok(channel.has_live || channel.has_shorts) } @@ -233,8 +235,7 @@ pub async fn discography_page(rp: &RustyPipeQuery) -> Result { params: None, }, ) - .await - .unwrap(); + .await?; Ok(res.contains(&format!("\"MPAD{id}\""))) } @@ -296,8 +297,7 @@ pub async fn channel_about_modal(rp: &RustyPipeQuery) -> Result { params: None, }, ) - .await - .unwrap(); + .await?; Ok(!res.contains("\"EgVhYm91dPIGBAoCEgA%3D\"")) } @@ -334,8 +334,7 @@ pub async fn music_playlist_two_column(rp: &RustyPipeQuery) -> Result { params: None, }, ) - .await - .unwrap(); + .await?; Ok(res.contains("\"musicResponsiveHeaderRenderer\"")) } @@ -344,8 +343,7 @@ pub async fn comments_framework_update(rp: &RustyPipeQuery) -> Result { "Eg0SC3dMZHBSN2d1S3k4GAYyJSIRIgt3TGRwUjdndUt5ODAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"; let res = rp .raw(ClientType::Desktop, "next", &QCont { continuation }) - .await - .unwrap(); + .await?; Ok(res.contains("\"frameworkUpdates\"")) } @@ -360,8 +358,7 @@ pub async fn channel_shorts_lockup(rp: &RustyPipeQuery) -> Result { params: Some("EgZzaG9ydHPyBgUKA5oBAA%3D%3D"), }, ) - .await - .unwrap(); + .await?; Ok(res.contains("\"shortsLockupViewModel\"")) } @@ -376,7 +373,21 @@ pub async fn playlist_page_header_renderer(rp: &RustyPipeQuery) -> Result params: None, }, ) - .await - .unwrap(); + .await?; Ok(res.contains("\"pageHeaderRenderer\"")) } + +pub async fn channel_playlists_lockup(rp: &RustyPipeQuery) -> Result { + let id = "UC2DjFE7Xf11URZqWBigcVOQ"; + let res = rp + .raw( + ClientType::Desktop, + "browse", + &QBrowse { + browse_id: id, + params: Some("EglwbGF5bGlzdHMgAQ%3D%3D"), + }, + ) + .await?; + Ok(res.contains("\"lockupViewModel\"")) +} diff --git a/notes/AB_Tests.md b/notes/AB_Tests.md index 800048f..d754912 100644 --- a/notes/AB_Tests.md +++ b/notes/AB_Tests.md @@ -899,3 +899,73 @@ YouTube changed the data model for the channel shorts tab } } ``` + +## [17] Channel playlists: lockupViewModel + +- **Encountered on:** 09.11.2024 +- **Impact:** 🟢 Low +- **Endpoint:** browse +- **Status:** Common (50%) + +YouTube changed the data model for the channel playlists / podcasts / albums tab + +```json +{ + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/XYdmX8w8xwI/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCqmf6TGfDinNXhgU29ZxOkv2u9sQ", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "5 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2370867, + "darkTheme": 2370867 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + } + ] + } + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Jellybean Components Series" + } + } + }, + "contentId": "PLvOlSehNtuHv268f0mW5m1t_hq_RVGRSA", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST" + } +} +``` diff --git a/src/client/channel.rs b/src/client/channel.rs index 58cdf85..e2b75b2 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -776,8 +776,10 @@ mod tests { } #[rstest] - fn map_channel_playlists() { - let json_path = path!(*TESTFILES / "channel" / "channel_playlists.json"); + #[case::base("base")] + #[case::lockup("20241109_lockup")] + fn map_channel_playlists(#[case] name: &str) { + let json_path = path!(*TESTFILES / "channel" / format!("channel_playlists_{name}.json")); let json_file = File::open(json_path).unwrap(); let channel: response::Channel = @@ -791,7 +793,7 @@ mod tests { "deserialization/mapping warnings: {:?}", map_res.warnings ); - insta::assert_ron_snapshot!("map_channel_playlists", map_res.c); + insta::assert_ron_snapshot!(format!("map_channel_playlists_{name}"), map_res.c); } #[rstest] diff --git a/src/client/response/mod.rs b/src/client/response/mod.rs index cf946e6..f1db4b9 100644 --- a/src/client/response/mod.rs +++ b/src/client/response/mod.rs @@ -188,13 +188,13 @@ pub(crate) enum ChannelBadgeStyle { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct Alert { - pub alert_renderer: AlertRenderer, + pub alert_renderer: TextBox, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub(crate) struct AlertRenderer { +pub(crate) struct TextBox { #[serde_as(as = "Text")] pub text: String, } @@ -523,3 +523,50 @@ pub(crate) struct AvatarStackViewModel { #[serde_as(deserialize_as = "AttributedText")] pub text: TextComponent, } + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ContentImage { + pub collection_thumbnail_view_model: CollectionThumbnailViewModel, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct CollectionThumbnailViewModel { + pub primary_thumbnail: ThumbnailViewModelWrap, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ThumbnailViewModelWrap { + pub thumbnail_view_model: ImageViewOl, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ImageViewOl { + pub image: Thumbnails, + #[serde_as(as = "VecSkipError<_>")] + pub overlays: Vec, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ImageViewOverlay { + pub thumbnail_overlay_badge_view_model: ThumbnailOverlayBadgeViewModel, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ThumbnailOverlayBadgeViewModel { + #[serde_as(as = "VecSkipError<_>")] + pub thumbnail_badges: Vec, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ThumbnailBadges { + pub thumbnail_badge_view_model: TextBox, +} diff --git a/src/client/response/music_details.rs b/src/client/response/music_details.rs index 4254b00..a27c8c3 100644 --- a/src/client/response/music_details.rs +++ b/src/client/response/music_details.rs @@ -3,8 +3,8 @@ use serde_with::{serde_as, DefaultOnError, VecSkipError}; use crate::serializer::text::Text; -use super::AlertRenderer; use super::ContentsRenderer; +use super::TextBox; use super::{ music_item::{ItemSection, PlaylistPanelRenderer}, ContentRenderer, @@ -115,7 +115,7 @@ pub(crate) struct MusicLyrics { #[serde(rename_all = "camelCase")] pub(crate) enum ListOrMessage { SectionListRenderer(ContentsRenderer), - MessageRenderer(AlertRenderer), + MessageRenderer(TextBox), } #[derive(Debug, Deserialize)] diff --git a/src/client/response/playlist.rs b/src/client/response/playlist.rs index 619932e..24eae36 100644 --- a/src/client/response/playlist.rs +++ b/src/client/response/playlist.rs @@ -4,9 +4,9 @@ use serde_with::{serde_as, DefaultOnError, VecSkipError}; use crate::serializer::text::{AttributedText, Text, TextComponent, TextComponents}; use super::{ - url_endpoint::NavigationEndpoint, video_item::YouTubeListRenderer, Alert, ContentRenderer, - ContentsRenderer, ImageView, PageHeaderRendererContent, PhMetadataView, ResponseContext, - SectionList, Tab, ThumbnailsWrap, TwoColumnBrowseResults, + url_endpoint::OnTap, video_item::YouTubeListRenderer, Alert, ContentRenderer, ContentsRenderer, + ImageView, PageHeaderRendererContent, PhMetadataView, ResponseContext, SectionList, Tab, + TextBox, ThumbnailsWrap, TwoColumnBrowseResults, }; #[serde_as] @@ -70,15 +70,7 @@ pub(crate) struct PlaylistHeaderBanner { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct Byline { - pub playlist_byline_renderer: BylineRenderer, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct BylineRenderer { - #[serde_as(as = "Text")] - pub text: String, + pub playlist_byline_renderer: TextBox, } #[derive(Debug, Deserialize)] @@ -187,11 +179,5 @@ pub(crate) struct ButtonAction { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct ButtonViewModel { - pub on_tap: ActionOnTap, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct ActionOnTap { - pub innertube_command: NavigationEndpoint, + pub on_tap: OnTap, } diff --git a/src/client/response/url_endpoint.rs b/src/client/response/url_endpoint.rs index 147dd31..46e247a 100644 --- a/src/client/response/url_endpoint.rs +++ b/src/client/response/url_endpoint.rs @@ -157,6 +157,12 @@ pub(crate) struct WatchEndpointConfig { pub music_video_type: MusicVideoType, } +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct OnTap { + pub innertube_command: NavigationEndpoint, +} + #[derive(Default, Debug, Clone, Copy, Deserialize, PartialEq, Eq)] pub(crate) enum MusicVideoType { #[default] diff --git a/src/client/response/video_item.rs b/src/client/response/video_item.rs index b358be2..0574812 100644 --- a/src/client/response/video_item.rs +++ b/src/client/response/video_item.rs @@ -4,7 +4,7 @@ use serde_with::{ }; use time::OffsetDateTime; -use super::{ChannelBadge, ContinuationEndpoint, Thumbnails}; +use super::{ChannelBadge, ContentImage, ContinuationEndpoint, Thumbnails}; use crate::{ model::{ Channel, ChannelId, ChannelItem, ChannelTag, PlaylistItem, Verification, VideoItem, @@ -33,6 +33,8 @@ pub(crate) enum YouTubeListItem { ChannelRenderer(ChannelRenderer), + LockupViewModel(LockupViewModel), + /// Continauation items are located at the end of a list /// and contain the continuation token for progressive loading #[serde(rename_all = "camelCase")] @@ -165,6 +167,41 @@ pub(crate) struct ShortsOverlayMetadata { pub secondary_text: Option, } +/// Generalized list item, currently only used for playlists +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct LockupViewModel { + pub content_image: ContentImage, + pub metadata: LockupViewModelMetadata, + pub content_id: String, + #[serde(default)] + #[serde_as(deserialize_as = "DefaultOnError")] + pub content_type: LockupContentType, +} + +#[derive(Default, Debug, Deserialize)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +pub(crate) enum LockupContentType { + LockupContentTypePlaylist, + #[default] + Unknown, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct LockupViewModelMetadata { + pub lockup_metadata_view_model: LockupViewModelMetadataInner, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct LockupViewModelMetadataInner { + #[serde_as(as = "AttributedText")] + pub title: String, +} + /// Video displayed in a playlist #[serde_as] #[derive(Debug, Deserialize)] @@ -681,6 +718,38 @@ impl YouTubeListMapper { short_description: channel.description_snippet, } } + + fn map_lockup(&mut self, lockup: LockupViewModel) -> Option { + let md = lockup.metadata.lockup_metadata_view_model; + let tn = lockup + .content_image + .collection_thumbnail_view_model + .primary_thumbnail + .thumbnail_view_model; + match lockup.content_type { + LockupContentType::LockupContentTypePlaylist => Some(PlaylistItem { + id: lockup.content_id, + name: md.title, + thumbnail: tn.image.into(), + channel: self.channel.clone(), + video_count: tn + .overlays + .first() + .and_then(|ol| { + ol.thumbnail_overlay_badge_view_model + .thumbnail_badges + .first() + }) + .and_then(|badge| { + util::parse_numeric_or_warn( + &badge.thumbnail_badge_view_model.text, + &mut self.warnings, + ) + }), + }), + LockupContentType::Unknown => None, + } + } } impl YouTubeListMapper { @@ -711,6 +780,11 @@ impl YouTubeListMapper { let mapped = YouTubeItem::Channel(self.map_channel(channel)); self.items.push(mapped); } + YouTubeListItem::LockupViewModel(lockup) => { + if let Some(mapped) = self.map_lockup(lockup) { + self.items.push(YouTubeItem::Playlist(mapped)); + } + } YouTubeListItem::ContinuationItemRenderer { continuation_endpoint, } => self.ctoken = Some(continuation_endpoint.continuation_command.token), @@ -784,6 +858,11 @@ impl YouTubeListMapper { let mapped = self.map_playlist(playlist); self.items.push(mapped); } + YouTubeListItem::LockupViewModel(lockup) => { + if let Some(mapped) = self.map_lockup(lockup) { + self.items.push(mapped); + } + } YouTubeListItem::ContinuationItemRenderer { continuation_endpoint, } => self.ctoken = Some(continuation_endpoint.continuation_command.token), diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_20241109_lockup.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_20241109_lockup.snap new file mode 100644 index 0000000..54203a7 --- /dev/null +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_20241109_lockup.snap @@ -0,0 +1,672 @@ +--- +source: src/client/channel.rs +expression: map_res.c +--- +Channel( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + handle: Some("@EEVblog"), + subscriber_count: Some(952000), + video_count: Some(2), + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s72-c-k-c0x00ffffff-no-rj", + width: 72, + height: 72, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s120-c-k-c0x00ffffff-no-rj", + width: 120, + height: 120, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s160-c-k-c0x00ffffff-no-rj", + width: 160, + height: 160, + ), + ], + 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", + "engineering", + "maker", + "hacker", + "design", + "circuit", + "hardware", + "pic", + "atmel", + "oscilloscope", + "multimeter", + "diy", + "hobby", + "review", + "teardown", + "microcontroller", + "arduino", + "video", + "blog", + "tutorial", + "how-to", + "interview", + "rant", + "industry", + "news", + "mailbag", + "dumpster diving", + "debunking", + ], + banner: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + width: 1060, + height: 175, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1138-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + width: 1138, + height: 188, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1707-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + width: 1707, + height: 283, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2120-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + width: 2120, + height: 351, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2276-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + width: 2276, + height: 377, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + width: 2560, + height: 424, + ), + ], + has_shorts: true, + has_live: true, + visitor_data: None, + content: Paginator( + count: None, + items: [ + PlaylistItem( + id: "PLvOlSehNtuHv268f0mW5m1t_hq_RVGRSA", + name: "Jellybean Components Series", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/XYdmX8w8xwI/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCqmf6TGfDinNXhgU29ZxOkv2u9sQ", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(5), + ), + PlaylistItem( + id: "PLvOlSehNtuHu46I7nFuUg3LC3PpiWTR4f", + name: "Tandy Electronics / Radio Shack & Computers", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/uUXxY6gA-7g/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAlIVvQ4Axx40Xa_i8F56qmppXEXg", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(11), + ), + PlaylistItem( + id: "PLvOlSehNtuHuS01_RNCnvpzyk7bycYCmM", + name: "Open Source Hardware", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/m_8jh_MpWBE/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBx6U5iikp5rSO78dIWdy1RQ_BLNQ", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(4), + ), + PlaylistItem( + id: "PLvOlSehNtuHuwwQ1fpquOJuA5MSfD4iD6", + name: "Fluke Multimeters", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ymJc5oxthlw/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDAOiw39aJajjAdroLnuj_fh60Ryw", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(22), + ), + PlaylistItem( + id: "PLvOlSehNtuHs2LwEdDwTp3n7mxb-MyBbo", + name: "EEVacademy Digital Design Tutorial Series", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/lJ3q9RHIatU/hqdefault.jpg?sqp=-oaymwExCOADEI4CSFryq4qpAyMIARUAAIhCGAHwAQH4Af4JgALQBYoCDAgAEAEYQyBXKGUwDw==&rs=AOn4CLBaaQaTJzi7H-zjwSsTlNJdBsyqvQ", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(5), + ), + PlaylistItem( + id: "PLvOlSehNtuHu2v8THrRMt8E9ziHtRXPm7", + name: "AI / ChatGPT", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/g5_Ts9SWbYs/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBmZPW6EiAvTCsI86BFg4BxXLj66A", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(3), + ), + PlaylistItem( + id: "PLvOlSehNtuHvXuXRmoBUys09Dwi1heNii", + name: "Shorts", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ndvJtQ8nxV4/hqdefault.jpg?sqp=-oaymwExCOADEI4CSFryq4qpAyMIARUAAIhCGAHwAQH4AbYIgAKAD4oCDAgAEAEYNyBTKH8wDw==&rs=AOn4CLDD0qOLs38KPJtqdG6zCeVLQMf62Q", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(1), + ), + PlaylistItem( + id: "PLvOlSehNtuHv3gxNg5BGoZJJu9htoAGB6", + name: "Microcontrollers", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/L9Wrv7nW-S8/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDiAT5izyig1ntMSUhvSOVuYSsG1Q", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(1), + ), + PlaylistItem( + id: "PLvOlSehNtuHvllTQ-vwvY26E3Bvrov93Y", + name: "Bypass Capacitors", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/1xicZF9glH0/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAFb2FcbpdtAG1xLjmdkdIm1hFvgA", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(4), + ), + PlaylistItem( + id: "PLvOlSehNtuHtOV3AEwhuea4TnviddKfAj", + name: "MacGyver Project", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/4yosozyeIP4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAkwsCiJjFkWhYxtcg5NgfnQbkZrA", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(3), + ), + PlaylistItem( + id: "PLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF", + name: "Calculators", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/S3R4r2xvVYQ/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLB7HH5drG-33c1SyRe9kyZBrXvm3A", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(1), + ), + PlaylistItem( + id: "PLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ", + name: "BM235", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/WPyEFB4cHkA/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAzBuQFV8T9hM8adlPvv58C9TeDug", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(9), + ), + PlaylistItem( + id: "PLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu", + name: "Vibration Measurement", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/uus_cpZiqsU/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCqdsjWVFaLOkEcXgbZD2Eca8MnuQ", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(3), + ), + PlaylistItem( + id: "PLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI", + name: "Component Selection", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/uq1DMWtjL2U/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAbgb1Jdb5P69JGdZQ-a8asLLyYdA", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(6), + ), + PlaylistItem( + id: "PLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9", + name: "Solar Roadways", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/oIImmlfCyzo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBxApgyGu3dNXRGoqLctVUnESpEIA", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(23), + ), + PlaylistItem( + id: "PLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-", + name: "Electronics Tutorials - AC Circuit Theory Series", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/rrPtvYYJ2-g/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBEVc71xxSjJ-xlA_dDQaYIjdHyUw", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(3), + ), + PlaylistItem( + id: "PLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK", + name: "Electronics Tutorial - DC Fundamentals", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/xSRe_4TQbuo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDP4V24_MG6vzvUZsHep9WFSCCY6Q", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(8), + ), + PlaylistItem( + id: "PLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE", + name: "Oscilloscope Probing", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/OiAmER1OJh4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAXeGAvEc8y3pEsPUxWdsNIP9UmPw", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(14), + ), + PlaylistItem( + id: "PLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu", + name: "Thermal Design", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/8ruFVmxf0zs/hqdefault.jpg?sqp=-oaymwExCOADEI4CSFryq4qpAyMIARUAAIhCGAHwAQH4Af4JgALQBYoCDAgAEAEYfyA1KDUwDw==&rs=AOn4CLD6PMawyYXKe8KT1-Y6vWjQc2xIDw", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(9), + ), + PlaylistItem( + id: "PLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC", + name: "Electric Cars", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/CPcZm1Tu5VI/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCsm8De0QaHPaeCZqxMp_F464fWzg", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(9), + ), + PlaylistItem( + id: "PLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa", + name: "Designing a better uCurrent", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/0AEVilxXAAo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCjotFuRjPPBHd2LWzt3lviPj9HaA", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(3), + ), + PlaylistItem( + id: "PLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA", + name: "EMC Compliance & Measurement", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/lYmfVMWbIHQ/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBtygEqMXx7Lwe5SuBWt2q0CSahYA", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(8), + ), + PlaylistItem( + id: "PLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv", + name: "Power Counter Display Project", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/nTpE1Nw3Yy4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAbPl28_i7isizY6A1t2_c6gV8BAQ", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(2), + ), + PlaylistItem( + id: "PLvOlSehNtuHvm120Tq40nKrM5SUBlolN3", + name: "Live - Ask Dave", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/gQ7TTuiDH1M/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBMnucUil90WeDSIeFz8mZCOtEv9g", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(3), + ), + PlaylistItem( + id: "PLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC", + name: "Padauk Microcontroller", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/r45r4rV5JOI/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCn4kGWcjBOhk3vN8QPMDa9L3mkKA", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(10), + ), + PlaylistItem( + id: "PLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED", + name: "Other Debunking Videos", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/WopuF9vD7KE/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBv5buh3qMs4feQaPj6Fy6bxl_vuA", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(1), + ), + PlaylistItem( + id: "PLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q", + name: "Audio & Speakers", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/qHbkw0Gm7pk/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCJBYXTDttGHTm51j3bfwqxOqVFig", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(9), + ), + PlaylistItem( + id: "PLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi", + name: "Cameras", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/g9umAQ1-an4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCB5jNm9U-rypnpthK_N321LpYWew", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(16), + ), + PlaylistItem( + id: "PLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv", + name: "Cryptocurrency", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ibPgfzd9zd8/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDe3IXT88HR3XxnxfqrpAxh6pfYMg", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(7), + ), + PlaylistItem( + id: "PLvOlSehNtuHvmK-VGcZ33ZuATmcNB8tvH", + name: "LCD Tutorial", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ZYvxgl-9tNM/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDv2WT4Chl1_H2G43AjfSFpPcKVoA", + width: 480, + height: 270, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(952000), + )), + video_count: Some(6), + ), + ], + ctoken: Some("4qmFsgLCARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGnRFZ2x3YkdGNWJHbHpkSE1ZQXlBQk1BRTRBZW9EUEVOblRrUlJhbEZUU2tKSmFWVkZlREpVTW5oVVdsZG9UMlJJVmtsa2JURk1URlphU0ZreGIzcE5NWEF4VVZaU2RGa3dOVU5QU0ZJeVUwTm5PQSUzRCUzRJoCL2Jyb3dzZS1mZWVkVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RcGxheWxpc3RzMTA0"), + endpoint: browse, + ), +) 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_base.snap similarity index 100% rename from src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists.snap rename to src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_base.snap diff --git a/src/serializer/text.rs b/src/serializer/text.rs index f88cad4..90a298a 100644 --- a/src/serializer/text.rs +++ b/src/serializer/text.rs @@ -5,7 +5,7 @@ use serde_with::{serde_as, DefaultOnError, DeserializeAs, VecSkipError}; use crate::{ client::response::url_endpoint::{ - MusicPage, MusicPageType, MusicVideoType, NavigationEndpoint, PageType, + MusicPage, MusicPageType, MusicVideoType, NavigationEndpoint, OnTap, PageType, }, model::{richtext::Style, UrlTarget}, util, @@ -159,7 +159,7 @@ pub(crate) struct AttributedText { struct CommandRun { start_index: usize, length: usize, - on_tap: AttributedTextOnTap, + on_tap: OnTap, #[serde(default)] #[serde_as(as = "DefaultOnError<_>")] on_tap_options: Option, @@ -196,12 +196,6 @@ enum Strikethrough { None, } -#[derive(Deserialize)] -#[serde(rename_all = "camelCase")] -struct AttributedTextOnTap { - innertube_command: NavigationEndpoint, -} - #[derive(Deserialize)] #[serde(rename_all = "camelCase")] struct AttributedTextOnTapOptions { diff --git a/testfiles/channel/channel_playlists_20241109_lockup.json b/testfiles/channel/channel_playlists_20241109_lockup.json new file mode 100644 index 0000000..64031b8 --- /dev/null +++ b/testfiles/channel/channel_playlists_20241109_lockup.json @@ -0,0 +1,7854 @@ +{ + "responseContext": { + "serviceTrackingParams": [ + { + "service": "GFEEDBACK", + "params": [ + { + "key": "route", + "value": "channel.playlists" + }, + { + "key": "is_owner", + "value": "false" + }, + { + "key": "is_alc_surface", + "value": "false" + }, + { + "key": "browse_id", + "value": "UC2DjFE7Xf11URZqWBigcVOQ" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "0" + }, + { + "key": "e", + "value": "23804281,23966208,23986027,24004644,24077241,24166867,24181174,24241378,24439361,24453989,24459435,24499533,24542367,24543668,24547317,24548629,24566687,24699899,39325349,39325801,39325818,39325854,39326590,39326596,39326613,39326620,39326986,39327050,39327100,39327297,39327327,39327564,39327574,39327594,39327601,39327635,39327662,39327677,39327743,39327834,39327846,39327900,39327964,51009781,51010235,51017346,51020570,51025415,51050361,51053689,51063643,51064835,51072748,51091058,51095478,51098299,51111738,51115184,51117319,51124104,51129210,51133103,51141472,51146014,51152050,51157411,51157841,51158514,51160545,51165467,51169118,51176511,51178982,51182850,51183910,51184990,51195231,51204329,51213773,51217504,51222382,51222973,51223961,51227037,51228350,51230241,51230478,51231814,51237842,51239093,51241028,51242448,51243940,51248255,51248734,51251836,51255676,51255680,51255743,51256074,51256084,51258066,51263449,51266454,51272458,51273608,51274583,51275782,51276557,51276565,51281227,51282792,51285052,51285717,51287196,51287500,51289938,51292055,51294322,51295132,51296439,51297233,51298019,51298020,51299710,51299724,51300176,51300241,51300699,51302492,51302680,51303665,51303667,51303669,51303789,51304155,51305839,51306259,51307502,51308045,51308060,51309314,51310323,51310742,51311505,51312688,51313149,51313767,51314158,51315041,51317748,51317942,51318844,51320777,51322670,51323366,51325576,51326207,51326641,51326932,51327613,51327636,51328144,51329227,51329506,51330194,51332896,51333739,51333879,51335364,51337186,51337350,51338524,51339126,51339163,51339747,51342093,51343109,51343368" + }, + { + "key": "visitor_data", + "value": "CgtDa0taVld6Unk0cyj4nru5BjIKCgJERRIEEgAgag%3D%3D" + } + ] + }, + { + "service": "GOOGLE_HELP", + "params": [ + { + "key": "browse_id", + "value": "UC2DjFE7Xf11URZqWBigcVOQ" + }, + { + "key": "browse_id_prefix", + "value": "" + } + ] + }, + { + "service": "CSI", + "params": [ + { + "key": "c", + "value": "WEB" + }, + { + "key": "cver", + "value": "2.20241107.01.00" + }, + { + "key": "yt_li", + "value": "0" + }, + { + "key": "GetChannelPage_rid", + "value": "0x4784b3549d4bfe74" + } + ] + }, + { + "service": "GUIDED_HELP", + "params": [ + { + "key": "logged_in", + "value": "0" + } + ] + }, + { + "service": "ECATCHER", + "params": [ + { + "key": "client.version", + "value": "2.20241107" + }, + { + "key": "client.name", + "value": "WEB" + } + ] + } + ], + "maxAgeSeconds": 300, + "mainAppWebResponseContext": { + "loggedOut": true, + "trackingParam": "kx_fmPxhoPZRevO1P7uL_NB5HitbbTeqseaDrwjz0000omwRgkuswmIBwOcCE59TDtslLKPQ-SS" + }, + "webResponseContextExtensionData": { + "hasDecorated": true + } + }, + "contents": { + "twoColumnBrowseResultsRenderer": { + "tabs": [ + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CE8Q8JMBGAUiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/featured", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EghmZWF0dXJlZA%3D%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Home", + "selected": false, + "content": { + "sectionListRenderer": { + "trackingParams": "CFAQui8iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "disablePullToRefresh": true + } + }, + "trackingParams": "CE8Q8JMBGAUiEwjNmrnZoM6JAxWWXHoFHd1sJiA=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CE0Q8JMBGAYiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/videos", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EgZ2aWRlb3M%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Videos", + "selected": false, + "content": { + "sectionListRenderer": { + "trackingParams": "CE4Qui8iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "disablePullToRefresh": true + } + }, + "trackingParams": "CE0Q8JMBGAYiEwjNmrnZoM6JAxWWXHoFHd1sJiA=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CEsQ8JMBGAciEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/shorts", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EgZzaG9ydHM%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Shorts", + "selected": false, + "content": { + "sectionListRenderer": { + "trackingParams": "CEwQui8iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "disablePullToRefresh": true + } + }, + "trackingParams": "CEsQ8JMBGAciEwjNmrnZoM6JAxWWXHoFHd1sJiA=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CEkQ8JMBGAgiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/streams", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EgdzdHJlYW1z", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Live", + "selected": false, + "content": { + "sectionListRenderer": { + "trackingParams": "CEoQui8iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "disablePullToRefresh": true + } + }, + "trackingParams": "CEkQ8JMBGAgiEwjNmrnZoM6JAxWWXHoFHd1sJiA=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CCQQ8JMBGAkiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/playlists", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EglwbGF5bGlzdHM%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Playlists", + "selected": true, + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "gridRenderer": { + "items": [ + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/XYdmX8w8xwI/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCqmf6TGfDinNXhgU29ZxOkv2u9sQ", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "5 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2370867, + "darkTheme": 2370867 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 2963775, + "darkTheme": 2963775 + } + } + }, + "stackColor": { + "lightTheme": 7113113, + "darkTheme": 7768467 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Jellybean Components Series" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEgQ0sQMGAAiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHv268f0mW5m1t_hq_RVGRSA", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHv268f0mW5m1t_hq_RVGRSA" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHv268f0mW5m1t_hq_RVGRSA", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEgQ0sQMGAAiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444369 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEgQ0sQMGAAiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=XYdmX8w8xwI&list=PLvOlSehNtuHv268f0mW5m1t_hq_RVGRSA&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "XYdmX8w8xwI", + "playlistId": "PLvOlSehNtuHv268f0mW5m1t_hq_RVGRSA", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2MjY4ZjBtVzVtMXRfaHFfUlZHUlNB" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&odepv=1&id=5d87665fcc3cc702&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/uUXxY6gA-7g/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAlIVvQ4Axx40Xa_i8F56qmppXEXg", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "11 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 796190, + "darkTheme": 796190 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 1326898, + "darkTheme": 1326898 + } + } + }, + "stackColor": { + "lightTheme": 7051659, + "darkTheme": 7376003 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Tandy Electronics / Radio Shack & Computers" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEcQ0sQMGAEiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHu46I7nFuUg3LC3PpiWTR4f", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHu46I7nFuUg3LC3PpiWTR4f" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHu46I7nFuUg3LC3PpiWTR4f", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEcQ0sQMGAEiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444368 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEcQ0sQMGAEiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=uUXxY6gA-7g&list=PLvOlSehNtuHu46I7nFuUg3LC3PpiWTR4f&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "uUXxY6gA-7g", + "playlistId": "PLvOlSehNtuHu46I7nFuUg3LC3PpiWTR4f", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1NDZJN25GdVVnM0xDM1BwaVdUUjRm" + } + }, + "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&odepv=1&id=b945f163a800fbb8&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/m_8jh_MpWBE/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBx6U5iikp5rSO78dIWdy1RQ_BLNQ", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "4 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 3355443, + "darkTheme": 3355443 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4144959, + "darkTheme": 4144959 + } + } + }, + "stackColor": { + "lightTheme": 10066329, + "darkTheme": 9211020 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Open Source Hardware" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEYQ0sQMGAIiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHuS01_RNCnvpzyk7bycYCmM", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHuS01_RNCnvpzyk7bycYCmM" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHuS01_RNCnvpzyk7bycYCmM", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEYQ0sQMGAIiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444367 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEYQ0sQMGAIiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=m_8jh_MpWBE&list=PLvOlSehNtuHuS01_RNCnvpzyk7bycYCmM&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "m_8jh_MpWBE", + "playlistId": "PLvOlSehNtuHuS01_RNCnvpzyk7bycYCmM", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1UzAxX1JOQ252cHp5azdieWNZQ21N" + } + }, + "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&odepv=1&id=9bff2387f3295811&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/ymJc5oxthlw/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDAOiw39aJajjAdroLnuj_fh60Ryw", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "22 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2500134, + "darkTheme": 2500134 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4144959, + "darkTheme": 4144959 + } + } + }, + "stackColor": { + "lightTheme": 10066329, + "darkTheme": 9211020 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Fluke Multimeters" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEUQ0sQMGAMiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHuwwQ1fpquOJuA5MSfD4iD6", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHuwwQ1fpquOJuA5MSfD4iD6" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHuwwQ1fpquOJuA5MSfD4iD6", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEUQ0sQMGAMiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444366 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEUQ0sQMGAMiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=ymJc5oxthlw&list=PLvOlSehNtuHuwwQ1fpquOJuA5MSfD4iD6&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "ymJc5oxthlw", + "playlistId": "PLvOlSehNtuHuwwQ1fpquOJuA5MSfD4iD6", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1d3dRMWZwcXVPSnVBNU1TZkQ0aUQ2" + } + }, + "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&odepv=1&id=ca625ce68c6d865c&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/lJ3q9RHIatU/hqdefault.jpg?sqp=-oaymwExCOADEI4CSFryq4qpAyMIARUAAIhCGAHwAQH4Af4JgALQBYoCDAgAEAEYQyBXKGUwDw==&rs=AOn4CLBaaQaTJzi7H-zjwSsTlNJdBsyqvQ", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "5 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2239283, + "darkTheme": 2239283 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 2766399, + "darkTheme": 2766399 + } + } + }, + "stackColor": { + "lightTheme": 7046553, + "darkTheme": 7767955 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "EEVacademy Digital Design Tutorial Series" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEQQ0sQMGAQiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHs2LwEdDwTp3n7mxb-MyBbo", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHs2LwEdDwTp3n7mxb-MyBbo" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHs2LwEdDwTp3n7mxb-MyBbo", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEQQ0sQMGAQiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444365 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEQQ0sQMGAQiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=lJ3q9RHIatU&list=PLvOlSehNtuHs2LwEdDwTp3n7mxb-MyBbo&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "lJ3q9RHIatU", + "playlistId": "PLvOlSehNtuHs2LwEdDwTp3n7mxb-MyBbo", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUhzMkx3RWREd1RwM243bXhiLU15QmJv" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&odepv=1&id=949deaf511c86ad5&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/g5_Ts9SWbYs/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBmZPW6EiAvTCsI86BFg4BxXLj66A", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "3 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2500134, + "darkTheme": 2500134 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 3947580, + "darkTheme": 3947580 + } + } + }, + "stackColor": { + "lightTheme": 10066329, + "darkTheme": 9211020 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "AI / ChatGPT" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEMQ0sQMGAUiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHu2v8THrRMt8E9ziHtRXPm7", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHu2v8THrRMt8E9ziHtRXPm7" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHu2v8THrRMt8E9ziHtRXPm7", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEMQ0sQMGAUiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444364 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEMQ0sQMGAUiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=g5_Ts9SWbYs&list=PLvOlSehNtuHu2v8THrRMt8E9ziHtRXPm7&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "g5_Ts9SWbYs", + "playlistId": "PLvOlSehNtuHu2v8THrRMt8E9ziHtRXPm7", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1MnY4VEhyUk10OEU5emlIdFJYUG03" + } + }, + "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&odepv=1&id=839fd3b3d4966d8b&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/ndvJtQ8nxV4/hqdefault.jpg?sqp=-oaymwExCOADEI4CSFryq4qpAyMIARUAAIhCGAHwAQH4AbYIgAKAD4oCDAgAEAEYNyBTKH8wDw==&rs=AOn4CLDD0qOLs38KPJtqdG6zCeVLQMf62Q", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "1 video", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 1450291, + "darkTheme": 1450291 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 2570841, + "darkTheme": 2570841 + } + } + }, + "stackColor": { + "lightTheme": 7044505, + "darkTheme": 7766419 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Shorts" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEIQ0sQMGAYiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHvXuXRmoBUys09Dwi1heNii", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvXuXRmoBUys09Dwi1heNii" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHvXuXRmoBUys09Dwi1heNii", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEIQ0sQMGAYiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444363 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEIQ0sQMGAYiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=ndvJtQ8nxV4&list=PLvOlSehNtuHvXuXRmoBUys09Dwi1heNii&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "ndvJtQ8nxV4", + "playlistId": "PLvOlSehNtuHvXuXRmoBUys09Dwi1heNii", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2WHVYUm1vQlV5czA5RHdpMWhlTmlp" + } + }, + "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&odepv=1&id=9ddbc9b50f27c55e&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/L9Wrv7nW-S8/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDiAT5izyig1ntMSUhvSOVuYSsG1Q", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "1 video", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 337436, + "darkTheme": 337436 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 605999, + "darkTheme": 605999 + } + } + }, + "stackColor": { + "lightTheme": 7051659, + "darkTheme": 7376003 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Microcontrollers" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEEQ0sQMGAciEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHv3gxNg5BGoZJJu9htoAGB6", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHv3gxNg5BGoZJJu9htoAGB6" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHv3gxNg5BGoZJJu9htoAGB6", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEEQ0sQMGAciEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444362 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEEQ0sQMGAciEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=L9Wrv7nW-S8&list=PLvOlSehNtuHv3gxNg5BGoZJJu9htoAGB6&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "L9Wrv7nW-S8", + "playlistId": "PLvOlSehNtuHv3gxNg5BGoZJJu9htoAGB6", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2M2d4Tmc1QkdvWkpKdTlodG9BR0I2" + } + }, + "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&odepv=1&id=2fd5abbfb9d6f92f&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/1xicZF9glH0/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAFb2FcbpdtAG1xLjmdkdIm1hFvgA", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "4 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 3353895, + "darkTheme": 3353895 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4143153, + "darkTheme": 4143153 + } + } + }, + "stackColor": { + "lightTheme": 10061686, + "darkTheme": 9667958 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Bypass Capacitors" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEAQ0sQMGAgiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHvllTQ-vwvY26E3Bvrov93Y", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvllTQ-vwvY26E3Bvrov93Y" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHvllTQ-vwvY26E3Bvrov93Y", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEAQ0sQMGAgiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444361 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEAQ0sQMGAgiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=1xicZF9glH0&list=PLvOlSehNtuHvllTQ-vwvY26E3Bvrov93Y&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "1xicZF9glH0", + "playlistId": "PLvOlSehNtuHvllTQ-vwvY26E3Bvrov93Y", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2bGxUUS12d3ZZMjZFM0J2cm92OTNZ" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&odepv=1&id=d7189c645f60947d&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/4yosozyeIP4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAkwsCiJjFkWhYxtcg5NgfnQbkZrA", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "3 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2500134, + "darkTheme": 2500134 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4408131, + "darkTheme": 4408131 + } + } + }, + "stackColor": { + "lightTheme": 10066329, + "darkTheme": 9211020 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "MacGyver Project" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CD8Q0sQMGAkiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHtOV3AEwhuea4TnviddKfAj", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHtOV3AEwhuea4TnviddKfAj" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHtOV3AEwhuea4TnviddKfAj", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CD8Q0sQMGAkiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444360 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CD8Q0sQMGAkiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=4yosozyeIP4&list=PLvOlSehNtuHtOV3AEwhuea4TnviddKfAj&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "4yosozyeIP4", + "playlistId": "PLvOlSehNtuHtOV3AEwhuea4TnviddKfAj", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0T1YzQUV3aHVlYTRUbnZpZGRLZkFq" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&odepv=1&id=e32a2ca33c9e20fe&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/S3R4r2xvVYQ/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLB7HH5drG-33c1SyRe9kyZBrXvm3A", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "1 video", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2041379, + "darkTheme": 2041379 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 3358523, + "darkTheme": 3358523 + } + } + }, + "stackColor": { + "lightTheme": 8165773, + "darkTheme": 7507073 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Calculators" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CD4Q0sQMGAoiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CD4Q0sQMGAoiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444359 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CD4Q0sQMGAoiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=S3R4r2xvVYQ&list=PLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "S3R4r2xvVYQ", + "playlistId": "PLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1dkhFNUdRclFKeFdYSGRtVzJsNUlG" + } + }, + "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&odepv=1&id=4b7478af6c6f5584&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/WPyEFB4cHkA/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAzBuQFV8T9hM8adlPvv58C9TeDug", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "9 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 3353129, + "darkTheme": 3353129 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4142388, + "darkTheme": 4142388 + } + } + }, + "stackColor": { + "lightTheme": 10059644, + "darkTheme": 9665400 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "BM235" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CD0Q0sQMGAsiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CD0Q0sQMGAsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444358 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CD0Q0sQMGAsiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=WPyEFB4cHkA&list=PLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "WPyEFB4cHkA", + "playlistId": "PLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUhzNndSd1ZTYUVyVTBCRW5MaUhmbktK" + } + }, + "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&odepv=1&id=58fc84141e1c1e40&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/uus_cpZiqsU/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCqdsjWVFaLOkEcXgbZD2Eca8MnuQ", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "3 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2631459, + "darkTheme": 2631459 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4144439, + "darkTheme": 4144439 + } + } + }, + "stackColor": { + "lightTheme": 12564901, + "darkTheme": 9209977 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Vibration Measurement" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDwQ0sQMGAwiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDwQ0sQMGAwiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444357 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDwQ0sQMGAwiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=uus_cpZiqsU&list=PLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "uus_cpZiqsU", + "playlistId": "PLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1NGswWmtLRkxzeXNTQjVpYXZhNlF1" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&odepv=1&id=baeb3f729662aac5&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/uq1DMWtjL2U/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAbgb1Jdb5P69JGdZQ-a8asLLyYdA", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "6 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 3351073, + "darkTheme": 3351073 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4139562, + "darkTheme": 4139562 + } + } + }, + "stackColor": { + "lightTheme": 10054763, + "darkTheme": 9664374 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Component Selection" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDsQ0sQMGA0iEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDsQ0sQMGA0iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444356 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDsQ0sQMGA0iEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=uq1DMWtjL2U&list=PLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "uq1DMWtjL2U", + "playlistId": "PLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0ZFFGLW01VUZaNUdFakFCYWRJM2tJ" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&odepv=1&id=baad43316b632f65&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/oIImmlfCyzo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBxApgyGu3dNXRGoqLctVUnESpEIA", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "23 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2630940, + "darkTheme": 2630940 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4143917, + "darkTheme": 4143917 + } + } + }, + "stackColor": { + "lightTheme": 12562823, + "darkTheme": 9209200 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Solar Roadways" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDoQ0sQMGA4iEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDoQ0sQMGA4iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444355 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDoQ0sQMGA4iEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=oIImmlfCyzo&list=PLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "oIImmlfCyzo", + "playlistId": "PLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0bG5kUFVTT1Bnc3VqVWRxMWM1TXI5" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&odepv=1&id=a082269a57c2cb3a&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/rrPtvYYJ2-g/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBEVc71xxSjJ-xlA_dDQaYIjdHyUw", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "3 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 3353387, + "darkTheme": 3353387 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4142646, + "darkTheme": 4142646 + } + } + }, + "stackColor": { + "lightTheme": 10060674, + "darkTheme": 9666173 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Electronics Tutorials - AC Circuit Theory Series" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDkQ0sQMGA8iEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDkQ0sQMGA8iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444354 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDkQ0sQMGA8iEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=rrPtvYYJ2-g&list=PLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "rrPtvYYJ2-g", + "playlistId": "PLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2RDZNXzdXZU4wNzFPVnNaRkUwX3Et" + } + }, + "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&odepv=1&id=aeb3edbd8609dbe8&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/xSRe_4TQbuo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDP4V24_MG6vzvUZsHep9WFSCCY6Q", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "8 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2631720, + "darkTheme": 2631720 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4144959, + "darkTheme": 4144959 + } + } + }, + "stackColor": { + "lightTheme": 12566463, + "darkTheme": 9211020 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Electronics Tutorial - DC Fundamentals" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDgQ0sQMGBAiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDgQ0sQMGBAiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444353 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDgQ0sQMGBAiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=xSRe_4TQbuo&list=PLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "xSRe_4TQbuo", + "playlistId": "PLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0VkxxMk1EUEl6ODJCV01JWmN1d2hL" + } + }, + "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&odepv=1&id=c5245eff84d06eea&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/OiAmER1OJh4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAXeGAvEc8y3pEsPUxWdsNIP9UmPw", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "14 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 3352609, + "darkTheme": 3352609 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4141610, + "darkTheme": 4141610 + } + } + }, + "stackColor": { + "lightTheme": 10059115, + "darkTheme": 9666934 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Oscilloscope Probing" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDcQ0sQMGBEiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDcQ0sQMGBEiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444352 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDcQ0sQMGBEiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=OiAmER1OJh4&list=PLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "OiAmER1OJh4", + "playlistId": "PLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2SURmVzN4MnA0Qlk2bDRSWWdmQkpF" + } + }, + "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&odepv=1&id=3a2026111d4e261e&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/8ruFVmxf0zs/hqdefault.jpg?sqp=-oaymwExCOADEI4CSFryq4qpAyMIARUAAIhCGAHwAQH4Af4JgALQBYoCDAgAEAEYfyA1KDUwDw==&rs=AOn4CLD6PMawyYXKe8KT1-Y6vWjQc2xIDw", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "9 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 3347733, + "darkTheme": 3347733 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 5842213, + "darkTheme": 5842213 + } + } + }, + "stackColor": { + "lightTheme": 10054507, + "darkTheme": 9664118 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Thermal Design" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDYQ0sQMGBIiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDYQ0sQMGBIiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444351 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDYQ0sQMGBIiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=8ruFVmxf0zs&list=PLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "8ruFVmxf0zs", + "playlistId": "PLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1NkpqYjhVODJlS1FmdktoSlZsMEJ1" + } + }, + "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&odepv=1&id=f2bb85566c5fd33b&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/CPcZm1Tu5VI/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCsm8De0QaHPaeCZqxMp_F464fWzg", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "9 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 3352360, + "darkTheme": 3352360 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4141362, + "darkTheme": 4141362 + } + } + }, + "stackColor": { + "lightTheme": 10057593, + "darkTheme": 9664120 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Electric Cars" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDUQ0sQMGBMiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDUQ0sQMGBMiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444350 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDUQ0sQMGBMiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=CPcZm1Tu5VI&list=PLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "CPcZm1Tu5VI", + "playlistId": "PLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUhzLVgyQXdnMzNQQ0JOclAyQkdGVmhD" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&odepv=1&id=08f7199b54eee552&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/0AEVilxXAAo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCjotFuRjPPBHd2LWzt3lviPj9HaA", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "3 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2500134, + "darkTheme": 2500134 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 3355443, + "darkTheme": 3355443 + } + } + }, + "stackColor": { + "lightTheme": 10066329, + "darkTheme": 9211020 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Designing a better uCurrent" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDQQ0sQMGBQiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDQQ0sQMGBQiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444349 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDQQ0sQMGBQiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=0AEVilxXAAo&list=PLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "0AEVilxXAAo", + "playlistId": "PLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1TE9ETFRlcTNQTS1PSlJQMm56TlVh" + } + }, + "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&odepv=1&id=d001158a5c57000a&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/lYmfVMWbIHQ/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBtygEqMXx7Lwe5SuBWt2q0CSahYA", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "8 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2500134, + "darkTheme": 2500134 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4144959, + "darkTheme": 4144959 + } + } + }, + "stackColor": { + "lightTheme": 10066329, + "darkTheme": 9211020 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "EMC Compliance & Measurement" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDMQ0sQMGBUiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDMQ0sQMGBUiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444348 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDMQ0sQMGBUiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=lYmfVMWbIHQ&list=PLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "lYmfVMWbIHQ", + "playlistId": "PLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0dlRLUDRSVE5XMS0wOEttenkxcHZB" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&odepv=1&id=95899f54c59b2074&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/nTpE1Nw3Yy4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAbPl28_i7isizY6A1t2_c6gV8BAQ", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "2 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2500134, + "darkTheme": 2500134 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4342338, + "darkTheme": 4342338 + } + } + }, + "stackColor": { + "lightTheme": 10066329, + "darkTheme": 9211020 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Power Counter Display Project" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDIQ0sQMGBYiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDIQ0sQMGBYiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444347 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDIQ0sQMGBYiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=nTpE1Nw3Yy4&list=PLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "nTpE1Nw3Yy4", + "playlistId": "PLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1VVRwQ3JUVlg3QmRVNjhsMmFWcU12" + } + }, + "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&odepv=1&id=9d3a44d4dc37632e&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/gQ7TTuiDH1M/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBMnucUil90WeDSIeFz8mZCOtEv9g", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "3 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2631201, + "darkTheme": 2631201 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4143923, + "darkTheme": 4143923 + } + } + }, + "stackColor": { + "lightTheme": 12563099, + "darkTheme": 9208690 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Live - Ask Dave" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDEQ0sQMGBciEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHvm120Tq40nKrM5SUBlolN3", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvm120Tq40nKrM5SUBlolN3" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHvm120Tq40nKrM5SUBlolN3", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDEQ0sQMGBciEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444346 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDEQ0sQMGBciEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=gQ7TTuiDH1M&list=PLvOlSehNtuHvm120Tq40nKrM5SUBlolN3&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "gQ7TTuiDH1M", + "playlistId": "PLvOlSehNtuHvm120Tq40nKrM5SUBlolN3", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2bTEyMFRxNDBuS3JNNVNVQmxvbE4z" + } + }, + "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&odepv=1&id=810ed34ee8831f53&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/r45r4rV5JOI/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCn4kGWcjBOhk3vN8QPMDa9L3mkKA", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "10 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 3353379, + "darkTheme": 3353379 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4142380, + "darkTheme": 4142380 + } + } + }, + "stackColor": { + "lightTheme": 10060139, + "darkTheme": 9667702 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Padauk Microcontroller" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDAQ0sQMGBgiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDAQ0sQMGBgiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444345 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDAQ0sQMGBgiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=r45r4rV5JOI&list=PLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "r45r4rV5JOI", + "playlistId": "PLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUhzaUY5M0tPTG9GMUtBSEFybUlXOWxD" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&odepv=1&id=af8e6be2b57924e2&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/WopuF9vD7KE/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBv5buh3qMs4feQaPj6Fy6bxl_vuA", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "1 video", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2630920, + "darkTheme": 2630920 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4998671, + "darkTheme": 4998671 + } + } + }, + "stackColor": { + "lightTheme": 12564869, + "darkTheme": 9210224 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Other Debunking Videos" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CC8Q0sQMGBkiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CC8Q0sQMGBkiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444344 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CC8Q0sQMGBkiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=WopuF9vD7KE&list=PLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "WopuF9vD7KE", + "playlistId": "PLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2eFR6Qkx3VUZ3NE15NHJ0ck5GekVE" + } + }, + "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&odepv=1&id=5a8a6e17dbc3eca1&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/qHbkw0Gm7pk/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCJBYXTDttGHTm51j3bfwqxOqVFig", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "9 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2631720, + "darkTheme": 2631720 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 3618615, + "darkTheme": 3618615 + } + } + }, + "stackColor": { + "lightTheme": 12566463, + "darkTheme": 9211020 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Audio & Speakers" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CC4Q0sQMGBoiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CC4Q0sQMGBoiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444343 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CC4Q0sQMGBoiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=qHbkw0Gm7pk&list=PLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "qHbkw0Gm7pk", + "playlistId": "PLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0MnBKN1g1dHVtdU00V2EzcjFPQzdR" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&odepv=1&id=a876e4c341a6ee99&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/g9umAQ1-an4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCB5jNm9U-rypnpthK_N321LpYWew", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "16 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2106911, + "darkTheme": 2106911 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 3555124, + "darkTheme": 3555124 + } + } + }, + "stackColor": { + "lightTheme": 8493437, + "darkTheme": 7769203 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Cameras" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CC0Q0sQMGBsiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CC0Q0sQMGBsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444342 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CC0Q0sQMGBsiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=g9umAQ1-an4&list=PLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "g9umAQ1-an4", + "playlistId": "PLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0WDdPZWFyV2RtcUd6cWl1NERIS1dp" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&odepv=1&id=83dba6010d7e6a7e&ip=79.205.208.149&initcwndbps=1848750&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/ibPgfzd9zd8/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDe3IXT88HR3XxnxfqrpAxh6pfYMg", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "7 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 3354153, + "darkTheme": 3354153 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4143668, + "darkTheme": 4143668 + } + } + }, + "stackColor": { + "lightTheme": 10062717, + "darkTheme": 9668217 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Cryptocurrency" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCwQ0sQMGBwiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCwQ0sQMGBwiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444341 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCwQ0sQMGBwiEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=ibPgfzd9zd8&list=PLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "ibPgfzd9zd8", + "playlistId": "PLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1LVRhTlJwMjdfUGlYakJHNXdZOUd2" + } + }, + "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&odepv=1&id=89b3e07f377dcddf&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/ZYvxgl-9tNM/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDv2WT4Chl1_H2G43AjfSFpPcKVoA", + "width": 480, + "height": 270 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "6 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 2500134, + "darkTheme": 2500134 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4013373, + "darkTheme": 4013373 + } + } + }, + "stackColor": { + "lightTheme": 10066329, + "darkTheme": 9211020 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "LCD Tutorial" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCsQ0sQMGB0iEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLvOlSehNtuHvmK-VGcZ33ZuATmcNB8tvH", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvmK-VGcZ33ZuATmcNB8tvH" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLvOlSehNtuHvmK-VGcZ33ZuATmcNB8tvH", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCsQ0sQMGB0iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 202444340 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCsQ0sQMGB0iEwjNmrnZoM6JAxWWXHoFHd1sJiAyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=ZYvxgl-9tNM&list=PLvOlSehNtuHvmK-VGcZ33ZuATmcNB8tvH&pp=iAQB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "ZYvxgl-9tNM", + "playlistId": "PLvOlSehNtuHvmK-VGcZ33ZuATmcNB8tvH", + "params": "OAI%3D", + "playerParams": "iAQB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2bUstVkdjWjMzWnVBVG1jTkI4dHZI" + } + }, + "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&odepv=1&id=658bf1825fbdb4d3&ip=79.205.208.149&initcwndbps=1876250&mt=1731120795&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CCoQ6IsCGAAiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgLCARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGnRFZ2x3YkdGNWJHbHpkSE1ZQXlBQk1BRTRBZW9EUEVOblRrUlJhbEZUU2tKSmFWVkZlREpVTW5oVVdsZG9UMlJJVmtsa2JURk1URlphU0ZreGIzcE5NWEF4VVZaU2RGa3dOVU5QU0ZJeVUwTm5PQSUzRCUzRJoCL2Jyb3dzZS1mZWVkVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RcGxheWxpc3RzMTA0", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE" + } + } + } + } + ], + "trackingParams": "CCoQ6IsCGAAiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "targetId": "browse-feedUC2DjFE7Xf11URZqWBigcVOQplaylists104" + } + } + ], + "trackingParams": "CCkQuy8YACITCM2audmgzokDFZZcegUd3WwmIA==" + } + } + ], + "trackingParams": "CCUQui8iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "subMenu": { + "channelSubMenuRenderer": { + "contentTypeSubMenuItems": [ + { + "endpoint": { + "clickTrackingParams": "CCUQui8iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/playlists?view=1", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EglwbGF5bGlzdHMgAQ%3D%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Created playlists", + "selected": true + } + ], + "sortSetting": { + "sortFilterSubMenuRenderer": { + "subMenuItems": [ + { + "title": "Date added (newest)", + "selected": true, + "navigationEndpoint": { + "clickTrackingParams": "CCgQ48AHGAAiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/playlists?view=1&sort=dd&flow=grid", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EglwbGF5bGlzdHMYAyABMAE%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "trackingParams": "CCgQ48AHGAAiEwjNmrnZoM6JAxWWXHoFHd1sJiA=" + }, + { + "title": "Last video added", + "selected": false, + "navigationEndpoint": { + "clickTrackingParams": "CCcQ48AHGAEiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/playlists?view=1&sort=lad&flow=grid", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EglwbGF5bGlzdHMYBCABMAE%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "trackingParams": "CCcQ48AHGAEiEwjNmrnZoM6JAxWWXHoFHd1sJiA=" + } + ], + "title": "Sort by", + "icon": { + "iconType": "SORT" + }, + "accessibility": { + "accessibilityData": { + "label": "Sort by" + } + }, + "trackingParams": "CCYQgdoEIhMIzZq52aDOiQMVllx6BR3dbCYg" + } + } + } + }, + "targetId": "browse-feedUC2DjFE7Xf11URZqWBigcVOQplaylists", + "disablePullToRefresh": true + } + }, + "trackingParams": "CCQQ8JMBGAkiEwjNmrnZoM6JAxWWXHoFHd1sJiA=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CCIQ8JMBGAoiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/community", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "Egljb21tdW5pdHk%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Community", + "selected": false, + "content": { + "sectionListRenderer": { + "trackingParams": "CCMQui8iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "disablePullToRefresh": true + } + }, + "trackingParams": "CCIQ8JMBGAoiEwjNmrnZoM6JAxWWXHoFHd1sJiA=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CCAQ8JMBGAsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/store", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EgVzdG9yZQ%3D%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Store", + "selected": false, + "content": { + "sectionListRenderer": { + "trackingParams": "CCEQui8iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "disablePullToRefresh": true + } + }, + "trackingParams": "CCAQ8JMBGAsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=" + } + }, + { + "expandableTabRenderer": { + "endpoint": { + "clickTrackingParams": "CAAQhGciEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/search", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EgZzZWFyY2g%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Search", + "selected": false + } + } + ] + } + }, + "header": { + "pageHeaderRenderer": { + "pageTitle": "EEVblog", + "content": { + "pageHeaderViewModel": { + "title": { + "dynamicTextViewModel": { + "text": { + "content": "EEVblog", + "styleRuns": [ + { + "startIndex": 7, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + } + } + ], + "attachmentRuns": [ + { + "startIndex": 7, + "length": 0, + "element": { + "type": { + "imageType": { + "image": { + "sources": [ + { + "clientResource": { + "imageName": "CHECK_CIRCLE_FILLED" + }, + "width": 14, + "height": 14 + } + ] + } + } + }, + "properties": { + "layoutProperties": { + "height": { + "value": 14, + "unit": "DIMENSION_UNIT_POINT" + }, + "width": { + "value": 14, + "unit": "DIMENSION_UNIT_POINT" + }, + "margin": { + "left": { + "value": 8, + "unit": "DIMENSION_UNIT_POINT" + } + } + } + } + }, + "alignment": "ALIGNMENT_VERTICAL_CENTER" + } + ] + }, + "maxLines": 2, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB8Qj-QKIhMIzZq52aDOiQMVllx6BR3dbCYg", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176655, + "veCounter": 202444339 + } + } + }, + "accessibilityContext": { + "label": "EEVblog, Verified" + } + } + } + }, + "image": { + "decoratedAvatarViewModel": { + "avatar": { + "avatarViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s72-c-k-c0x00ffffff-no-rj", + "width": 72, + "height": 72 + }, + { + "url": "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s120-c-k-c0x00ffffff-no-rj", + "width": 120, + "height": 120 + }, + { + "url": "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s160-c-k-c0x00ffffff-no-rj", + "width": 160, + "height": 160 + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "avatarImageSize": "AVATAR_SIZE_XL", + "loggingDirectives": { + "trackingParams": "CB4Q6OENIhMIzZq52aDOiQMVllx6BR3dbCYg", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "@EEVblog" + }, + "enableTruncation": true + } + ] + }, + { + "metadataParts": [ + { + "text": { + "content": "952K subscribers" + } + }, + { + "text": { + "content": "2K videos", + "styleRuns": [ + { + "startIndex": 0, + "length": 9 + } + ] + } + } + ] + } + ], + "delimiter": "•", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB0Q9eQKIhMIzZq52aDOiQMVllx6BR3dbCYg", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176757, + "veCounter": 202444338 + } + } + } + } + } + }, + "actions": { + "flexibleActionsViewModel": { + "actionsRows": [ + { + "actions": [ + { + "buttonViewModel": { + "title": "Subscribe", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBkQjqULIhMIzZq52aDOiQMVllx6BR3dbCYg", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "simpleText": "Want to subscribe to this channel?" + }, + "content": { + "simpleText": "Sign in to subscribe to this channel." + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "Sign in" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBwQ_YYEIhMIzZq52aDOiQMVllx6BR3dbCYgMglzdWJzY3JpYmU=", + "commandMetadata": { + "webCommandMetadata": { + "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%252F%2540EEVblog%252Fplaylists%26continue_action%3DQUFFLUhqbnRHMXhSWkRGdlpDTV9pY2txa3BwSmNSLVFuQXxBQ3Jtc0trUnZjYlkxckVSdlRSWnpFSFdBQjZvZVVCTVREbDlIYmRFaTBHZERSZ3haeGNzOUE2ajYzX0FlRV9kOC00MTVnb2ZwSFhWT2o5RmNZUGx2TG9fczlQRUJER19idjZDT0lxR0hmbmhScjRSWDZyd1E1b2ZRb3Z0aDNCbUlYYjFobXlQZkhGNV9XMTlQVWU2MS1UOFpEQlcyR0VnRWV5YXBtNlUxVFhmOFpFcGQySUZTWkZKNVhSZVI4SWdkNWpEZlBiVllMcno&hl=en&ec=66429", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBwQ_YYEIhMIzZq52aDOiQMVllx6BR3dbCYg", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/playlists", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EglwbGF5bGlzdHM%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "continueAction": "QUFFLUhqbnRHMXhSWkRGdlpDTV9pY2txa3BwSmNSLVFuQXxBQ3Jtc0trUnZjYlkxckVSdlRSWnpFSFdBQjZvZVVCTVREbDlIYmRFaTBHZERSZ3haeGNzOUE2ajYzX0FlRV9kOC00MTVnb2ZwSFhWT2o5RmNZUGx2TG9fczlQRUJER19idjZDT0lxR0hmbmhScjRSWDZyd1E1b2ZRb3Z0aDNCbUlYYjFobXlQZkhGNV9XMTlQVWU2MS1UOFpEQlcyR0VnRWV5YXBtNlUxVFhmOFpFcGQySUZTWkZKNVhSZVI4SWdkNWpEZlBiVllMcno", + "idamTag": "66429" + } + }, + "trackingParams": "CBwQ_YYEIhMIzZq52aDOiQMVllx6BR3dbCYg" + } + } + } + } + } + } + }, + "accessibilityText": "Subscribe", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "trackingParams": "CBkQjqULIhMIzZq52aDOiQMVllx6BR3dbCYg", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_FILLED", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "state": "BUTTON_VIEW_MODEL_STATE_ACTIVE" + } + }, + { + "buttonViewModel": { + "title": "Join", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBoQocYHGAIiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Want to join this channel?" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to become a member." + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "Sign in" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBsQ8FsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "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%3Dhttps%253A%252F%252Fwww.youtube.com%252Fyoutubei%252Fv1%252Fbrowse%253FprettyPrint%253Dfalse&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CBsQ8FsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=" + } + } + } + } + } + } + }, + "accessibilityText": "Join this channel", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "trackingParams": "CBoQocYHGAIiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_OUTLINE", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "state": "BUTTON_VIEW_MODEL_STATE_ACTIVE", + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "CBoQocYHGAIiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "logFlowLoggingEventCommand": { + "flowEventType": 1, + "flowEventNamespace": "FLOW_EVENT_NAMESPACE_SPONSORSHIPS_PURCHASE", + "flowType": "FLOW_TYPE_SPONSORSHIPS_PURCHASE", + "flowEventMetadata": { + "sponsorshipsPurchaseContext": { + "joinMethod": "SPONSORSHIPS_JOIN_METHOD_CHANNEL_PAGE_BUTTON" + } + } + } + } + }, + "targetId": "sponsorships-button", + "loggingDirectives": { + "trackingParams": "CBoQocYHGAIiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 123681, + "veCounter": 202444337 + }, + "enableDisplayloggerExperiment": true + } + } + } + ] + } + ], + "minimumRowHeight": 44, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBkQjqULIhMIzZq52aDOiQMVllx6BR3dbCYg", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 184974, + "veCounter": 202444336 + } + } + } + } + } + }, + "description": { + "descriptionPreviewViewModel": { + "description": { + "content": "NO SCRIPT, NO FEAR, ALL OPINION " + }, + "maxLines": 2, + "truncationText": { + "content": "...more", + "styleRuns": [ + { + "startIndex": 0, + "length": 7, + "weight": 500 + } + ] + }, + "alwaysShowTruncationText": true, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBQQr_4KIhMIzZq52aDOiQMVllx6BR3dbCYg", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 180015, + "veCounter": 202444335 + } + } + }, + "accessibilityContext": { + "label": "Description. NO SCRIPT, NO FEAR, ALL OPINION...tap for more." + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBQQr_4KIhMIzZq52aDOiQMVllx6BR3dbCYg", + "showEngagementPanelEndpoint": { + "engagementPanel": { + "engagementPanelSectionListRenderer": { + "header": { + "engagementPanelTitleHeaderRenderer": { + "title": { + "simpleText": "About" + }, + "visibilityButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "CLOSE" + }, + "accessibility": { + "label": "Close" + }, + "trackingParams": "CBgQ8FsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "accessibilityData": { + "accessibilityData": { + "label": "Close" + } + }, + "command": { + "clickTrackingParams": "CBgQ8FsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "changeEngagementPanelVisibilityAction": { + "targetId": "6822294f-0000-2cdd-9a5b-d4f547f0397c", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN" + } + } + } + }, + "trackingParams": "CBUQ040EIhMIzZq52aDOiQMVllx6BR3dbCYg" + } + }, + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CBcQuy8YACITCM2audmgzokDFZZcegUd3WwmIA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJgEhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1EaRDhnWXJHaW1hQVNZS0pEWTRNakl5T1RVd0xUQXdNREF0TW1Oa1pDMDVZVFZpTFdRMFpqVTBOMll3TXprM1l3JTNEJTNE", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE" + } + } + } + } + ], + "trackingParams": "CBcQuy8YACITCM2audmgzokDFZZcegUd3WwmIA==", + "sectionIdentifier": "68222950-0000-2cdd-9a5b-d4f547f0397c", + "targetId": "68222950-0000-2cdd-9a5b-d4f547f0397c" + } + } + ], + "trackingParams": "CBYQui8iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "scrollPaneStyle": { + "scrollable": true + } + } + }, + "targetId": "6822294f-0000-2cdd-9a5b-d4f547f0397c", + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "6822294f-0000-2cdd-9a5b-d4f547f0397c" + } + } + }, + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "6822294f-0000-2cdd-9a5b-d4f547f0397c" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + } + } + } + } + } + }, + "attribution": { + "attributionViewModel": { + "text": { + "content": "eevblog.com", + "commandRuns": [ + { + "startIndex": 0, + "length": 11, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CA8QjaULIhMIzZq52aDOiQMVllx6BR3dbCYg", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=channel_header&redir_token=QUFFLUhqbm53VzBBc0pBbHVZLXpGTXYwTjcwV0dEVUZ2d3xBQ3Jtc0tuLXo0UG1KQjFNeHF3ZDlUZVp4QlhyZ1BwNTY0UERnd05NNWRoNjVUNHhweXBLYWlrd1ZsRFBvV3JhNUFvSmZxQ1M0by1hQ1Z5RW0wdjFNV01YQXBpZFRMYkFtZjlaZXJhWlVRRVhCNlN5ZmZSeTFsWQ&q=http%3A%2F%2Fwww.eevblog.com", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/redirect?event=channel_header&redir_token=QUFFLUhqbm53VzBBc0pBbHVZLXpGTXYwTjcwV0dEVUZ2d3xBQ3Jtc0tuLXo0UG1KQjFNeHF3ZDlUZVp4QlhyZ1BwNTY0UERnd05NNWRoNjVUNHhweXBLYWlrd1ZsRFBvV3JhNUFvSmZxQ1M0by1hQ1Z5RW0wdjFNV01YQXBpZFRMYkFtZjlaZXJhWlVRRVhCNlN5ZmZSeTFsWQ&q=http%3A%2F%2Fwww.eevblog.com", + "target": "TARGET_NEW_WINDOW" + } + } + } + } + ], + "styleRuns": [ + { + "weightLabel": "FONT_WEIGHT_NORMAL", + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4282296063 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4278607828 + } + ] + } + } + } + ] + }, + "suffix": { + "content": "and 12 more links", + "commandRuns": [ + { + "startIndex": 0, + "length": 17, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CA8QjaULIhMIzZq52aDOiQMVllx6BR3dbCYg", + "showEngagementPanelEndpoint": { + "engagementPanel": { + "engagementPanelSectionListRenderer": { + "header": { + "engagementPanelTitleHeaderRenderer": { + "title": { + "simpleText": "About" + }, + "visibilityButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "CLOSE" + }, + "accessibility": { + "label": "Close" + }, + "trackingParams": "CBMQ8FsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "accessibilityData": { + "accessibilityData": { + "label": "Close" + } + }, + "command": { + "clickTrackingParams": "CBMQ8FsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "changeEngagementPanelVisibilityAction": { + "targetId": "68222951-0000-2cdd-9a5b-d4f547f0397c", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN" + } + } + } + }, + "trackingParams": "CBAQ040EIhMIzZq52aDOiQMVllx6BR3dbCYg" + } + }, + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CBIQuy8YACITCM2audmgzokDFZZcegUd3WwmIA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJgEhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1EaRDhnWXJHaW1hQVNZS0pEWTRNakl5T1RVeUxUQXdNREF0TW1Oa1pDMDVZVFZpTFdRMFpqVTBOMll3TXprM1l3JTNEJTNE", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE" + } + } + } + } + ], + "trackingParams": "CBIQuy8YACITCM2audmgzokDFZZcegUd3WwmIA==", + "sectionIdentifier": "68222952-0000-2cdd-9a5b-d4f547f0397c", + "targetId": "68222952-0000-2cdd-9a5b-d4f547f0397c" + } + } + ], + "trackingParams": "CBEQui8iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "scrollPaneStyle": { + "scrollable": true + } + } + }, + "targetId": "68222951-0000-2cdd-9a5b-d4f547f0397c", + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "68222951-0000-2cdd-9a5b-d4f547f0397c" + } + } + }, + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "68222951-0000-2cdd-9a5b-d4f547f0397c" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + } + } + } + ], + "styleRuns": [ + { + "fontName": "", + "fontSize": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CA8QjaULIhMIzZq52aDOiQMVllx6BR3dbCYg", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 184973, + "veCounter": 202444334 + } + } + } + } + } + }, + "banner": { + "imageBannerViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 1060, + "height": 175 + }, + { + "url": "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1138-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 1138, + "height": 188 + }, + { + "url": "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1707-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 1707, + "height": 283 + }, + { + "url": "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2120-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 2120, + "height": 351 + }, + { + "url": "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2276-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 2276, + "height": 377 + }, + { + "url": "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 2560, + "height": 424 + } + ] + }, + "style": "IMAGE_BANNER_STYLE_INSET", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CA4QnfILIhMIzZq52aDOiQMVllx6BR3dbCYg", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 194845, + "veCounter": 202444333 + } + } + } + } + } + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CA0Qot8KIhMIzZq52aDOiQMVllx6BR3dbCYg", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176034, + "veCounter": 202444332 + } + } + } + } + } + } + } + }, + "metadata": { + "channelMetadataRenderer": { + "title": "EEVblog", + "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", + "rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UC2DjFE7Xf11URZqWBigcVOQ", + "externalId": "UC2DjFE7Xf11URZqWBigcVOQ", + "keywords": "electronics engineering maker hacker design circuit hardware pic atmel oscilloscope multimeter diy hobby review teardown microcontroller arduino video blog tutorial how-to interview rant industry news mailbag \"dumpster diving\" debunking", + "ownerUrls": [ + "http://www.youtube.com/@EEVblog" + ], + "avatar": { + "thumbnails": [ + { + "url": "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s900-c-k-c0x00ffffff-no-rj", + "width": 900, + "height": 900 + } + ] + }, + "channelUrl": "https://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ", + "isFamilySafe": true, + "facebookProfileId": "EEVblog", + "availableCountryCodes": [ + "AU", + "WS", + "MQ", + "SJ", + "LS", + "TG", + "US", + "AE", + "BO", + "JO", + "MA", + "CK", + "UM", + "AM", + "DK", + "IQ", + "SZ", + "TT", + "GF", + "MU", + "FR", + "HR", + "BT", + "JE", + "MG", + "FK", + "SN", + "IL", + "TR", + "HM", + "PW", + "GY", + "SK", + "TW", + "BV", + "NG", + "PE", + "CR", + "KG", + "BG", + "AW", + "ID", + "KP", + "CW", + "SR", + "PH", + "SC", + "CZ", + "MK", + "MC", + "LR", + "GE", + "GW", + "BL", + "QA", + "GM", + "BW", + "BD", + "MV", + "NA", + "SE", + "GS", + "CX", + "ZA", + "SI", + "GB", + "DM", + "PS", + "MX", + "CU", + "KN", + "AZ", + "KW", + "SL", + "AO", + "BS", + "BY", + "GG", + "BQ", + "MY", + "CY", + "IO", + "GA", + "RS", + "CL", + "SO", + "YE", + "GL", + "GH", + "CO", + "LB", + "KY", + "BI", + "SB", + "PK", + "GI", + "KM", + "LT", + "SG", + "CF", + "NF", + "MD", + "MT", + "TH", + "RE", + "TL", + "SH", + "MS", + "PA", + "MW", + "PN", + "LK", + "VA", + "NL", + "HK", + "ME", + "EE", + "MH", + "HT", + "IT", + "CC", + "IR", + "VE", + "FJ", + "HN", + "ES", + "BE", + "AL", + "KH", + "KR", + "MM", + "LY", + "BR", + "TK", + "NO", + "PT", + "AF", + "BJ", + "BZ", + "AS", + "KE", + "CI", + "CG", + "LA", + "YT", + "AI", + "JP", + "KZ", + "TF", + "GD", + "RU", + "AG", + "GU", + "LU", + "PM", + "AD", + "MF", + "TM", + "MN", + "NU", + "PL", + "NR", + "EH", + "NP", + "NE", + "SA", + "SY", + "AQ", + "TN", + "FM", + "AX", + "UG", + "RO", + "GR", + "FI", + "VU", + "GT", + "UY", + "MP", + "EG", + "ZM", + "HU", + "KI", + "ZW", + "CH", + "GP", + "VC", + "SV", + "AT", + "DO", + "PG", + "SS", + "TO", + "BA", + "WF", + "DJ", + "LV", + "VI", + "ST", + "PF", + "MZ", + "TJ", + "UA", + "ET", + "NC", + "RW", + "BF", + "IE", + "IM", + "CD", + "GQ", + "SX", + "EC", + "SM", + "PY", + "CV", + "AR", + "JM", + "LI", + "ER", + "OM", + "PR", + "TD", + "MR", + "MO", + "BM", + "SD", + "BB", + "DZ", + "GN", + "TV", + "VG", + "TC", + "VN", + "IN", + "TZ", + "CN", + "ML", + "NZ", + "IS", + "BN", + "NI", + "DE", + "LC", + "CA", + "CM", + "UZ", + "FO", + "BH" + ], + "androidDeepLink": "android-app://com.google.android.youtube/http/www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ", + "androidAppindexingLink": "android-app://com.google.android.youtube/http/www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ", + "iosAppindexingLink": "ios-app://544007664/vnd.youtube/www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ", + "vanityChannelUrl": "http://www.youtube.com/@EEVblog" + } + }, + "trackingParams": "CAAQhGciEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "topbar": { + "desktopTopbarRenderer": { + "logo": { + "topbarLogoRenderer": { + "iconImage": { + "iconType": "YOUTUBE_LOGO" + }, + "tooltipText": { + "runs": [ + { + "text": "YouTube Home" + } + ] + }, + "endpoint": { + "clickTrackingParams": "CAwQsV4iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 3854, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "FEwhat_to_watch" + } + }, + "trackingParams": "CAwQsV4iEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "overrideEntityKey": "EgZ0b3BiYXIg9QEoAQ%3D%3D" + } + }, + "searchbox": { + "fusionSearchboxRenderer": { + "icon": { + "iconType": "SEARCH" + }, + "placeholderText": { + "runs": [ + { + "text": "Search" + } + ] + }, + "config": { + "webSearchboxConfig": { + "requestLanguage": "en", + "requestDomain": "us", + "hasOnscreenKeyboard": false, + "focusSearchbox": true + } + }, + "trackingParams": "CAoQ7VAiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "searchEndpoint": { + "clickTrackingParams": "CAoQ7VAiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/results?search_query=", + "webPageType": "WEB_PAGE_TYPE_SEARCH", + "rootVe": 4724 + } + }, + "searchEndpoint": { + "query": "" + } + }, + "clearButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "CLOSE" + }, + "trackingParams": "CAsQ8FsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "accessibilityData": { + "accessibilityData": { + "label": "Clear search query" + } + } + } + } + } + }, + "trackingParams": "CAEQq6wBIhMIzZq52aDOiQMVllx6BR3dbCYg", + "topbarButtons": [ + { + "topbarMenuButtonRenderer": { + "icon": { + "iconType": "MORE_VERT" + }, + "menuRequest": { + "clickTrackingParams": "CAgQ_qsBGAAiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/account/account_menu" + } + }, + "signalServiceEndpoint": { + "signal": "GET_ACCOUNT_MENU", + "actions": [ + { + "clickTrackingParams": "CAgQ_qsBGAAiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "openPopupAction": { + "popup": { + "multiPageMenuRenderer": { + "trackingParams": "CAkQ_6sBIhMIzZq52aDOiQMVllx6BR3dbCYg", + "style": "MULTI_PAGE_MENU_STYLE_TYPE_SYSTEM", + "showLoadingSpinner": true + } + }, + "popupType": "DROPDOWN", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CAgQ_qsBGAAiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "accessibility": { + "accessibilityData": { + "label": "Settings" + } + }, + "tooltip": "Settings", + "style": "STYLE_DEFAULT" + } + }, + { + "buttonRenderer": { + "style": "STYLE_SUGGESTIVE", + "size": "SIZE_SMALL", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "icon": { + "iconType": "AVATAR_LOGGED_OUT" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAcQ1IAEGAEiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "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%3Dhttps%253A%252F%252Fwww.youtube.com%252Fyoutubei%252Fv1%252Fbrowse%253FprettyPrint%253Dfalse&hl=en&ec=65620", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "idamTag": "65620" + } + }, + "trackingParams": "CAcQ1IAEGAEiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "targetId": "topbar-signin" + } + } + ], + "hotkeyDialog": { + "hotkeyDialogRenderer": { + "title": { + "runs": [ + { + "text": "Keyboard shortcuts" + } + ] + }, + "sections": [ + { + "hotkeyDialogSectionRenderer": { + "title": { + "runs": [ + { + "text": "Playback" + } + ] + }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle play/pause" + } + ] + }, + "hotkey": "k" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rewind 10 seconds" + } + ] + }, + "hotkey": "j" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Fast forward 10 seconds" + } + ] + }, + "hotkey": "l" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Previous video" + } + ] + }, + "hotkey": "P (SHIFT+p)" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Next video" + } + ] + }, + "hotkey": "N (SHIFT+n)" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Previous frame (while paused)" + } + ] + }, + "hotkey": ",", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Comma" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Next frame (while paused)" + } + ] + }, + "hotkey": ".", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Period" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Decrease playback rate" + } + ] + }, + "hotkey": "< (SHIFT+,)", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Less than or SHIFT + comma" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Increase playback rate" + } + ] + }, + "hotkey": "> (SHIFT+.)", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Greater than or SHIFT + period" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Seek to specific point in the video (7 advances to 70% of duration)" + } + ] + }, + "hotkey": "0..9" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Seek to previous chapter" + } + ] + }, + "hotkey": "CONTROL + ←" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Seek to next chapter" + } + ] + }, + "hotkey": "CONTROL + →" + } + } + ] + } + }, + { + "hotkeyDialogSectionRenderer": { + "title": { + "runs": [ + { + "text": "General" + } + ] + }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle full screen" + } + ] + }, + "hotkey": "f" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle theater mode" + } + ] + }, + "hotkey": "t" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle miniplayer" + } + ] + }, + "hotkey": "i" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Close miniplayer or current dialog" + } + ] + }, + "hotkey": "ESCAPE" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle mute" + } + ] + }, + "hotkey": "m" + } + } + ] + } + }, + { + "hotkeyDialogSectionRenderer": { + "title": { + "runs": [ + { + "text": "Subtitles and closed captions" + } + ] + }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "If the video supports captions, toggle captions ON/OFF" + } + ] + }, + "hotkey": "c" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rotate through different text opacity levels" + } + ] + }, + "hotkey": "o" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rotate through different window opacity levels" + } + ] + }, + "hotkey": "w" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rotate through font sizes (increasing)" + } + ] + }, + "hotkey": "+" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rotate through font sizes (decreasing)" + } + ] + }, + "hotkey": "-", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Minus" + } + } + } + } + ] + } + }, + { + "hotkeyDialogSectionRenderer": { + "title": { + "runs": [ + { + "text": "Spherical Videos" + } + ] + }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Pan up" + } + ] + }, + "hotkey": "w" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Pan left" + } + ] + }, + "hotkey": "a" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Pan down" + } + ] + }, + "hotkey": "s" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Pan right" + } + ] + }, + "hotkey": "d" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Zoom in" + } + ] + }, + "hotkey": "+ on numpad or ]", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Plus on number pad or right bracket" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Zoom out" + } + ] + }, + "hotkey": "- on numpad or [", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Minus on number pad or left bracket" + } + } + } + } + ] + } + } + ], + "dismissButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Dismiss" + } + ] + }, + "trackingParams": "CAYQ8FsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=" + } + }, + "trackingParams": "CAUQteYDIhMIzZq52aDOiQMVllx6BR3dbCYg" + } + }, + "backButton": { + "buttonRenderer": { + "trackingParams": "CAQQvIYDIhMIzZq52aDOiQMVllx6BR3dbCYg", + "command": { + "clickTrackingParams": "CAQQvIYDIhMIzZq52aDOiQMVllx6BR3dbCYg", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAQQvIYDIhMIzZq52aDOiQMVllx6BR3dbCYg", + "signalAction": { + "signal": "HISTORY_BACK" + } + } + ] + } + } + } + }, + "forwardButton": { + "buttonRenderer": { + "trackingParams": "CAMQvYYDIhMIzZq52aDOiQMVllx6BR3dbCYg", + "command": { + "clickTrackingParams": "CAMQvYYDIhMIzZq52aDOiQMVllx6BR3dbCYg", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAMQvYYDIhMIzZq52aDOiQMVllx6BR3dbCYg", + "signalAction": { + "signal": "HISTORY_FORWARD" + } + } + ] + } + } + } + }, + "a11ySkipNavigationButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Skip navigation" + } + ] + }, + "trackingParams": "CAIQ8FsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "command": { + "clickTrackingParams": "CAIQ8FsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAIQ8FsiEwjNmrnZoM6JAxWWXHoFHd1sJiA=", + "signalAction": { + "signal": "SKIP_NAVIGATION" + } + } + ] + } + } + } + } + } + }, + "microformat": { + "microformatDataRenderer": { + "urlCanonical": "https://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ", + "title": "EEVblog", + "description": "NO SCRIPT, NO FEAR, ALL OPINION An off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers Hosted by...", + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s200-c-k-c0x00ffffff-no-rj?days_since_epoch=20036", + "width": 200, + "height": 200 + } + ] + }, + "siteName": "YouTube", + "appName": "YouTube", + "androidPackage": "com.google.android.youtube", + "iosAppStoreId": "544007664", + "iosAppArguments": "https://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ", + "ogType": "yt-fb-app:channel", + "urlApplinksWeb": "https://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ?feature=applinks", + "urlApplinksIos": "vnd.youtube://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ?feature=applinks", + "urlApplinksAndroid": "vnd.youtube://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ?feature=applinks", + "urlTwitterIos": "vnd.youtube://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ?feature=twitter-deep-link", + "urlTwitterAndroid": "vnd.youtube://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ?feature=twitter-deep-link", + "twitterCardType": "summary", + "twitterSiteHandle": "@YouTube", + "schemaDotOrgType": "http://schema.org/http://schema.org/YoutubeChannelV2", + "noindex": false, + "unlisted": false, + "familySafe": true, + "tags": [ + "electronics", + "engineering", + "maker", + "hacker", + "design", + "circuit", + "hardware", + "pic", + "atmel", + "oscilloscope", + "multimeter", + "diy", + "hobby", + "review", + "teardown", + "microcontroller", + "arduino", + "video", + "blog", + "tutorial", + "how-to", + "interview", + "rant", + "industry", + "news", + "mailbag", + "dumpster diving", + "debunking" + ], + "availableCountries": [ + "AU", + "WS", + "MQ", + "SJ", + "LS", + "TG", + "US", + "AE", + "BO", + "JO", + "MA", + "CK", + "UM", + "AM", + "DK", + "IQ", + "SZ", + "TT", + "GF", + "MU", + "FR", + "HR", + "BT", + "JE", + "MG", + "FK", + "SN", + "IL", + "TR", + "HM", + "PW", + "GY", + "SK", + "TW", + "BV", + "NG", + "PE", + "CR", + "KG", + "BG", + "AW", + "ID", + "KP", + "CW", + "SR", + "PH", + "SC", + "CZ", + "MK", + "MC", + "LR", + "GE", + "GW", + "BL", + "QA", + "GM", + "BW", + "BD", + "MV", + "NA", + "SE", + "GS", + "CX", + "ZA", + "SI", + "GB", + "DM", + "PS", + "MX", + "CU", + "KN", + "AZ", + "KW", + "SL", + "AO", + "BS", + "BY", + "GG", + "BQ", + "MY", + "CY", + "IO", + "GA", + "RS", + "CL", + "SO", + "YE", + "GL", + "GH", + "CO", + "LB", + "KY", + "BI", + "SB", + "PK", + "GI", + "KM", + "LT", + "SG", + "CF", + "NF", + "MD", + "MT", + "TH", + "RE", + "TL", + "SH", + "MS", + "PA", + "MW", + "PN", + "LK", + "VA", + "NL", + "HK", + "ME", + "EE", + "MH", + "HT", + "IT", + "CC", + "IR", + "VE", + "FJ", + "HN", + "ES", + "BE", + "AL", + "KH", + "KR", + "MM", + "LY", + "BR", + "TK", + "NO", + "PT", + "AF", + "BJ", + "BZ", + "AS", + "KE", + "CI", + "CG", + "LA", + "YT", + "AI", + "JP", + "KZ", + "TF", + "GD", + "RU", + "AG", + "GU", + "LU", + "PM", + "AD", + "MF", + "TM", + "MN", + "NU", + "PL", + "NR", + "EH", + "NP", + "NE", + "SA", + "SY", + "AQ", + "TN", + "FM", + "AX", + "UG", + "RO", + "GR", + "FI", + "VU", + "GT", + "UY", + "MP", + "EG", + "ZM", + "HU", + "KI", + "ZW", + "CH", + "GP", + "VC", + "SV", + "AT", + "DO", + "PG", + "SS", + "TO", + "BA", + "WF", + "DJ", + "LV", + "VI", + "ST", + "PF", + "MZ", + "TJ", + "UA", + "ET", + "NC", + "RW", + "BF", + "IE", + "IM", + "CD", + "GQ", + "SX", + "EC", + "SM", + "PY", + "CV", + "AR", + "JM", + "LI", + "ER", + "OM", + "PR", + "TD", + "MR", + "MO", + "BM", + "SD", + "BB", + "DZ", + "GN", + "TV", + "VG", + "TC", + "VN", + "IN", + "TZ", + "CN", + "ML", + "NZ", + "IS", + "BN", + "NI", + "DE", + "LC", + "CA", + "CM", + "UZ", + "FO", + "BH" + ], + "linkAlternates": [ + { + "hrefUrl": "https://m.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ" + }, + { + "hrefUrl": "android-app://com.google.android.youtube/http/youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ" + }, + { + "hrefUrl": "ios-app://544007664/http/youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ" + } + ] + } + } +} diff --git a/testfiles/channel/channel_playlists.json b/testfiles/channel/channel_playlists_base.json similarity index 100% rename from testfiles/channel/channel_playlists.json rename to testfiles/channel/channel_playlists_base.json From badb3aef8249315909160b8ff73df3019f07cf97 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 9 Nov 2024 05:14:41 +0100 Subject: [PATCH 024/191] fix!: serde: lowercase Verification enum --- ...annel__tests__map_channel_livestreams.snap | 62 +++--- ...map_channel_playlists_20241109_lockup.snap | 62 +++--- ...el__tests__map_channel_playlists_base.snap | 62 +++--- ...t__channel__tests__map_channel_shorts.snap | 98 ++++----- ...ap_channel_shorts_20240129_pageheader.snap | 98 ++++----- ...s__map_channel_shorts_20240910_lockup.snap | 98 ++++----- ..._map_channel_videos_20221011_richgrid.snap | 62 +++--- ...map_channel_videos_20221011_richgrid2.snap | 62 +++--- ...map_channel_videos_20230415_coachella.snap | 62 +++--- ...p_channel_videos_20240324_pageheader2.snap | 62 +++--- ...annel__tests__map_channel_videos_base.snap | 62 +++--- ...nnel__tests__map_channel_videos_empty.snap | 2 +- ...annel__tests__map_channel_videos_live.snap | 44 ++-- ...nnel__tests__map_channel_videos_music.snap | 2 +- ...nel__tests__map_channel_videos_shorts.snap | 62 +++--- ...l__tests__map_channel_videos_upcoming.snap | 62 +++--- ...ient__pagination__tests__map_playlist.snap | 200 +++++++++--------- ...agination__tests__map_recommendations.snap | 38 ++-- ...client__pagination__tests__map_search.snap | 32 +-- ...map_playlist_data_20241011_pageheader.snap | 20 +- ...aylist__tests__map_playlist_data_live.snap | 200 +++++++++--------- ...aylist__tests__map_playlist_data_long.snap | 200 +++++++++--------- ...ist__tests__map_playlist_data_nomusic.snap | 132 ++++++------ ...ylist__tests__map_playlist_data_short.snap | 176 +++++++-------- ...p_search_20221121_AB3_channel_handles.snap | 40 ++-- ...nt__search__tests__map_search_default.snap | 40 ++-- ...__search__tests__map_search_playlists.snap | 40 ++-- ...rending_20230501_page_header_renderer.snap | 60 +++--- ...t__trends__tests__map_trending_videos.snap | 196 ++++++++--------- ...s__map_comments_20240401_frameworkupd.snap | 40 ++-- ..._comments_20240401_frameworkupd_reply.snap | 20 +- ...o_details__tests__map_comments_latest.snap | 36 ++-- ...ideo_details__tests__map_comments_top.snap | 40 ++-- ...s__map_video_details_20220924_newdesc.snap | 36 ++-- ...deo_details_20221011_new_continuation.snap | 40 ++-- ...s__map_video_details_20221011_rec_isr.snap | 42 ++-- ...sts__map_video_details_20231103_likes.snap | 42 ++-- ...ils__tests__map_video_details_agegate.snap | 2 +- ...ls__tests__map_video_details_ccommons.snap | 40 ++-- ...ls__tests__map_video_details_chapters.snap | 40 ++-- ...etails__tests__map_video_details_live.snap | 42 ++-- ...tails__tests__map_video_details_music.snap | 30 +-- ..._details__tests__map_video_details_mv.snap | 38 ++-- src/model/mod.rs | 1 + 44 files changed, 1413 insertions(+), 1412 deletions(-) diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_livestreams.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_livestreams.snap index a2c19fa..5b8351b 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_livestreams.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_livestreams.snap @@ -25,7 +25,7 @@ Channel( height: 176, ), ], - verification: Verified, + 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", @@ -125,7 +125,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -166,7 +166,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -207,7 +207,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -248,7 +248,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -289,7 +289,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -330,7 +330,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -371,7 +371,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -412,7 +412,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -453,7 +453,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -494,7 +494,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -535,7 +535,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -576,7 +576,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -617,7 +617,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -658,7 +658,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -699,7 +699,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -740,7 +740,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -781,7 +781,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -822,7 +822,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -863,7 +863,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -904,7 +904,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -945,7 +945,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -986,7 +986,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -1027,7 +1027,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -1068,7 +1068,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -1109,7 +1109,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -1150,7 +1150,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -1191,7 +1191,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -1232,7 +1232,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -1273,7 +1273,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", @@ -1314,7 +1314,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(884000), )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_20241109_lockup.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_20241109_lockup.snap index 54203a7..3ae88c8 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_20241109_lockup.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_20241109_lockup.snap @@ -25,7 +25,7 @@ Channel( height: 160, ), ], - verification: Verified, + 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", @@ -109,7 +109,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(5), @@ -128,7 +128,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(11), @@ -147,7 +147,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(4), @@ -166,7 +166,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(22), @@ -185,7 +185,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(5), @@ -204,7 +204,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(3), @@ -223,7 +223,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(1), @@ -242,7 +242,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(1), @@ -261,7 +261,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(4), @@ -280,7 +280,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(3), @@ -299,7 +299,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(1), @@ -318,7 +318,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(9), @@ -337,7 +337,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(3), @@ -356,7 +356,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(6), @@ -375,7 +375,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(23), @@ -394,7 +394,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(3), @@ -413,7 +413,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(8), @@ -432,7 +432,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(14), @@ -451,7 +451,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(9), @@ -470,7 +470,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(9), @@ -489,7 +489,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(3), @@ -508,7 +508,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(8), @@ -527,7 +527,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(2), @@ -546,7 +546,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(3), @@ -565,7 +565,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(10), @@ -584,7 +584,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(1), @@ -603,7 +603,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(9), @@ -622,7 +622,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(16), @@ -641,7 +641,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(7), @@ -660,7 +660,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(952000), )), video_count: Some(6), diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_base.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_base.snap index 7558c9f..8db29d7 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_base.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_base.snap @@ -25,7 +25,7 @@ Channel( height: 176, ), ], - verification: Verified, + 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", @@ -109,7 +109,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(2), @@ -128,7 +128,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(1), @@ -147,7 +147,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(9), @@ -166,7 +166,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(2), @@ -185,7 +185,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(4), @@ -204,7 +204,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(18), @@ -223,7 +223,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(3), @@ -242,7 +242,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(8), @@ -261,7 +261,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(13), @@ -280,7 +280,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(9), @@ -299,7 +299,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(7), @@ -318,7 +318,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(3), @@ -337,7 +337,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(8), @@ -356,7 +356,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(2), @@ -375,7 +375,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(3), @@ -394,7 +394,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(10), @@ -413,7 +413,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(1), @@ -432,7 +432,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(9), @@ -451,7 +451,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(16), @@ -470,7 +470,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(7), @@ -489,7 +489,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(6), @@ -508,7 +508,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(12), @@ -527,7 +527,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(1), @@ -546,7 +546,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(5), @@ -565,7 +565,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(2), @@ -584,7 +584,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(4), @@ -603,7 +603,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(1), @@ -622,7 +622,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(2), @@ -641,7 +641,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(9), @@ -660,7 +660,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(881000), )), video_count: Some(1), diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts.snap index 46c6acf..a3c43f1 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts.snap @@ -25,7 +25,7 @@ Channel( height: 176, ), ], - verification: Verified, + 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: [], banner: [ @@ -81,7 +81,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -107,7 +107,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -133,7 +133,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -159,7 +159,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -185,7 +185,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -211,7 +211,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -237,7 +237,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -263,7 +263,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -289,7 +289,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -315,7 +315,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -341,7 +341,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -367,7 +367,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -393,7 +393,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -419,7 +419,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -445,7 +445,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -471,7 +471,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -497,7 +497,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -523,7 +523,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -549,7 +549,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -575,7 +575,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -601,7 +601,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -627,7 +627,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -653,7 +653,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -679,7 +679,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -705,7 +705,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -731,7 +731,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -757,7 +757,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -783,7 +783,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -809,7 +809,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -835,7 +835,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -861,7 +861,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -887,7 +887,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -913,7 +913,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -939,7 +939,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -965,7 +965,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -991,7 +991,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -1017,7 +1017,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -1043,7 +1043,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -1069,7 +1069,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -1095,7 +1095,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -1121,7 +1121,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -1147,7 +1147,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -1173,7 +1173,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -1199,7 +1199,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -1225,7 +1225,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -1251,7 +1251,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -1277,7 +1277,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", @@ -1303,7 +1303,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3360000), )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts_20240129_pageheader.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts_20240129_pageheader.snap index 81a993a..110b56c 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts_20240129_pageheader.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts_20240129_pageheader.snap @@ -25,7 +25,7 @@ Channel( height: 160, ), ], - verification: Verified, + 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: [], banner: [ @@ -81,7 +81,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -107,7 +107,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -133,7 +133,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -159,7 +159,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -185,7 +185,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -211,7 +211,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -237,7 +237,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -263,7 +263,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -289,7 +289,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -315,7 +315,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -341,7 +341,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -367,7 +367,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -393,7 +393,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -419,7 +419,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -445,7 +445,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -471,7 +471,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -497,7 +497,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -523,7 +523,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -549,7 +549,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -575,7 +575,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -601,7 +601,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -627,7 +627,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -653,7 +653,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -679,7 +679,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -705,7 +705,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -731,7 +731,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -757,7 +757,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -783,7 +783,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -809,7 +809,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -835,7 +835,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -861,7 +861,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -887,7 +887,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -913,7 +913,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -939,7 +939,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -965,7 +965,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -991,7 +991,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -1017,7 +1017,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -1043,7 +1043,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -1069,7 +1069,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -1095,7 +1095,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -1121,7 +1121,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -1147,7 +1147,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -1173,7 +1173,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -1199,7 +1199,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -1225,7 +1225,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -1251,7 +1251,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -1277,7 +1277,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", @@ -1303,7 +1303,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3740000), )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts_20240910_lockup.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts_20240910_lockup.snap index 4fedc65..81ceacc 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts_20240910_lockup.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts_20240910_lockup.snap @@ -25,7 +25,7 @@ Channel( height: 160, ), ], - verification: Verified, + 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: [], banner: [ @@ -81,7 +81,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -107,7 +107,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -133,7 +133,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -159,7 +159,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -185,7 +185,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -211,7 +211,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -237,7 +237,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -263,7 +263,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -289,7 +289,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -315,7 +315,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -341,7 +341,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -367,7 +367,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -393,7 +393,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -419,7 +419,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -445,7 +445,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -471,7 +471,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -497,7 +497,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -523,7 +523,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -549,7 +549,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -575,7 +575,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -601,7 +601,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -627,7 +627,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -653,7 +653,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -679,7 +679,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -705,7 +705,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -731,7 +731,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -757,7 +757,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -783,7 +783,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -809,7 +809,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -835,7 +835,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -861,7 +861,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -887,7 +887,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -913,7 +913,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -939,7 +939,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -965,7 +965,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -991,7 +991,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -1017,7 +1017,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -1043,7 +1043,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -1069,7 +1069,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -1095,7 +1095,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -1121,7 +1121,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -1147,7 +1147,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -1173,7 +1173,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -1199,7 +1199,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -1225,7 +1225,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -1251,7 +1251,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -1277,7 +1277,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", @@ -1303,7 +1303,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(3970000), )), publish_date: "[date]", 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 7fd71af..ef15aba 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 @@ -25,7 +25,7 @@ Channel( height: 176, ), ], - verification: Verified, + 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: [], banner: [ @@ -96,7 +96,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -137,7 +137,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -178,7 +178,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -219,7 +219,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -260,7 +260,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -301,7 +301,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -342,7 +342,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -383,7 +383,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -424,7 +424,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -465,7 +465,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -506,7 +506,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -547,7 +547,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -588,7 +588,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -629,7 +629,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -670,7 +670,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -711,7 +711,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -752,7 +752,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -793,7 +793,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -834,7 +834,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -875,7 +875,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -916,7 +916,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -957,7 +957,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -998,7 +998,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -1039,7 +1039,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -1080,7 +1080,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -1121,7 +1121,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -1162,7 +1162,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -1203,7 +1203,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -1244,7 +1244,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", @@ -1285,7 +1285,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2930000), )), publish_date: "[date]", 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 09b224f..3f00326 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 @@ -25,7 +25,7 @@ Channel( height: 176, ), ], - verification: Verified, + 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", @@ -125,7 +125,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -166,7 +166,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -207,7 +207,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -248,7 +248,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -289,7 +289,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -330,7 +330,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -371,7 +371,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -412,7 +412,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -453,7 +453,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -494,7 +494,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -535,7 +535,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -576,7 +576,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -617,7 +617,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -658,7 +658,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -699,7 +699,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -740,7 +740,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -781,7 +781,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -822,7 +822,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -863,7 +863,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -904,7 +904,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -945,7 +945,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -986,7 +986,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -1027,7 +1027,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -1068,7 +1068,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -1109,7 +1109,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -1150,7 +1150,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -1191,7 +1191,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -1232,7 +1232,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -1273,7 +1273,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", @@ -1314,7 +1314,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(883000), )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20230415_coachella.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20230415_coachella.snap index 7279d2e..fc10d97 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20230415_coachella.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20230415_coachella.snap @@ -20,7 +20,7 @@ Channel( height: 176, ), ], - verification: Verified, + verification: verified, description: "April 14-16 & 21-23, 2023\n", tags: [ "coachella", @@ -70,7 +70,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -111,7 +111,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -152,7 +152,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -193,7 +193,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -234,7 +234,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -275,7 +275,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -316,7 +316,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -357,7 +357,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -398,7 +398,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -439,7 +439,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -480,7 +480,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -521,7 +521,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -562,7 +562,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -603,7 +603,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -644,7 +644,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -685,7 +685,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -726,7 +726,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -767,7 +767,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -808,7 +808,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -849,7 +849,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -890,7 +890,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -931,7 +931,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -972,7 +972,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -1013,7 +1013,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -1054,7 +1054,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -1095,7 +1095,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -1136,7 +1136,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -1177,7 +1177,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -1218,7 +1218,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", @@ -1259,7 +1259,7 @@ Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2710000), )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20240324_pageheader2.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20240324_pageheader2.snap index 96428f6..2d7ebad 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20240324_pageheader2.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20240324_pageheader2.snap @@ -25,7 +25,7 @@ Channel( height: 160, ), ], - verification: Verified, + 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", @@ -125,7 +125,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -166,7 +166,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -207,7 +207,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -248,7 +248,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -289,7 +289,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -330,7 +330,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -371,7 +371,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -412,7 +412,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -453,7 +453,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -494,7 +494,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -535,7 +535,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -576,7 +576,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -617,7 +617,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -658,7 +658,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -699,7 +699,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -740,7 +740,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -781,7 +781,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -822,7 +822,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -863,7 +863,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -904,7 +904,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -945,7 +945,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -986,7 +986,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -1027,7 +1027,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -1068,7 +1068,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -1109,7 +1109,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -1150,7 +1150,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -1191,7 +1191,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -1232,7 +1232,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -1273,7 +1273,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", @@ -1314,7 +1314,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(933000), )), publish_date: "[date]", 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 53e191e..06ec971 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 @@ -25,7 +25,7 @@ Channel( height: 176, ), ], - verification: Verified, + 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", @@ -125,7 +125,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -166,7 +166,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -207,7 +207,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -248,7 +248,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -289,7 +289,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -330,7 +330,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -371,7 +371,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -412,7 +412,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -453,7 +453,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -494,7 +494,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -535,7 +535,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -576,7 +576,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -617,7 +617,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -658,7 +658,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -699,7 +699,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -740,7 +740,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -781,7 +781,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -822,7 +822,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -863,7 +863,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -904,7 +904,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -945,7 +945,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -986,7 +986,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -1027,7 +1027,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -1068,7 +1068,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -1109,7 +1109,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -1150,7 +1150,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -1191,7 +1191,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -1232,7 +1232,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -1273,7 +1273,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", @@ -1314,7 +1314,7 @@ Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(880000), )), publish_date: "[date]", 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 8a490a0..7c54419 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 @@ -25,7 +25,7 @@ Channel( height: 176, ), ], - verification: None, + verification: none, description: "", tags: [], banner: [], 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 fdafcc3..3e34512 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 @@ -25,7 +25,7 @@ Channel( height: 176, ), ], - verification: Verified, + 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", @@ -109,7 +109,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -150,7 +150,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -191,7 +191,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -232,7 +232,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -273,7 +273,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -314,7 +314,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -355,7 +355,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -396,7 +396,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -437,7 +437,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -478,7 +478,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -519,7 +519,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -560,7 +560,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -601,7 +601,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -642,7 +642,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -683,7 +683,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -724,7 +724,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -765,7 +765,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -806,7 +806,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -847,7 +847,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -888,7 +888,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", @@ -929,7 +929,7 @@ Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(760000), )), publish_date: "[date]", 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 0d4a4d1..8e51184 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 @@ -25,7 +25,7 @@ Channel( height: 176, ), ], - verification: None, + verification: none, description: "", tags: [], banner: [ 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 c655530..0452369 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 @@ -25,7 +25,7 @@ Channel( height: 176, ), ], - verification: Verified, + 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: [], banner: [ @@ -81,7 +81,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -107,7 +107,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -148,7 +148,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -174,7 +174,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -200,7 +200,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -226,7 +226,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -267,7 +267,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -293,7 +293,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -319,7 +319,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -345,7 +345,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -386,7 +386,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -412,7 +412,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -453,7 +453,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -479,7 +479,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -505,7 +505,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -531,7 +531,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -557,7 +557,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -583,7 +583,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -609,7 +609,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -635,7 +635,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -676,7 +676,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -702,7 +702,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -728,7 +728,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -754,7 +754,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -780,7 +780,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -806,7 +806,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -832,7 +832,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -858,7 +858,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -899,7 +899,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", @@ -925,7 +925,7 @@ Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(2840000), )), publish_date: "[date]", 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 2b5a675..e559ac3 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 @@ -25,7 +25,7 @@ Channel( height: 176, ), ], - verification: Verified, + verification: verified, description: "BRAND NEW SECOND CHANNEL: https://youtube.com/channel/UCcsQYra-bISsFxNqnd6Javw\n\nJoin my Discord: https://discord.gg/2YcarWsc8S\n", tags: [ "politics", @@ -113,7 +113,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: Some("2022-09-27T16:00:00Z"), @@ -154,7 +154,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -195,7 +195,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -236,7 +236,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -277,7 +277,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -318,7 +318,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -359,7 +359,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -400,7 +400,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -441,7 +441,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -482,7 +482,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -523,7 +523,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -564,7 +564,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -605,7 +605,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -646,7 +646,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -687,7 +687,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -728,7 +728,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -769,7 +769,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -810,7 +810,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -851,7 +851,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -892,7 +892,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -933,7 +933,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -974,7 +974,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -1015,7 +1015,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -1056,7 +1056,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -1097,7 +1097,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -1138,7 +1138,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -1179,7 +1179,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -1220,7 +1220,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -1261,7 +1261,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", @@ -1302,7 +1302,7 @@ Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", avatar: [], - verification: Verified, + verification: verified, subscriber_count: Some(947000), )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist.snap index eb0f46c..5e7e739 100644 --- a/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist.snap @@ -35,7 +35,7 @@ Paginator( id: "UCDLPHv0SrvyUzct8UYQ9R_g", name: "KMNGANG", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -76,7 +76,7 @@ Paginator( id: "UCDLPHv0SrvyUzct8UYQ9R_g", name: "KMNGANG", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -117,7 +117,7 @@ Paginator( id: "UCDbDbm3v-MAqL4IPR2wIA9A", name: "Hiphop.de", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -158,7 +158,7 @@ Paginator( id: "UCIgCb1dYprH140Ds0mgeAUA", name: "Kontra K", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -199,7 +199,7 @@ Paginator( id: "UCDLPHv0SrvyUzct8UYQ9R_g", name: "KMNGANG", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -240,7 +240,7 @@ Paginator( id: "UChqcJ_MhP9a4bXy1jQ0QPzQ", name: "RAF Camora", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -281,7 +281,7 @@ Paginator( id: "UCXK2490SNd8EOm84Es6USjw", name: "Stay High", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -322,7 +322,7 @@ Paginator( id: "UCqv9TYpXUAo-Qy_tOPPSUYg", name: "Hypnotize Entertainment", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -363,7 +363,7 @@ Paginator( id: "UC0udgVvsJRuH4WfuIuRPSiw", name: "YONII OFFICIAL", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -404,7 +404,7 @@ Paginator( id: "UCfiRDetbZHqjfVHOUz-kolw", name: "Club Sounds", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -445,7 +445,7 @@ Paginator( id: "UChqcJ_MhP9a4bXy1jQ0QPzQ", name: "RAF Camora", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -486,7 +486,7 @@ Paginator( id: "UCvnCXuh_zhm75EJ89qJ95Kw", name: "385idéal", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -527,7 +527,7 @@ Paginator( id: "UCDLPHv0SrvyUzct8UYQ9R_g", name: "KMNGANG", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -568,7 +568,7 @@ Paginator( id: "UCAbiUl42boUt6vUL019r9Bw", name: "LifeisPainTv", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -609,7 +609,7 @@ Paginator( id: "UC2p9dADVuX-faJJLX_tsqkQ", name: "PAYY", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -650,7 +650,7 @@ Paginator( id: "UCDLPHv0SrvyUzct8UYQ9R_g", name: "KMNGANG", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -691,7 +691,7 @@ Paginator( id: "UCn3yU2bHX_8HMCfXOBTkXCg", name: "Helene Fischer (Official)", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -732,7 +732,7 @@ Paginator( id: "UCqv9TYpXUAo-Qy_tOPPSUYg", name: "Hypnotize Entertainment", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -773,7 +773,7 @@ Paginator( id: "UChqcJ_MhP9a4bXy1jQ0QPzQ", name: "RAF Camora", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -814,7 +814,7 @@ Paginator( id: "UCiro2LXCNF59XmHAyfql3Ew", name: "Bantu Nation Channel", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -855,7 +855,7 @@ Paginator( id: "UCLluoo0u8E-RI5zTNfe6o5A", name: "FLER", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -896,7 +896,7 @@ Paginator( id: "UC7VGRS1q1XzHsAm1uM1PQ_Q", name: "MGP", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -937,7 +937,7 @@ Paginator( id: "UCmc5ha-rlBNVB1VDeUVisLw", name: "RIN", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -978,7 +978,7 @@ Paginator( id: "UCorI9V6adKvuIYE7ey9HPQQ", name: "Digster Pop", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1019,7 +1019,7 @@ Paginator( id: "UCAbiUl42boUt6vUL019r9Bw", name: "LifeisPainTv", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1060,7 +1060,7 @@ Paginator( id: "UChqcJ_MhP9a4bXy1jQ0QPzQ", name: "RAF Camora", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1101,7 +1101,7 @@ Paginator( id: "UChqcJ_MhP9a4bXy1jQ0QPzQ", name: "RAF Camora", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1142,7 +1142,7 @@ Paginator( id: "UCIgCb1dYprH140Ds0mgeAUA", name: "Kontra K", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1183,7 +1183,7 @@ Paginator( id: "UChqcJ_MhP9a4bXy1jQ0QPzQ", name: "RAF Camora", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1224,7 +1224,7 @@ Paginator( id: "UCU920m2cTElVE62gZ84iqrQ", name: "Fard", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1265,7 +1265,7 @@ Paginator( id: "UCbDNCzgdLlvYY9dk5M8063A", name: "BangerChannel", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1306,7 +1306,7 @@ Paginator( id: "UCmc5ha-rlBNVB1VDeUVisLw", name: "RIN", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1347,7 +1347,7 @@ Paginator( id: "UCn3yU2bHX_8HMCfXOBTkXCg", name: "Helene Fischer (Official)", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1388,7 +1388,7 @@ Paginator( id: "UCAbiUl42boUt6vUL019r9Bw", name: "LifeisPainTv", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1429,7 +1429,7 @@ Paginator( id: "UCvnCXuh_zhm75EJ89qJ95Kw", name: "385idéal", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1470,7 +1470,7 @@ Paginator( id: "UCjXt6co1pkPxBRY2FkH2YwQ", name: "Damestream Records", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1511,7 +1511,7 @@ Paginator( id: "UCGh8tmH9x9njaI2mXfh2fyg", name: "CrhymeTV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1552,7 +1552,7 @@ Paginator( id: "UCO8_DFkr_fn_YDup_7OZNow", name: "El Cartel Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1593,7 +1593,7 @@ Paginator( id: "UCGU9EqK5V5m141sNPCOfRBg", name: "TEAM KUKU", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1634,7 +1634,7 @@ Paginator( id: "UCGh8tmH9x9njaI2mXfh2fyg", name: "CrhymeTV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1675,7 +1675,7 @@ Paginator( id: "UCXK2490SNd8EOm84Es6USjw", name: "Stay High", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1716,7 +1716,7 @@ Paginator( id: "UCzQaHdbeofGzUvzUsLyvUIg", name: "DIE TOTEN HOSEN", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1757,7 +1757,7 @@ Paginator( id: "UCorI9V6adKvuIYE7ey9HPQQ", name: "Digster Pop", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1798,7 +1798,7 @@ Paginator( id: "UCppb1MUh0f5CSRGiae_LnUg", name: "Eunique", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1839,7 +1839,7 @@ Paginator( id: "UCGU9EqK5V5m141sNPCOfRBg", name: "TEAM KUKU", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1880,7 +1880,7 @@ Paginator( id: "UCVWm9bTQLmMwHI0To5zQFGA", name: "Luciano | Locosquad", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1921,7 +1921,7 @@ Paginator( id: "UCGh8tmH9x9njaI2mXfh2fyg", name: "CrhymeTV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1962,7 +1962,7 @@ Paginator( id: "UChgBqZLsIzN4gKSLfKoavEQ", name: "43 TV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2003,7 +2003,7 @@ Paginator( id: "UCGh8tmH9x9njaI2mXfh2fyg", name: "CrhymeTV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2044,7 +2044,7 @@ Paginator( id: "UC0udgVvsJRuH4WfuIuRPSiw", name: "YONII OFFICIAL", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2085,7 +2085,7 @@ Paginator( id: "UC8C5H2N06dasx3ZYYbAa0mQ", name: "Mert Abi", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2126,7 +2126,7 @@ Paginator( id: "UC6j8VYM3rsQkx3-22Cg5ZUg", name: "SXTN", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2167,7 +2167,7 @@ Paginator( id: "UCLyAYe-pk6HGmfyT94ouBcA", name: "Mark Forster", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2208,7 +2208,7 @@ Paginator( id: "UCDLPHv0SrvyUzct8UYQ9R_g", name: "KMNGANG", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2249,7 +2249,7 @@ Paginator( id: "UCGh8tmH9x9njaI2mXfh2fyg", name: "CrhymeTV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2290,7 +2290,7 @@ Paginator( id: "UCYp3rk70ACGXQ4gFAiMr1SQ", name: "Rammstein Official", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2331,7 +2331,7 @@ Paginator( id: "UChl3h_bqcx_c15f7WOtSn-A", name: "Sido", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2372,7 +2372,7 @@ Paginator( id: "UCeXXPfmDyQFJVB-6_Kl04sg", name: "STOKED Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2413,7 +2413,7 @@ Paginator( id: "UCSRCm4zHuETCS7jHWMiWNog", name: "Adel Tawil", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2454,7 +2454,7 @@ Paginator( id: "UCicJjripVxiTXbUfociVZwQ", name: "MARTERIA", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2495,7 +2495,7 @@ Paginator( id: "UCy9Nbtsu7QzefrNsT9nYkzQ", name: "K.I.Z", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2536,7 +2536,7 @@ Paginator( id: "UCZygMGbIE8JNE1_qqtmIXhA", name: "Max Giesinger", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2577,7 +2577,7 @@ Paginator( id: "UCLyAYe-pk6HGmfyT94ouBcA", name: "Mark Forster", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2618,7 +2618,7 @@ Paginator( id: "UCGexINHKQhnkwmMaympciYQ", name: "Tim Bendzko", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2659,7 +2659,7 @@ Paginator( id: "UCT7MCko43YqeZ1x55O1DRtw", name: "deichkindTV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2700,7 +2700,7 @@ Paginator( id: "UCqsyOBd31LT-EwwqiSBKxSA", name: "Peter Plate", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2741,7 +2741,7 @@ Paginator( id: "UCDLPHv0SrvyUzct8UYQ9R_g", name: "KMNGANG", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2782,7 +2782,7 @@ Paginator( id: "UCbDNCzgdLlvYY9dk5M8063A", name: "BangerChannel", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2823,7 +2823,7 @@ Paginator( id: "UCLyAYe-pk6HGmfyT94ouBcA", name: "Mark Forster", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2864,7 +2864,7 @@ Paginator( id: "UCorI9V6adKvuIYE7ey9HPQQ", name: "Digster Pop", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2905,7 +2905,7 @@ Paginator( id: "UCGh8tmH9x9njaI2mXfh2fyg", name: "CrhymeTV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2946,7 +2946,7 @@ Paginator( id: "UCDLPHv0SrvyUzct8UYQ9R_g", name: "KMNGANG", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2987,7 +2987,7 @@ Paginator( id: "UCnH4k3ASwytYAgfsW83OvTg", name: "Azzlackz", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3028,7 +3028,7 @@ Paginator( id: "UCqv9TYpXUAo-Qy_tOPPSUYg", name: "Hypnotize Entertainment", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3069,7 +3069,7 @@ Paginator( id: "UCSRCm4zHuETCS7jHWMiWNog", name: "Adel Tawil", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3110,7 +3110,7 @@ Paginator( id: "UCvnCXuh_zhm75EJ89qJ95Kw", name: "385idéal", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3151,7 +3151,7 @@ Paginator( id: "UChl3h_bqcx_c15f7WOtSn-A", name: "Sido", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3192,7 +3192,7 @@ Paginator( id: "UC8OZsdWmGCM-vojiQmtUK8g", name: "groenlandrecords", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3233,7 +3233,7 @@ Paginator( id: "UCMHWpfahk3Kt8Us28Jg51nw", name: "BUSHIDO", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3274,7 +3274,7 @@ Paginator( id: "UCDzpxJB1oNEg7a2Np14TEMQ", name: "Selfmade Records", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3315,7 +3315,7 @@ Paginator( id: "UCDzpxJB1oNEg7a2Np14TEMQ", name: "Selfmade Records", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3356,7 +3356,7 @@ Paginator( id: "UC8OZsdWmGCM-vojiQmtUK8g", name: "groenlandrecords", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3397,7 +3397,7 @@ Paginator( id: "UCx0XFgJ2OIESkkTjG4S7Gvw", name: "SpongeBOZZ", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3438,7 +3438,7 @@ Paginator( id: "UCg9Mw2YNnXqrecKl4bKLVCQ", name: "80smusicfanman", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3479,7 +3479,7 @@ Paginator( id: "UCDzpxJB1oNEg7a2Np14TEMQ", name: "Selfmade Records", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3520,7 +3520,7 @@ Paginator( id: "UCu-Ue0vTWyMbM2KBPaCCg_w", name: "Joel Brandenstein", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3561,7 +3561,7 @@ Paginator( id: "UCzmO7GegLke-jb5uZSQ9_HA", name: "ALPHA MUSIC EMPIRE", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3602,7 +3602,7 @@ Paginator( id: "UCbDNCzgdLlvYY9dk5M8063A", name: "BangerChannel", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3643,7 +3643,7 @@ Paginator( id: "UCvnCXuh_zhm75EJ89qJ95Kw", name: "385idéal", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3684,7 +3684,7 @@ Paginator( id: "UChl3h_bqcx_c15f7WOtSn-A", name: "Sido", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3725,7 +3725,7 @@ Paginator( id: "UCM8Eb--xiPqS8tR3z5FeXEw", name: "JuliensBlogBattle", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3766,7 +3766,7 @@ Paginator( id: "UCU8Xw_KewvcC3LV3Qv--JZg", name: "KURDO", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3807,7 +3807,7 @@ Paginator( id: "UCJQXmT0GmepGynjFJmRcTaA", name: "yankoomusic", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3848,7 +3848,7 @@ Paginator( id: "UCheky_SBEExtbK_T0onuDwg", name: "AnnenMayKantereit", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3889,7 +3889,7 @@ Paginator( id: "UCh-WV4-j8IAmfKiHJoc5Ecw", name: "Keine Liebe", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3930,7 +3930,7 @@ Paginator( id: "UCvnCXuh_zhm75EJ89qJ95Kw", name: "385idéal", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3971,7 +3971,7 @@ Paginator( id: "UCvnCXuh_zhm75EJ89qJ95Kw", name: "385idéal", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -4012,7 +4012,7 @@ Paginator( id: "UCOiG4UoE0-CBZKlDVgw1eTA", name: "Stonedeafproduction", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -4053,7 +4053,7 @@ Paginator( id: "UCGh8tmH9x9njaI2mXfh2fyg", name: "CrhymeTV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -4094,7 +4094,7 @@ Paginator( id: "UC1EeaPJpiOu6DJmOBFV-nyQ", name: "Johannes Oerding", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_recommendations.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_recommendations.snap index e7bdd50..09476bc 100644 --- a/src/client/snapshots/rustypipe__client__pagination__tests__map_recommendations.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_recommendations.snap @@ -31,7 +31,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -68,7 +68,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -105,7 +105,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -142,7 +142,7 @@ Paginator( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -179,7 +179,7 @@ Paginator( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -216,7 +216,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -253,7 +253,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -290,7 +290,7 @@ Paginator( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -327,7 +327,7 @@ Paginator( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -364,7 +364,7 @@ Paginator( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -401,7 +401,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -438,7 +438,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -475,7 +475,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -512,7 +512,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -549,7 +549,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -586,7 +586,7 @@ Paginator( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -623,7 +623,7 @@ Paginator( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -660,7 +660,7 @@ Paginator( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -697,7 +697,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_search.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_search.snap index 92b4860..f398e40 100644 --- a/src/client/snapshots/rustypipe__client__pagination__tests__map_search.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_search.snap @@ -26,7 +26,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -58,7 +58,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -95,7 +95,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -127,7 +127,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -164,7 +164,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -201,7 +201,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -238,7 +238,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -270,7 +270,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -302,7 +302,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -334,7 +334,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -366,7 +366,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -403,7 +403,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -435,7 +435,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -467,7 +467,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -504,7 +504,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -536,7 +536,7 @@ Paginator( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_20241011_pageheader.snap b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_20241011_pageheader.snap index 99d94cf..c6c83b0 100644 --- a/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_20241011_pageheader.snap +++ b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_20241011_pageheader.snap @@ -38,7 +38,7 @@ Playlist( id: "UCde_xnXu2lPBmRgAp_nq29A", name: "comfi beats", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -79,7 +79,7 @@ Playlist( id: "UCde_xnXu2lPBmRgAp_nq29A", name: "comfi beats", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -120,7 +120,7 @@ Playlist( id: "UCde_xnXu2lPBmRgAp_nq29A", name: "comfi beats", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -161,7 +161,7 @@ Playlist( id: "UCde_xnXu2lPBmRgAp_nq29A", name: "comfi beats", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -202,7 +202,7 @@ Playlist( id: "UCde_xnXu2lPBmRgAp_nq29A", name: "comfi beats", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -243,7 +243,7 @@ Playlist( id: "UCde_xnXu2lPBmRgAp_nq29A", name: "comfi beats", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -284,7 +284,7 @@ Playlist( id: "UCde_xnXu2lPBmRgAp_nq29A", name: "comfi beats", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -325,7 +325,7 @@ Playlist( id: "UCde_xnXu2lPBmRgAp_nq29A", name: "comfi beats", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -366,7 +366,7 @@ Playlist( id: "UCde_xnXu2lPBmRgAp_nq29A", name: "comfi beats", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -407,7 +407,7 @@ Playlist( id: "UCde_xnXu2lPBmRgAp_nq29A", name: "comfi beats", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_live.snap b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_live.snap index 9ac46a7..c32dd94 100644 --- a/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_live.snap +++ b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_live.snap @@ -38,7 +38,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -79,7 +79,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -120,7 +120,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -161,7 +161,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -202,7 +202,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -243,7 +243,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -284,7 +284,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -325,7 +325,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -366,7 +366,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -407,7 +407,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -448,7 +448,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -489,7 +489,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -530,7 +530,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -571,7 +571,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -612,7 +612,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -653,7 +653,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -694,7 +694,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -735,7 +735,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -776,7 +776,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -817,7 +817,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -858,7 +858,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -899,7 +899,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -940,7 +940,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -981,7 +981,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1022,7 +1022,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1063,7 +1063,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1104,7 +1104,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1145,7 +1145,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1186,7 +1186,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1227,7 +1227,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1268,7 +1268,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1309,7 +1309,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1350,7 +1350,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1391,7 +1391,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1432,7 +1432,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1473,7 +1473,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1514,7 +1514,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1555,7 +1555,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1596,7 +1596,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1637,7 +1637,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1678,7 +1678,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1719,7 +1719,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1760,7 +1760,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1801,7 +1801,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1842,7 +1842,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1883,7 +1883,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1924,7 +1924,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1965,7 +1965,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2006,7 +2006,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2047,7 +2047,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2088,7 +2088,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2129,7 +2129,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2170,7 +2170,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2211,7 +2211,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2252,7 +2252,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2293,7 +2293,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2334,7 +2334,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2375,7 +2375,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2416,7 +2416,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2457,7 +2457,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2498,7 +2498,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2539,7 +2539,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2580,7 +2580,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2621,7 +2621,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2662,7 +2662,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2703,7 +2703,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2744,7 +2744,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2785,7 +2785,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2826,7 +2826,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2867,7 +2867,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2908,7 +2908,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2949,7 +2949,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2990,7 +2990,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3031,7 +3031,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3072,7 +3072,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3113,7 +3113,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3154,7 +3154,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3195,7 +3195,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3236,7 +3236,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3277,7 +3277,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3318,7 +3318,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3359,7 +3359,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3400,7 +3400,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3441,7 +3441,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3482,7 +3482,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3523,7 +3523,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3564,7 +3564,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3605,7 +3605,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3646,7 +3646,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3687,7 +3687,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3728,7 +3728,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3769,7 +3769,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3810,7 +3810,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3851,7 +3851,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3892,7 +3892,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3933,7 +3933,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3974,7 +3974,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -4015,7 +4015,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -4056,7 +4056,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -4097,7 +4097,7 @@ Playlist( id: "UCvqRdlKsE5Q8mf8YXbdIJLw", name: "LoL Esports", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", 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 5be597f..1b85733 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 @@ -38,7 +38,7 @@ Playlist( id: "UCb3tJ5NKw7mDxyaQ73mwbRg", name: "Kontor.TV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -79,7 +79,7 @@ Playlist( id: "UC7G3cjLeykqJ3a7DBqj5QiA", name: "Uzzah", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -120,7 +120,7 @@ Playlist( id: "UCUJHYmJ3_1Kwfs3lqYc_Rxg", name: "ICH FIND SCHLAGER TOLL", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -161,7 +161,7 @@ Playlist( id: "UCJl-cGDSoGlB86vB_3scwAQ", name: "bausashaus", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -202,7 +202,7 @@ Playlist( id: "UC_6lYclpeUdD-P6aQYo0N7Q", name: "Kay One", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -243,7 +243,7 @@ Playlist( id: "UCRrLWhcrm7jrOMiuU0HmNRA", name: "Namika", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -284,7 +284,7 @@ Playlist( id: "UCKXi0qdTaYHCauWIUyj_eqw", name: "Mein Herz schlägt Schlager", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -325,7 +325,7 @@ Playlist( id: "UC_6lYclpeUdD-P6aQYo0N7Q", name: "Kay One", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -366,7 +366,7 @@ Playlist( id: "UCorI9V6adKvuIYE7ey9HPQQ", name: "Digster Pop", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -407,7 +407,7 @@ Playlist( id: "UCicJjripVxiTXbUfociVZwQ", name: "MARTERIA", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -448,7 +448,7 @@ Playlist( id: "UC5di9X9n2vTrkGVwWhtq9SQ", name: "Chimperator Channel", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -489,7 +489,7 @@ Playlist( id: "UCpZ_DI-ZugwMzXcqccaTVsg", name: "Dagi Bee", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -530,7 +530,7 @@ Playlist( id: "UCOiG4UoE0-CBZKlDVgw1eTA", name: "Stonedeafproduction", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -571,7 +571,7 @@ Playlist( id: "UCLyAYe-pk6HGmfyT94ouBcA", name: "Mark Forster", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -612,7 +612,7 @@ Playlist( id: "UC5di9X9n2vTrkGVwWhtq9SQ", name: "Chimperator Channel", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -653,7 +653,7 @@ Playlist( id: "UC5di9X9n2vTrkGVwWhtq9SQ", name: "Chimperator Channel", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -694,7 +694,7 @@ Playlist( id: "UCR8jtJnKWWUGGTRQ2MEKDeA", name: "Sarah Connor Official", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -735,7 +735,7 @@ Playlist( id: "UCvnCXuh_zhm75EJ89qJ95Kw", name: "385idéal", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -776,7 +776,7 @@ Playlist( id: "UCflxjfjLu4Fhj9XZ_IvWwQw", name: "Xavier Naidoo", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -817,7 +817,7 @@ Playlist( id: "UCZygMGbIE8JNE1_qqtmIXhA", name: "Max Giesinger", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -858,7 +858,7 @@ Playlist( id: "UClDlxHXefg3Jh7gLx0-aDew", name: "AGGRO.TV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -899,7 +899,7 @@ Playlist( id: "UChl3h_bqcx_c15f7WOtSn-A", name: "Sido", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -940,7 +940,7 @@ Playlist( id: "UCOiG4UoE0-CBZKlDVgw1eTA", name: "Stonedeafproduction", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -981,7 +981,7 @@ Playlist( id: "UCU8Xw_KewvcC3LV3Qv--JZg", name: "KURDO", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1022,7 +1022,7 @@ Playlist( id: "UCb3tJ5NKw7mDxyaQ73mwbRg", name: "Kontor.TV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1063,7 +1063,7 @@ Playlist( id: "UCLyAYe-pk6HGmfyT94ouBcA", name: "Mark Forster", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1104,7 +1104,7 @@ Playlist( id: "UCUJHYmJ3_1Kwfs3lqYc_Rxg", name: "ICH FIND SCHLAGER TOLL", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1145,7 +1145,7 @@ Playlist( id: "UCSRCm4zHuETCS7jHWMiWNog", name: "Adel Tawil", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1186,7 +1186,7 @@ Playlist( id: "UCheky_SBEExtbK_T0onuDwg", name: "AnnenMayKantereit", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1227,7 +1227,7 @@ Playlist( id: "UCDYeYQJ8EePArcKGne4ZGrA", name: "Revolverheld", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1268,7 +1268,7 @@ Playlist( id: "UCrWcq3VjvaT6BW3kHo2vG_Q", name: "Peter Fox", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1309,7 +1309,7 @@ Playlist( id: "UCDzpxJB1oNEg7a2Np14TEMQ", name: "Selfmade Records", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1350,7 +1350,7 @@ Playlist( id: "UCj9iIBtEJx5yCiX5iaO5mtA", name: "LASERKRAFT 3D", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1391,7 +1391,7 @@ Playlist( id: "UCDLPHv0SrvyUzct8UYQ9R_g", name: "KMNGANG", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1432,7 +1432,7 @@ Playlist( id: "UCheky_SBEExtbK_T0onuDwg", name: "AnnenMayKantereit", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1473,7 +1473,7 @@ Playlist( id: "UCflxjfjLu4Fhj9XZ_IvWwQw", name: "Xavier Naidoo", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1514,7 +1514,7 @@ Playlist( id: "UCvnCXuh_zhm75EJ89qJ95Kw", name: "385idéal", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1555,7 +1555,7 @@ Playlist( id: "UCGh8tmH9x9njaI2mXfh2fyg", name: "CrhymeTV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1596,7 +1596,7 @@ Playlist( id: "UChgBqZLsIzN4gKSLfKoavEQ", name: "43 TV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1637,7 +1637,7 @@ Playlist( id: "UCKXi0qdTaYHCauWIUyj_eqw", name: "Mein Herz schlägt Schlager", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1678,7 +1678,7 @@ Playlist( id: "UCn3yU2bHX_8HMCfXOBTkXCg", name: "Helene Fischer (Official)", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1719,7 +1719,7 @@ Playlist( id: "UCMU63WkFaKXxg3I7uG-TDUg", name: "FALCO", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1760,7 +1760,7 @@ Playlist( id: "UCDzpxJB1oNEg7a2Np14TEMQ", name: "Selfmade Records", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1801,7 +1801,7 @@ Playlist( id: "UCOiG4UoE0-CBZKlDVgw1eTA", name: "Stonedeafproduction", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1842,7 +1842,7 @@ Playlist( id: "UCvb5L94_iqX9GSbLyPJPj5Q", name: "Seeed", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1883,7 +1883,7 @@ Playlist( id: "UCLyAYe-pk6HGmfyT94ouBcA", name: "Mark Forster", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1924,7 +1924,7 @@ Playlist( id: "UCb3tJ5NKw7mDxyaQ73mwbRg", name: "Kontor.TV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1965,7 +1965,7 @@ Playlist( id: "UC5di9X9n2vTrkGVwWhtq9SQ", name: "Chimperator Channel", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2006,7 +2006,7 @@ Playlist( id: "UCGU9EqK5V5m141sNPCOfRBg", name: "TEAM KUKU", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2047,7 +2047,7 @@ Playlist( id: "UCKsavaIX-79E9YYOzQygTGg", name: "Jupiter Jones", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2088,7 +2088,7 @@ Playlist( id: "UCorI9V6adKvuIYE7ey9HPQQ", name: "Digster Pop", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2129,7 +2129,7 @@ Playlist( id: "UCUJHYmJ3_1Kwfs3lqYc_Rxg", name: "ICH FIND SCHLAGER TOLL", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2170,7 +2170,7 @@ Playlist( id: "UCGh8tmH9x9njaI2mXfh2fyg", name: "CrhymeTV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2211,7 +2211,7 @@ Playlist( id: "UCXK2490SNd8EOm84Es6USjw", name: "Stay High", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2252,7 +2252,7 @@ Playlist( id: "UChgBqZLsIzN4gKSLfKoavEQ", name: "43 TV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2293,7 +2293,7 @@ Playlist( id: "UC_rbfbjfIzVp5NwQcQr4mPQ", name: "Kool Savas Official | Essah TV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2334,7 +2334,7 @@ Playlist( id: "UCMHWpfahk3Kt8Us28Jg51nw", name: "BUSHIDO", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2375,7 +2375,7 @@ Playlist( id: "UCRQ6wYpZLLJ-bxezL0UYfLg", name: "HITBOX", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2416,7 +2416,7 @@ Playlist( id: "UCGh8tmH9x9njaI2mXfh2fyg", name: "CrhymeTV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2457,7 +2457,7 @@ Playlist( id: "UCLyAYe-pk6HGmfyT94ouBcA", name: "Mark Forster", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2498,7 +2498,7 @@ Playlist( id: "UC2QTvgl_7Y5Z0LFbvIdjfJQ", name: "Hottest EDM Music Summer #2k15", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2539,7 +2539,7 @@ Playlist( id: "UCOiG4UoE0-CBZKlDVgw1eTA", name: "Stonedeafproduction", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2580,7 +2580,7 @@ Playlist( id: "UCKXi0qdTaYHCauWIUyj_eqw", name: "Mein Herz schlägt Schlager", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2621,7 +2621,7 @@ Playlist( id: "UCNfXh-x3nmiwLNH_BQEDYXA", name: "Ali As", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2662,7 +2662,7 @@ Playlist( id: "UCKCQOeAIHHHAejXgCs7NhlA", name: "Frei.Wild", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2703,7 +2703,7 @@ Playlist( id: "UCDLPHv0SrvyUzct8UYQ9R_g", name: "KMNGANG", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2744,7 +2744,7 @@ Playlist( id: "UCLQNVUIJXJ2ejVHuSlBtmGQ", name: "LEA", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2785,7 +2785,7 @@ Playlist( id: "UCMHWpfahk3Kt8Us28Jg51nw", name: "BUSHIDO", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2826,7 +2826,7 @@ Playlist( id: "UCUJHYmJ3_1Kwfs3lqYc_Rxg", name: "ICH FIND SCHLAGER TOLL", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2867,7 +2867,7 @@ Playlist( id: "UCMHWpfahk3Kt8Us28Jg51nw", name: "BUSHIDO", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2908,7 +2908,7 @@ Playlist( id: "UCNdc7v3RI4x5z6VLCOY22uQ", name: "Söhne Mannheims", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2949,7 +2949,7 @@ Playlist( id: "UC8OZsdWmGCM-vojiQmtUK8g", name: "groenlandrecords", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2990,7 +2990,7 @@ Playlist( id: "UCo7hAQnNZcOBBdCRPxgXfTQ", name: "Mike Singer", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3031,7 +3031,7 @@ Playlist( id: "UC8cbnIyANak8W53NR034Y-g", name: "jorismusik", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3072,7 +3072,7 @@ Playlist( id: "UCbDNCzgdLlvYY9dk5M8063A", name: "BangerChannel", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3113,7 +3113,7 @@ Playlist( id: "UCGexINHKQhnkwmMaympciYQ", name: "Tim Bendzko", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3154,7 +3154,7 @@ Playlist( id: "UCn-QU_wAkYXmtIbsqZyeuVA", name: "officialcasperxo", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3195,7 +3195,7 @@ Playlist( id: "UC7OwZsuUYLUpAk-T-uKLrQw", name: "Alligatoah", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3236,7 +3236,7 @@ Playlist( id: "UCDYeYQJ8EePArcKGne4ZGrA", name: "Revolverheld", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3277,7 +3277,7 @@ Playlist( id: "UCheky_SBEExtbK_T0onuDwg", name: "AnnenMayKantereit", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3318,7 +3318,7 @@ Playlist( id: "UCpIHbzhK3-sHxuGsahKacNA", name: "Capo TV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3359,7 +3359,7 @@ Playlist( id: "UCnWPDVXTezqRZMTqmnthgPg", name: "DieLochis", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3400,7 +3400,7 @@ Playlist( id: "UCpIHbzhK3-sHxuGsahKacNA", name: "Capo TV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3441,7 +3441,7 @@ Playlist( id: "UCu-Ue0vTWyMbM2KBPaCCg_w", name: "Joel Brandenstein", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3482,7 +3482,7 @@ Playlist( id: "UCorI9V6adKvuIYE7ey9HPQQ", name: "Digster Pop", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3523,7 +3523,7 @@ Playlist( id: "UCvb5L94_iqX9GSbLyPJPj5Q", name: "Seeed", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3564,7 +3564,7 @@ Playlist( id: "UCvb5L94_iqX9GSbLyPJPj5Q", name: "Seeed", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3605,7 +3605,7 @@ Playlist( id: "UCbDNCzgdLlvYY9dk5M8063A", name: "BangerChannel", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3646,7 +3646,7 @@ Playlist( id: "UCSRCm4zHuETCS7jHWMiWNog", name: "Adel Tawil", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3687,7 +3687,7 @@ Playlist( id: "UCOiG4UoE0-CBZKlDVgw1eTA", name: "Stonedeafproduction", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3728,7 +3728,7 @@ Playlist( id: "UC8OZsdWmGCM-vojiQmtUK8g", name: "groenlandrecords", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3769,7 +3769,7 @@ Playlist( id: "UCflxjfjLu4Fhj9XZ_IvWwQw", name: "Xavier Naidoo", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3810,7 +3810,7 @@ Playlist( id: "UC7OwZsuUYLUpAk-T-uKLrQw", name: "Alligatoah", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3851,7 +3851,7 @@ Playlist( id: "UCbDNCzgdLlvYY9dk5M8063A", name: "BangerChannel", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3892,7 +3892,7 @@ Playlist( id: "UCOiG4UoE0-CBZKlDVgw1eTA", name: "Stonedeafproduction", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3933,7 +3933,7 @@ Playlist( id: "UC6j8VYM3rsQkx3-22Cg5ZUg", name: "SXTN", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3974,7 +3974,7 @@ Playlist( id: "UCb3tJ5NKw7mDxyaQ73mwbRg", name: "Kontor.TV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -4015,7 +4015,7 @@ Playlist( id: "UC-yXuc1__OzjwpsJPlxYUCQ", name: "WORLDSTARHIPHOP", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -4056,7 +4056,7 @@ Playlist( id: "UCGexINHKQhnkwmMaympciYQ", name: "Tim Bendzko", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -4097,7 +4097,7 @@ Playlist( id: "UCGh8tmH9x9njaI2mXfh2fyg", name: "CrhymeTV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", 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 310c3cd..95aab22 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 @@ -38,7 +38,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -79,7 +79,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -120,7 +120,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -161,7 +161,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -202,7 +202,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -243,7 +243,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -284,7 +284,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -325,7 +325,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -366,7 +366,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -407,7 +407,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -448,7 +448,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -489,7 +489,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -530,7 +530,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -571,7 +571,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -612,7 +612,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -653,7 +653,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -694,7 +694,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -735,7 +735,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -776,7 +776,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -817,7 +817,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -858,7 +858,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -899,7 +899,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -940,7 +940,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -981,7 +981,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1022,7 +1022,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1063,7 +1063,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1104,7 +1104,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1145,7 +1145,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1186,7 +1186,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1227,7 +1227,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1268,7 +1268,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1309,7 +1309,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1350,7 +1350,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1391,7 +1391,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1432,7 +1432,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1473,7 +1473,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1514,7 +1514,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1555,7 +1555,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1596,7 +1596,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1637,7 +1637,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1678,7 +1678,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1719,7 +1719,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1760,7 +1760,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1801,7 +1801,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1842,7 +1842,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1883,7 +1883,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1924,7 +1924,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1965,7 +1965,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2006,7 +2006,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2047,7 +2047,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2088,7 +2088,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2129,7 +2129,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2170,7 +2170,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2211,7 +2211,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2252,7 +2252,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2293,7 +2293,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2334,7 +2334,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2375,7 +2375,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2416,7 +2416,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2457,7 +2457,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2498,7 +2498,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2539,7 +2539,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2580,7 +2580,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2621,7 +2621,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2662,7 +2662,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2703,7 +2703,7 @@ Playlist( id: "UCQM0bS4_04-Y4JuYrgmnpZQ", name: "Chaosflo44", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", 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 f3dc659..f300f33 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 @@ -38,7 +38,7 @@ Playlist( id: "UCveFkLdSOUsGwMJEgedO9dQ", name: "Lewis Capaldi", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -79,7 +79,7 @@ Playlist( id: "UC0C-w0YjGpqDXGB8IHb662A", name: "Ed Sheeran", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -120,7 +120,7 @@ Playlist( id: "UCiGm_E4ZwYSHV3bcW1pnSeQ", name: "Billie Eilish", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -161,7 +161,7 @@ Playlist( id: "UCvILah8hAWYhYOmAG3ZjvBA", name: "Benson Boone", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -202,7 +202,7 @@ Playlist( id: "UCyo4FFY5_6v_ZzPl-Fq6FZw", name: "Owl City", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -243,7 +243,7 @@ Playlist( id: "UCa9-24DvBWhLElDKYUmyzCQ", name: "Sofia Carson", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -284,7 +284,7 @@ Playlist( id: "UCcgqSM4YEo5vVQpqwN-MaNw", name: "Rihanna", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -325,7 +325,7 @@ Playlist( id: "UCenAJLKHnIU9UKDp1FV9tTA", name: "James Bay", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -366,7 +366,7 @@ Playlist( id: "UC0C-w0YjGpqDXGB8IHb662A", name: "Ed Sheeran", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -407,7 +407,7 @@ Playlist( id: "UC0C-w0YjGpqDXGB8IHb662A", name: "Ed Sheeran", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -448,7 +448,7 @@ Playlist( id: "UCozJsFq5BE_nrVGr567EwOQ", name: "Andy Grammer", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -489,7 +489,7 @@ Playlist( id: "UCjjKiLxvwShZjzhH-RiI6DA", name: "Jaymes Young", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -530,7 +530,7 @@ Playlist( id: "UCH6pkawiiPNv6_muxpfMq_g", name: "Michele Morrone", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -571,7 +571,7 @@ Playlist( id: "UCUWpIOx2WMaZ47ssNiQIB1w", name: "Cian Ducrot", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -612,7 +612,7 @@ Playlist( id: "UCi4EDAgjULwwNBHOg1aaCig", name: "OneRepublic", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -653,7 +653,7 @@ Playlist( id: "UCU7L-qdtPyhLGkEm0_r10zA", name: "Counting Crows", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -694,7 +694,7 @@ Playlist( id: "UCBVjMGOIkavEAhyqpxJ73Dw", name: "Maroon 5", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -735,7 +735,7 @@ Playlist( id: "UCV5Gw7GGOMxe6SSF6llp_3Q", name: "James Arthur", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -776,7 +776,7 @@ Playlist( id: "UCi4EDAgjULwwNBHOg1aaCig", name: "OneRepublic", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -817,7 +817,7 @@ Playlist( id: "UCk3NOb_PipJJwzMuaBhEfQg", name: "Birdy", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -858,7 +858,7 @@ Playlist( id: "UCPKWE1H6xhxwPlqUlKgHb_w", name: "Sabrina Carpenter", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -899,7 +899,7 @@ Playlist( id: "UCTujaKfo0jMXXhjvRtB6yYQ", name: "Dermot Kennedy", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -940,7 +940,7 @@ Playlist( id: "UCH6pkawiiPNv6_muxpfMq_g", name: "Michele Morrone", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -981,7 +981,7 @@ Playlist( id: "UCkIgbcsXIHz0DW2lqRh4M0g", name: "Givēon", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1022,7 +1022,7 @@ Playlist( id: "UCQcTX6rX7JhUpHg_T3STtoQ", name: "Niall Horan", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1063,7 +1063,7 @@ Playlist( id: "UCOu-8cNd_UZV0VTUPgPpGsg", name: "Jessie Murph", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1104,7 +1104,7 @@ Playlist( id: "UCRKNyJc9Bo1vbBO_67wyQEQ", name: "Jess Glynne", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1145,7 +1145,7 @@ Playlist( id: "UCUKxvWVo8lmRXkbTOkqUhGg", name: "Conan Gray", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1186,7 +1186,7 @@ Playlist( id: "UCDPM_n1atn2ijUwHd0NNRQw", name: "Coldplay", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1227,7 +1227,7 @@ Playlist( id: "UCUKxvWVo8lmRXkbTOkqUhGg", name: "Conan Gray", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1268,7 +1268,7 @@ Playlist( id: "UCQh6LB206jF3JxpCDD-fp5Q", name: "Tate McRae", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1309,7 +1309,7 @@ Playlist( id: "UCLSvfRlwkQfapHztZZkI-mA", name: "James Morrison", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1350,7 +1350,7 @@ Playlist( id: "UCn7dB9UMTBDjKtEKBy_XISw", name: "Miley Cyrus", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1391,7 +1391,7 @@ Playlist( id: "UCQcTX6rX7JhUpHg_T3STtoQ", name: "Niall Horan", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1432,7 +1432,7 @@ Playlist( id: "UCi4EDAgjULwwNBHOg1aaCig", name: "OneRepublic", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1473,7 +1473,7 @@ Playlist( id: "UCHqQruhGENdmWy_oeH1f8QA", name: "Michael Bublé", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1514,7 +1514,7 @@ Playlist( id: "UC0C-w0YjGpqDXGB8IHb662A", name: "Ed Sheeran", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1555,7 +1555,7 @@ Playlist( id: "UCUg8KhMXhFxJm-YQzOQ7nPw", name: "James Blunt", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1596,7 +1596,7 @@ Playlist( id: "UCEa-JnNdYCIFn3HMhjGEWpQ", name: "John Legend", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1637,7 +1637,7 @@ Playlist( id: "UClKtjI8iP1Q9EvsiqNbgYoQ", name: "David Kushner", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1678,7 +1678,7 @@ Playlist( id: "UCQIRM93QxhQ4pGm0cxuCXDw", name: "MAX", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1719,7 +1719,7 @@ Playlist( id: "UCmVE1oDNf5IjExOGfdbL3SA", name: "NettwerkMusic", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1760,7 +1760,7 @@ Playlist( id: "UCN7ka9fOBrokJ0UvO03tPiA", name: "James TW", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1801,7 +1801,7 @@ Playlist( id: "UCYbATPRc4EObXaajgdXFQ0g", name: "Gabrielle Aplin", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1842,7 +1842,7 @@ Playlist( id: "UC-vKwDHcbPLtjml81ohGRng", name: "5SOS", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1883,7 +1883,7 @@ Playlist( id: "UCvpDeGlR5wLP9Z3Tb6K0Xfg", name: "SAM SMITH", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1924,7 +1924,7 @@ Playlist( id: "UCvILah8hAWYhYOmAG3ZjvBA", name: "Benson Boone", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1965,7 +1965,7 @@ Playlist( id: "UCKUa7K2srvoAASkphxrnRgg", name: "Mimi Webb", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2006,7 +2006,7 @@ Playlist( id: "UCQam2rlpwMx1YlvBN8PSS2A", name: "Zoe Wees", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2047,7 +2047,7 @@ Playlist( id: "UCTujaKfo0jMXXhjvRtB6yYQ", name: "Dermot Kennedy", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2088,7 +2088,7 @@ Playlist( id: "UCTujaKfo0jMXXhjvRtB6yYQ", name: "Dermot Kennedy", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2129,7 +2129,7 @@ Playlist( id: "UCoA_M5jHdV9_dJZMm9-Cr5A", name: "Noah Cyrus", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2170,7 +2170,7 @@ Playlist( id: "UCob5ILNOqa8V2lzX9nl2Z9w", name: "Amy Shark", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2211,7 +2211,7 @@ Playlist( id: "UCTujaKfo0jMXXhjvRtB6yYQ", name: "Dermot Kennedy", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2252,7 +2252,7 @@ Playlist( id: "UCz5ZnthJM95ynY1ICrbgzdQ", name: "JP Saxe", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2293,7 +2293,7 @@ Playlist( id: "UCw5J0_EUnV5iXKVMUGHsQ0A", name: "Rosa Linn", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2334,7 +2334,7 @@ Playlist( id: "UCXY5pi3MbsaP1WEgClmglsA", name: "Noah Kahan", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2375,7 +2375,7 @@ Playlist( id: "UCenAJLKHnIU9UKDp1FV9tTA", name: "James Bay", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2416,7 +2416,7 @@ Playlist( id: "UC2iiXAWdevNtUCCX18Dhaqw", name: "Ashley Kutcher", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2457,7 +2457,7 @@ Playlist( id: "UCeEi1My3KTXHT0SG1JkR9gA", name: "a-ha", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2498,7 +2498,7 @@ Playlist( id: "UC0C-w0YjGpqDXGB8IHb662A", name: "Ed Sheeran", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2539,7 +2539,7 @@ Playlist( id: "UCIxbNppa52neZxW8L2IXwMw", name: "flora cash", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2580,7 +2580,7 @@ Playlist( id: "UCV5Gw7GGOMxe6SSF6llp_3Q", name: "James Arthur", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2621,7 +2621,7 @@ Playlist( id: "UCNwwzAlMbHAJUNoJe0h3nBw", name: "Jeremy Zucker", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2662,7 +2662,7 @@ Playlist( id: "UCb3tJ5NKw7mDxyaQ73mwbRg", name: "Kontor.TV", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2703,7 +2703,7 @@ Playlist( id: "UCahPchrPVP185LhrXaADt6w", name: "RUEL", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2744,7 +2744,7 @@ Playlist( id: "UCLG7twDweqlHpyv0EDOjrgw", name: "Sigrid", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2785,7 +2785,7 @@ Playlist( id: "UCulTdh7lYCtT2J8G2s0oDuw", name: "Camylio", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2826,7 +2826,7 @@ Playlist( id: "UCecgDbZRJ8GdmVgNCjuJu5g", name: "Dean Lewis", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2867,7 +2867,7 @@ Playlist( id: "UCmN_s8-4GfK2YYUkReUlHvg", name: "Oh Wonder", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2908,7 +2908,7 @@ Playlist( id: "UCenAJLKHnIU9UKDp1FV9tTA", name: "James Bay", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2949,7 +2949,7 @@ Playlist( id: "UCgwv23FVv3lqh567yagXfNg", name: "DisneyMusicVEVO", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2990,7 +2990,7 @@ Playlist( id: "UCEa-JnNdYCIFn3HMhjGEWpQ", name: "John Legend", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3031,7 +3031,7 @@ Playlist( id: "UCmN_s8-4GfK2YYUkReUlHvg", name: "Oh Wonder", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3072,7 +3072,7 @@ Playlist( id: "UCQeiBlCcS4-XGwFjrvDn96w", name: "Tones And I", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3113,7 +3113,7 @@ Playlist( id: "UCc8GssgEdwTz1PmZfkgyS6g", name: "Official Blue", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3154,7 +3154,7 @@ Playlist( id: "UC2gMECGMn5TVbRN5S5tKb8Q", name: "Christina Perri", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3195,7 +3195,7 @@ Playlist( id: "UC9UALVkFDuRNZjEhxx6_l0w", name: "Anderson East", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3236,7 +3236,7 @@ Playlist( id: "UC5BxcH4D9NXNXCr-hp6_m6Q", name: "Låpsley", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3277,7 +3277,7 @@ Playlist( id: "UC8hod44yQ-t8eQuXxeK5-Yw", name: "LÉON", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3318,7 +3318,7 @@ Playlist( id: "UCjtK2di7aJovtPXe1m42ylA", name: "Tom Grennan", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3359,7 +3359,7 @@ Playlist( id: "UCrFWAWOKhsQWUJN_aV5UQIg", name: "Matt Simons", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3400,7 +3400,7 @@ Playlist( id: "UCwRYNfJOErzKHEynxY1Djgw", name: "Loving Caliber", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3441,7 +3441,7 @@ Playlist( id: "UCjMKmZ1sW-S5ouP2ddgEHrw", name: "Rhys Lewis", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3482,7 +3482,7 @@ Playlist( id: "UCuRwdG_2dvII6VaJPppXqAw", name: "Rag\'n\'Bone Man", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3523,7 +3523,7 @@ Playlist( id: "UC3R5UkoYFxLC37ek0YRkrDw", name: "Jamie Lawson", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3564,7 +3564,7 @@ Playlist( id: "UCxENeQYZcUWhupTcZrmn9kw", name: "Glimmer of Blooms", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3605,7 +3605,7 @@ Playlist( id: "UC1bA-gunPs-c6gsMTKrvu_Q", name: "Jeanette Biedermann", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__search__tests__map_search_20221121_AB3_channel_handles.snap b/src/client/snapshots/rustypipe__client__search__tests__map_search_20221121_AB3_channel_handles.snap index ec1fe51..bf61733 100644 --- a/src/client/snapshots/rustypipe__client__search__tests__map_search_20221121_AB3_channel_handles.snap +++ b/src/client/snapshots/rustypipe__client__search__tests__map_search_20221121_AB3_channel_handles.snap @@ -22,7 +22,7 @@ SearchResult( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(582000), short_description: "Music Submissions: https://monstafluff.edmdistrict.com/", )), @@ -42,7 +42,7 @@ SearchResult( height: 176, ), ], - verification: Artist, + verification: artist, subscriber_count: Some(4030000), short_description: "Welcome to the official Music Travel Love YouTube channel! We travel the world making music, friends, videos and memories!", )), @@ -62,7 +62,7 @@ SearchResult( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(167000), short_description: "MUSIC IN HARMONY WITH YOUR LIFE!!! If any producer, label, artist or photographer has an issue with any of the music or\u{a0}...", )), @@ -82,7 +82,7 @@ SearchResult( height: 176, ), ], - verification: Artist, + verification: artist, subscriber_count: Some(411000), short_description: "The official YouTube channel of HAEVN Music. Receiving a piano from his grandfather had a great impact on Jorrit\'s life.", )), @@ -102,7 +102,7 @@ SearchResult( height: 176, ), ], - verification: None, + verification: none, subscriber_count: Some(31200), short_description: "Hello and welcome to \"Artemis Music\"! Music can play an effective role in helping us lead a better and more productive life.", )), @@ -122,7 +122,7 @@ SearchResult( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(372000), short_description: "Music is the only language in which you cannot say a mean or sarcastic thing. Have fun listening to music.", )), @@ -142,7 +142,7 @@ SearchResult( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(178000), short_description: "S!X - Music is an independent Hip-Hop label. Soundcloud : https://soundcloud.com/s1xmusic Facebook\u{a0}...", )), @@ -162,7 +162,7 @@ SearchResult( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(1040000), short_description: "Welcome to Shake Music, a Trap & Bass Channel / Record Label dedicated to bringing you the best tracks. All tracks on Shake\u{a0}...", )), @@ -182,7 +182,7 @@ SearchResult( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(822000), short_description: "Welcome to Miracle Music! On this channel you will find a wide variety of different Deep House, Tropical House, Chill Out, EDM,.", )), @@ -202,7 +202,7 @@ SearchResult( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(4620000), short_description: "", )), @@ -222,7 +222,7 @@ SearchResult( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(1050000), short_description: "BRINGING YOU ONLY THE BEST EDM - TRAP Submit your own track for promotion here:\u{a0}...", )), @@ -242,7 +242,7 @@ SearchResult( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(709000), short_description: "Hey there! I am Mr MoMo My channel focus on Japan music, lofi, trap & bass type beat and Japanese instrumental. I mindfully\u{a0}...", )), @@ -262,7 +262,7 @@ SearchResult( height: 176, ), ], - verification: None, + verification: none, subscriber_count: Some(54400), short_description: "", )), @@ -282,7 +282,7 @@ SearchResult( height: 176, ), ], - verification: None, + verification: none, subscriber_count: Some(3590), short_description: "Welcome to our Energy Transformation Relaxing Music . This chakra music channel will focus on developing the best chakra\u{a0}...", )), @@ -302,7 +302,7 @@ SearchResult( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(416000), short_description: "Nonstop Music - Home of 1h videos of your favourite songs and mixes. Nonstop Genres: Pop • Chillout • Tropical House • Deep\u{a0}...", )), @@ -322,7 +322,7 @@ SearchResult( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(3000000), short_description: "Vibe Music strives to bring the best lyric videos of popular Rap & Hip Hop songs. Be sure to Subscribe to see new videos we\u{a0}...", )), @@ -342,7 +342,7 @@ SearchResult( height: 176, ), ], - verification: None, + verification: none, subscriber_count: Some(120000), short_description: "", )), @@ -362,7 +362,7 @@ SearchResult( height: 176, ), ], - verification: None, + verification: none, subscriber_count: Some(81700), short_description: "", )), @@ -382,7 +382,7 @@ SearchResult( height: 176, ), ], - verification: None, + verification: none, subscriber_count: Some(53000), short_description: "Welcome to my channel - Helios Music. I created this channel to help people have the most relaxing, refreshing and comfortable\u{a0}...", )), @@ -402,7 +402,7 @@ SearchResult( height: 176, ), ], - verification: None, + verification: none, subscriber_count: Some(129000), short_description: "Music On (UNOFFICIAL CHANNEL)", )), 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 3198cc7..a3d3a4d 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 @@ -22,7 +22,7 @@ SearchResult( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(2920000), short_description: "Hi, I\'m Tina, aka Doobydobap! Food is the medium I use to tell stories and connect with people who share the same passion as I\u{a0}...", )), @@ -52,7 +52,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -89,7 +89,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -126,7 +126,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -163,7 +163,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -200,7 +200,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -237,7 +237,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -274,7 +274,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -311,7 +311,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -348,7 +348,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -385,7 +385,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -422,7 +422,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -459,7 +459,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -496,7 +496,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -533,7 +533,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -570,7 +570,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -607,7 +607,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -644,7 +644,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -681,7 +681,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -718,7 +718,7 @@ SearchResult( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", 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 61722bd..bd3f976 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 @@ -35,7 +35,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(225), @@ -69,7 +69,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(100), @@ -103,7 +103,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(59), @@ -137,7 +137,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(100), @@ -171,7 +171,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(50), @@ -205,7 +205,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(50), @@ -239,7 +239,7 @@ SearchResult( id: "UCX9oPuvJYZsG8wnHTwOBVPA", name: "Chillax", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(220), @@ -273,7 +273,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(100), @@ -307,7 +307,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(67), @@ -341,7 +341,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(78), @@ -375,7 +375,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(80), @@ -409,7 +409,7 @@ SearchResult( id: "UC8Ojfs-1VLiAO_MosLwvjpQ", name: "Redlist - Ultimate Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(70), @@ -443,7 +443,7 @@ SearchResult( id: "UCesP91XKnuZVd6OJN06hokg", name: "Startup Records", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(164), @@ -477,7 +477,7 @@ SearchResult( id: "UCs72iRpTEuwV3y6pdWYLgiw", name: "Redlist - Just Hits", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(200), @@ -511,7 +511,7 @@ SearchResult( id: "UCv9O2E_G8U46Paz8828THJw", name: "Victor Vaz", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(50), @@ -545,7 +545,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(52), @@ -579,7 +579,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(178), @@ -613,7 +613,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(87), @@ -647,7 +647,7 @@ SearchResult( id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", name: "YouTube Music", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(50), @@ -681,7 +681,7 @@ SearchResult( id: "UCX9oPuvJYZsG8wnHTwOBVPA", name: "Chillax", avatar: [], - verification: None, + verification: none, subscriber_count: None, )), video_count: Some(100), diff --git a/src/client/snapshots/rustypipe__client__trends__tests__map_trending_20230501_page_header_renderer.snap b/src/client/snapshots/rustypipe__client__trends__tests__map_trending_20230501_page_header_renderer.snap index 37e1a8a..7bf82a5 100644 --- a/src/client/snapshots/rustypipe__client__trends__tests__map_trending_20230501_page_header_renderer.snap +++ b/src/client/snapshots/rustypipe__client__trends__tests__map_trending_20230501_page_header_renderer.snap @@ -34,7 +34,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -76,7 +76,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -118,7 +118,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -160,7 +160,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -202,7 +202,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -244,7 +244,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -286,7 +286,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -328,7 +328,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -370,7 +370,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -412,7 +412,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -454,7 +454,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -496,7 +496,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -538,7 +538,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -580,7 +580,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -622,7 +622,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -664,7 +664,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -706,7 +706,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -748,7 +748,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -790,7 +790,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -832,7 +832,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -874,7 +874,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -916,7 +916,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -958,7 +958,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1000,7 +1000,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1042,7 +1042,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1084,7 +1084,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1126,7 +1126,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1168,7 +1168,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1210,7 +1210,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1252,7 +1252,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__trends__tests__map_trending_videos.snap b/src/client/snapshots/rustypipe__client__trends__tests__map_trending_videos.snap index d78269f..4e64ba3 100644 --- a/src/client/snapshots/rustypipe__client__trends__tests__map_trending_videos.snap +++ b/src/client/snapshots/rustypipe__client__trends__tests__map_trending_videos.snap @@ -34,7 +34,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -76,7 +76,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -118,7 +118,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -160,7 +160,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -202,7 +202,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -244,7 +244,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -286,7 +286,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -328,7 +328,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -370,7 +370,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -412,7 +412,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -454,7 +454,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -496,7 +496,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -538,7 +538,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -580,7 +580,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -622,7 +622,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -664,7 +664,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -706,7 +706,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -748,7 +748,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -790,7 +790,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -832,7 +832,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -874,7 +874,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -916,7 +916,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -958,7 +958,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1000,7 +1000,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -1042,7 +1042,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1084,7 +1084,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -1126,7 +1126,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1168,7 +1168,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1210,7 +1210,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1252,7 +1252,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1294,7 +1294,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1336,7 +1336,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -1378,7 +1378,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1420,7 +1420,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -1462,7 +1462,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1504,7 +1504,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -1546,7 +1546,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1588,7 +1588,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1630,7 +1630,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1672,7 +1672,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1714,7 +1714,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -1756,7 +1756,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1798,7 +1798,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -1840,7 +1840,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1882,7 +1882,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1924,7 +1924,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1966,7 +1966,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2008,7 +2008,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2050,7 +2050,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2092,7 +2092,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2134,7 +2134,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2176,7 +2176,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2218,7 +2218,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2260,7 +2260,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2302,7 +2302,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2344,7 +2344,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -2386,7 +2386,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2428,7 +2428,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2470,7 +2470,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2512,7 +2512,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2554,7 +2554,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2596,7 +2596,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2638,7 +2638,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2680,7 +2680,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2722,7 +2722,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2764,7 +2764,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2806,7 +2806,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -2848,7 +2848,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -2890,7 +2890,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -2932,7 +2932,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -2974,7 +2974,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3016,7 +3016,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3058,7 +3058,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3100,7 +3100,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3142,7 +3142,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -3184,7 +3184,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3226,7 +3226,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3268,7 +3268,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3310,7 +3310,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3352,7 +3352,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3394,7 +3394,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3436,7 +3436,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -3478,7 +3478,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -3520,7 +3520,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3562,7 +3562,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -3604,7 +3604,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3646,7 +3646,7 @@ expression: map_res.c height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -3688,7 +3688,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3730,7 +3730,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3772,7 +3772,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3814,7 +3814,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -3856,7 +3856,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3898,7 +3898,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3940,7 +3940,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -3982,7 +3982,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -4024,7 +4024,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -4066,7 +4066,7 @@ expression: map_res.c height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -4108,7 +4108,7 @@ expression: map_res.c height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20240401_frameworkupd.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20240401_frameworkupd.snap index 9248fb4..9eced3a 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20240401_frameworkupd.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20240401_frameworkupd.snap @@ -49,7 +49,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -104,7 +104,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -162,7 +162,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -220,7 +220,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -275,7 +275,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -330,7 +330,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -370,7 +370,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -414,7 +414,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -469,7 +469,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -506,7 +506,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -540,7 +540,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -577,7 +577,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -611,7 +611,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -645,7 +645,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -685,7 +685,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -722,7 +722,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -761,7 +761,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -834,7 +834,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -874,7 +874,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -932,7 +932,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20240401_frameworkupd_reply.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20240401_frameworkupd_reply.snap index 71403ef..33921b8 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20240401_frameworkupd_reply.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20240401_frameworkupd_reply.snap @@ -22,7 +22,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -56,7 +56,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -90,7 +90,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -124,7 +124,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -158,7 +158,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -192,7 +192,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -226,7 +226,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -260,7 +260,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -294,7 +294,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -328,7 +328,7 @@ Paginator( height: 88, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", 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 68e3247..9482ec1 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 @@ -44,7 +44,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -88,7 +88,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -135,7 +135,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -191,7 +191,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -235,7 +235,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -279,7 +279,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -323,7 +323,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -367,7 +367,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -411,7 +411,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -455,7 +455,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -499,7 +499,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -543,7 +543,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -587,7 +587,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -631,7 +631,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -675,7 +675,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -719,7 +719,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -763,7 +763,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -807,7 +807,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", 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 2663744..685fb65 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 @@ -41,7 +41,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -85,7 +85,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -129,7 +129,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -173,7 +173,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -217,7 +217,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -276,7 +276,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -338,7 +338,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -382,7 +382,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -426,7 +426,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -470,7 +470,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -520,7 +520,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -564,7 +564,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -608,7 +608,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -652,7 +652,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -696,7 +696,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -740,7 +740,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -784,7 +784,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -828,7 +828,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -872,7 +872,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -922,7 +922,7 @@ Paginator( height: 176, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", 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 6efe469..daf5903 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 @@ -133,7 +133,7 @@ VideoDetails( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(30900000), ), view_count: 233243423, @@ -172,7 +172,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -209,7 +209,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -246,7 +246,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -283,7 +283,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -320,7 +320,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -357,7 +357,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -394,7 +394,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -431,7 +431,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -468,7 +468,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -505,7 +505,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -542,7 +542,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -579,7 +579,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -616,7 +616,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -653,7 +653,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -690,7 +690,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -727,7 +727,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -764,7 +764,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", 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 1310e6a..eb4753e 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 @@ -133,7 +133,7 @@ VideoDetails( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(31000000), ), view_count: 234258725, @@ -172,7 +172,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -209,7 +209,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -246,7 +246,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -283,7 +283,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -320,7 +320,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -357,7 +357,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -394,7 +394,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -431,7 +431,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -468,7 +468,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -505,7 +505,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -542,7 +542,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -579,7 +579,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -616,7 +616,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -653,7 +653,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -690,7 +690,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -727,7 +727,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -764,7 +764,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -801,7 +801,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -838,7 +838,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", 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 a33cd1a..b678aac 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 @@ -392,7 +392,7 @@ VideoDetails( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(14900000), ), view_count: 1251797, @@ -656,7 +656,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -693,7 +693,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -730,7 +730,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -767,7 +767,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -804,7 +804,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -841,7 +841,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -878,7 +878,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -915,7 +915,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -952,7 +952,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -989,7 +989,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1026,7 +1026,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1063,7 +1063,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1100,7 +1100,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1137,7 +1137,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1174,7 +1174,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1211,7 +1211,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1248,7 +1248,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1285,7 +1285,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1322,7 +1322,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1359,7 +1359,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20231103_likes.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20231103_likes.snap index cbd5b80..eb8f7e7 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20231103_likes.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20231103_likes.snap @@ -133,7 +133,7 @@ VideoDetails( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(32100000), ), view_count: 255522287, @@ -172,7 +172,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -209,7 +209,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -246,7 +246,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -283,7 +283,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -320,7 +320,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -357,7 +357,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -394,7 +394,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -431,7 +431,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -468,7 +468,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -505,7 +505,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -542,7 +542,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -579,7 +579,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -616,7 +616,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -653,7 +653,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -690,7 +690,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -727,7 +727,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -764,7 +764,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -801,7 +801,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -838,7 +838,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -875,7 +875,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", 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 970147c..0fa8d21 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, 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 418b6fc..585f051 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 @@ -44,7 +44,7 @@ VideoDetails( height: 176, ), ], - verification: None, + verification: none, subscriber_count: Some(172000), ), view_count: 2493983, @@ -83,7 +83,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -120,7 +120,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -157,7 +157,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -194,7 +194,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -231,7 +231,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -268,7 +268,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -305,7 +305,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -342,7 +342,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -379,7 +379,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -416,7 +416,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -453,7 +453,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -490,7 +490,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -527,7 +527,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -564,7 +564,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -601,7 +601,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -638,7 +638,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -675,7 +675,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -712,7 +712,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -749,7 +749,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", 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 6207b1d..0192d7c 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 @@ -365,7 +365,7 @@ VideoDetails( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(14800000), ), view_count: 971966, @@ -629,7 +629,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -666,7 +666,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -703,7 +703,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -740,7 +740,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -777,7 +777,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -814,7 +814,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -851,7 +851,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -888,7 +888,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -925,7 +925,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -962,7 +962,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -999,7 +999,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1036,7 +1036,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1073,7 +1073,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1110,7 +1110,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1147,7 +1147,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1184,7 +1184,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -1221,7 +1221,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1258,7 +1258,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -1295,7 +1295,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", 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 0e047c3..49c2b0e 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 @@ -88,7 +88,7 @@ VideoDetails( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(5590000), ), view_count: 681, @@ -127,7 +127,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -164,7 +164,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -201,7 +201,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -238,7 +238,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -275,7 +275,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -312,7 +312,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -349,7 +349,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -386,7 +386,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -423,7 +423,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -460,7 +460,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -497,7 +497,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -534,7 +534,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -571,7 +571,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -608,7 +608,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -645,7 +645,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -682,7 +682,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -719,7 +719,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -756,7 +756,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -793,7 +793,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -830,7 +830,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", 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 b4f3326..f06b948 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 @@ -30,7 +30,7 @@ VideoDetails( height: 176, ), ], - verification: Artist, + verification: artist, subscriber_count: Some(33900), ), view_count: 20304, @@ -69,7 +69,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -106,7 +106,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -143,7 +143,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -180,7 +180,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -217,7 +217,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -254,7 +254,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -291,7 +291,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -328,7 +328,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -365,7 +365,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -402,7 +402,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -439,7 +439,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -476,7 +476,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -513,7 +513,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -550,7 +550,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", 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 dd2747a..f96b2d5 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 @@ -133,7 +133,7 @@ VideoDetails( height: 176, ), ], - verification: Verified, + verification: verified, subscriber_count: Some(30900000), ), view_count: 232792465, @@ -172,7 +172,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -209,7 +209,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -246,7 +246,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -283,7 +283,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -320,7 +320,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -357,7 +357,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -394,7 +394,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -431,7 +431,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -468,7 +468,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -505,7 +505,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -542,7 +542,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -579,7 +579,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -616,7 +616,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -653,7 +653,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", @@ -690,7 +690,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -727,7 +727,7 @@ VideoDetails( height: 68, ), ], - verification: Verified, + verification: verified, subscriber_count: None, )), publish_date: "[date]", @@ -764,7 +764,7 @@ VideoDetails( height: 68, ), ], - verification: None, + verification: none, subscriber_count: None, )), publish_date: "[date]", @@ -801,7 +801,7 @@ VideoDetails( height: 68, ), ], - verification: Artist, + verification: artist, subscriber_count: None, )), publish_date: "[date]", diff --git a/src/model/mod.rs b/src/model/mod.rs index e252c05..c7047bf 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -634,6 +634,7 @@ pub struct ChannelTag { #[derive( Default, Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash, )] +#[serde(rename_all = "snake_case")] pub enum Verification { #[default] /// Unverified channel (default) From 14f4e00a80f691c32bec80547d001a6c05e71df7 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 9 Nov 2024 23:58:51 +0100 Subject: [PATCH 025/191] ci: upload RustyPipe report --- .forgejo/workflows/ci.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index d4015b8..2eecb18 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -43,6 +43,14 @@ jobs: name: test path: target/nextest/ci/junit.xml + - name: 💌 Upload RustyPipe report + if: always() + uses: https://code.forgejo.org/forgejo/upload-artifact@v4 + with: + name: test + path: rustypipe_reports + if-no-files-found: ignore + - name: 🔗 Artifactview PR comment if: ${{ always() && github.event_name == 'pull_request' }} run: | From f11121dcf8b5c1bcc180048008e313b6a356b00c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 10 Nov 2024 00:12:21 +0100 Subject: [PATCH 026/191] ci: move test report to main dir and upload single artifact --- .forgejo/workflows/ci.yaml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 2eecb18..d83d2c0 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -36,20 +36,18 @@ jobs: RUSTYPIPE_CACHE: "${{ secrets.RUSTYPIPE_CACHE }}" YT_AUTHENTICATED: "${{ github.event_name != 'pull_request' }}" # no access to secrets for PRs + - name: Move test report + if: always() + run: mv target/nextest/ci/junit.xml junit.xml || true + - name: 💌 Upload test report if: always() uses: https://code.forgejo.org/forgejo/upload-artifact@v4 with: name: test - path: target/nextest/ci/junit.xml - - - name: 💌 Upload RustyPipe report - if: always() - uses: https://code.forgejo.org/forgejo/upload-artifact@v4 - with: - name: test - path: rustypipe_reports - if-no-files-found: ignore + path: | + junit.xml + rustypipe_reports - name: 🔗 Artifactview PR comment if: ${{ always() && github.event_name == 'pull_request' }} From e1e1687605603686ac5fd5deeb6aa8fecaf92494 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 10 Nov 2024 00:05:46 +0000 Subject: [PATCH 027/191] chore(deps): update rust crate thiserror to v2 (#16) --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 9ce2806..9b11b43 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ quick-js-dtp = { version = "0.4.1", default-features = false, features = [ once_cell = "1.12.0" regex = "1.6.0" fancy-regex = "0.14.0" -thiserror = "1.0.0" +thiserror = "2.0.0" url = "2.2.0" reqwest = { version = "0.12.0", default-features = false } tokio = "1.20.4" From 870ff79ee07dfab1f4f2be3a401cd5320ed587da Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 10 Nov 2024 03:05:48 +0100 Subject: [PATCH 028/191] fix: parsing videos using LockupViewModel (Music video recommendations) --- src/client/channel.rs | 4 +- src/client/response/channel.rs | 79 ++------ src/client/response/mod.rs | 130 +++++++++++-- src/client/response/video_item.rs | 177 +++++++++++------- src/client/video_details.rs | 1 + ...text__tests__t_attributed_description.snap | 5 + src/serializer/text.rs | 70 ++++++- 7 files changed, 308 insertions(+), 158 deletions(-) diff --git a/src/client/channel.rs b/src/client/channel.rs index e2b75b2..6c56048 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -9,7 +9,7 @@ use crate::{ error::{Error, ExtractionError}, model::{ paginator::{ContinuationEndpoint, Paginator}, - Channel, ChannelInfo, PlaylistItem, VideoItem, + Channel, ChannelInfo, PlaylistItem, Verification, VideoItem, }, param::{ChannelOrder, ChannelVideoTab, Language}, serializer::{text::TextComponent, MapResult}, @@ -489,7 +489,7 @@ fn map_channel( .avatar_view_model .image .into(), - verification: hdata.title.into(), + verification: hdata.title.map(Verification::from).unwrap_or_default(), description: metadata.description, tags: microformat.microformat_data_renderer.tags, banner: hdata.banner.image_banner_view_model.image.into(), diff --git a/src/client/response/channel.rs b/src/client/response/channel.rs index a379d06..b602a35 100644 --- a/src/client/response/channel.rs +++ b/src/client/response/channel.rs @@ -2,11 +2,14 @@ use serde::Deserialize; use serde_with::{rust::deserialize_ignore_any, serde_as, DefaultOnError, VecSkipError}; use super::{ - video_item::YouTubeListRenderer, Alert, ChannelBadge, ContentRenderer, ContentsRenderer, - ContinuationActionWrap, ImageView, PageHeaderRendererContent, PhMetadataView, ResponseContext, - Thumbnails, TwoColumnBrowseResults, + video_item::YouTubeListRenderer, Alert, AttachmentRun, ChannelBadge, ContentRenderer, + ContentsRenderer, ContinuationActionWrap, ImageView, PageHeaderRendererContent, PhMetadataView, + ResponseContext, Thumbnails, TwoColumnBrowseResults, +}; +use crate::{ + model::Verification, + serializer::text::{AttributedText, Text, TextComponent}, }; -use crate::serializer::text::{AttributedText, Text, TextComponent}; #[serde_as] #[derive(Debug, Deserialize)] @@ -121,7 +124,7 @@ pub(crate) enum CarouselHeaderRendererItem { pub(crate) struct PageHeaderRendererInner { /// Channel title (only used to extract verification badges) #[serde_as(as = "DefaultOnError")] - pub title: PhTitleView, + pub title: Option, /// Channel avatar pub image: PhAvatarView, /// Channel metadata (subscribers, video count) @@ -130,7 +133,7 @@ pub(crate) struct PageHeaderRendererInner { pub banner: PhBannerView, } -#[derive(Default, Debug, Deserialize)] +#[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct PhTitleView { pub dynamic_text_view_model: PhTitleView2, @@ -150,58 +153,6 @@ pub(crate) struct PhTitleView3 { pub attachment_runs: Vec, } -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct AttachmentRun { - pub element: AttachmentRunElement, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct AttachmentRunElement { - #[serde(rename = "type")] - pub typ: AttachmentRunElementType, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct AttachmentRunElementType { - pub image_type: AttachmentRunElementImageType, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct AttachmentRunElementImageType { - pub image: AttachmentRunElementImage, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct AttachmentRunElementImage { - #[serde_as(as = "VecSkipError<_>")] - pub sources: Vec, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct AttachmentRunElementImageSource { - pub client_resource: ClientResource, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct ClientResource { - pub image_name: IconName, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "SCREAMING_SNAKE_CASE")] -pub(crate) enum IconName { - CheckCircleFilled, - MusicFilled, -} - #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct PhAvatarView { @@ -330,15 +281,9 @@ impl From for crate::model::Verification { .dynamic_text_view_model .text .attachment_runs - .iter() - .find_map(|r| { - r.element.typ.image_type.image.sources.first().map(|s| { - match s.client_resource.image_name { - IconName::CheckCircleFilled => crate::model::Verification::Verified, - IconName::MusicFilled => crate::model::Verification::Artist, - } - }) - }) + .into_iter() + .next() + .map(Verification::from) .unwrap_or_default() } } diff --git a/src/client/response/mod.rs b/src/client/response/mod.rs index f1db4b9..2bcd6a8 100644 --- a/src/client/response/mod.rs +++ b/src/client/response/mod.rs @@ -199,12 +199,73 @@ pub(crate) struct TextBox { pub text: String, } +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct TextComponentBox { + #[serde_as(deserialize_as = "AttributedText")] + pub text: TextComponent, +} + #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct ResponseContext { pub visitor_data: Option, } +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct AttachmentRun { + pub element: AttachmentRunElement, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct AttachmentRunElement { + #[serde(rename = "type")] + pub typ: AttachmentRunElementType, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct AttachmentRunElementType { + pub image_type: AttachmentRunElementImageType, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct AttachmentRunElementImageType { + pub image: AttachmentRunElementImage, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct AttachmentRunElementImage { + #[serde_as(as = "VecSkipError<_>")] + pub sources: Vec, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct AttachmentRunElementImageSource { + pub client_resource: ClientResource, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ClientResource { + pub image_name: IconName, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +pub enum IconName { + CheckCircleFilled, + #[serde(alias = "AUDIO_BADGE")] + MusicFilled, +} + // CONTINUATION #[serde_as] @@ -343,6 +404,17 @@ impl From for Vec { } } +impl ContentImage { + pub(crate) fn into_image(self) -> ImageViewOl { + match self { + ContentImage::ThumbnailViewModel(image) => image, + ContentImage::CollectionThumbnailViewModel { primary_thumbnail } => { + primary_thumbnail.thumbnail_view_model + } + } + } +} + impl From> for crate::model::Verification { fn from(badges: Vec) -> Self { badges @@ -366,6 +438,25 @@ impl From for crate::model::Verification { } } +impl From for crate::model::Verification { + fn from(value: AttachmentRun) -> Self { + match value + .element + .typ + .image_type + .image + .sources + .into_iter() + .next() + .map(|s| s.client_resource.image_name) + { + Some(IconName::CheckCircleFilled) => Self::Verified, + Some(IconName::MusicFilled) => Self::Artist, + None => Self::None, + } + } +} + pub(crate) fn alerts_to_err(id: &str, alerts: Option>) -> ExtractionError { ExtractionError::NotFound { id: id.to_owned(), @@ -480,9 +571,11 @@ pub(crate) struct PhMetadataView { pub content_metadata_view_model: PhMetadataView2, } +#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct PhMetadataView2 { + #[serde_as(as = "VecSkipError<_>")] pub metadata_rows: Vec, } @@ -498,17 +591,26 @@ pub(crate) struct PhMetadataRow { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) enum MetadataPart { - Text(#[serde_as(deserialize_as = "AttributedText")] String), + Text(#[serde_as(deserialize_as = "AttributedText")] TextComponent), #[serde(rename_all = "camelCase")] AvatarStack { - avatar_stack_view_model: AvatarStackViewModel, + avatar_stack_view_model: TextComponentBox, }, } impl MetadataPart { + pub fn into_text_component(self) -> TextComponent { + match self { + MetadataPart::Text(text_component) => text_component, + MetadataPart::AvatarStack { + avatar_stack_view_model, + } => avatar_stack_view_model.text, + } + } + pub fn as_str(&self) -> &str { match self { - MetadataPart::Text(s) => s, + MetadataPart::Text(s) => s.as_str(), MetadataPart::AvatarStack { avatar_stack_view_model, } => avatar_stack_view_model.text.as_str(), @@ -516,24 +618,14 @@ impl MetadataPart { } } -#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub(crate) struct AvatarStackViewModel { - #[serde_as(deserialize_as = "AttributedText")] - pub text: TextComponent, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct ContentImage { - pub collection_thumbnail_view_model: CollectionThumbnailViewModel, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct CollectionThumbnailViewModel { - pub primary_thumbnail: ThumbnailViewModelWrap, +pub(crate) enum ContentImage { + ThumbnailViewModel(ImageViewOl), + #[serde(rename_all = "camelCase")] + CollectionThumbnailViewModel { + primary_thumbnail: ThumbnailViewModelWrap, + }, } #[derive(Debug, Deserialize)] diff --git a/src/client/response/video_item.rs b/src/client/response/video_item.rs index 0574812..28be9d4 100644 --- a/src/client/response/video_item.rs +++ b/src/client/response/video_item.rs @@ -4,12 +4,9 @@ use serde_with::{ }; use time::OffsetDateTime; -use super::{ChannelBadge, ContentImage, ContinuationEndpoint, Thumbnails}; +use super::{ChannelBadge, ContentImage, ContinuationEndpoint, PhMetadataView, Thumbnails}; use crate::{ - model::{ - Channel, ChannelId, ChannelItem, ChannelTag, PlaylistItem, Verification, VideoItem, - YouTubeItem, - }, + model::{Channel, ChannelItem, ChannelTag, PlaylistItem, VideoItem, YouTubeItem}, param::Language, serializer::{ text::{AttributedText, Text, TextComponent}, @@ -167,23 +164,25 @@ pub(crate) struct ShortsOverlayMetadata { pub secondary_text: Option, } -/// Generalized list item, currently only used for playlists +/// Generalized list item, currently only used for channel playlists and YTM items #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct LockupViewModel { - pub content_image: ContentImage, - pub metadata: LockupViewModelMetadata, pub content_id: String, #[serde(default)] #[serde_as(deserialize_as = "DefaultOnError")] pub content_type: LockupContentType, + pub content_image: ContentImage, + pub metadata: LockupViewModelMetadata, } #[derive(Default, Debug, Deserialize)] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] +#[allow(clippy::enum_variant_names)] pub(crate) enum LockupContentType { LockupContentTypePlaylist, + LockupContentTypeVideo, #[default] Unknown, } @@ -200,6 +199,7 @@ pub(crate) struct LockupViewModelMetadata { pub(crate) struct LockupViewModelMetadataInner { #[serde_as(as = "AttributedText")] pub title: String, + pub metadata: PhMetadataView, } /// Video displayed in a playlist @@ -509,19 +509,18 @@ impl YouTubeListMapper { 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, - }) + .and_then(|c| ChannelTag::try_from(c).ok()) + .map(|mut c| { + c.avatar = video + .channel_thumbnail_supported_renderers + .map(|tn| tn.channel_thumbnail_with_link_renderer.thumbnail) + .or(video.channel_thumbnail) + .unwrap_or_default() + .into(); + if !c.verification.verified() { + c.verification = video.owner_badges.into(); + } + c }) .or_else(|| self.channel.clone()), publish_date: video @@ -603,16 +602,7 @@ impl YouTubeListMapper { } fn map_playlist_video(&mut self, video: PlaylistVideoRenderer) -> VideoItem { - let channel = ChannelId::try_from(video.channel) - .ok() - .map(|ch| ChannelTag { - id: ch.id, - name: ch.name, - avatar: Vec::new(), - verification: Verification::None, - subscriber_count: None, - }); - + let channel = ChannelTag::try_from(video.channel).ok(); let mut video_info = video.video_info.into_iter(); let video_info1 = video_info .next() @@ -675,14 +665,12 @@ impl YouTubeListMapper { .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, - }) + .and_then(|c| ChannelTag::try_from(c).ok()) + .map(|mut c| { + if !c.verification.verified() { + c.verification = playlist.owner_badges.into(); + } + c }) .or_else(|| self.channel.clone()), video_count: playlist.video_count.or_else(|| { @@ -719,34 +707,88 @@ impl YouTubeListMapper { } } - fn map_lockup(&mut self, lockup: LockupViewModel) -> Option { + fn map_lockup(&mut self, lockup: LockupViewModel) -> Option { let md = lockup.metadata.lockup_metadata_view_model; - let tn = lockup - .content_image - .collection_thumbnail_view_model - .primary_thumbnail - .thumbnail_view_model; + let tn = lockup.content_image.into_image(); match lockup.content_type { - LockupContentType::LockupContentTypePlaylist => Some(PlaylistItem { - id: lockup.content_id, - name: md.title, - thumbnail: tn.image.into(), - channel: self.channel.clone(), - video_count: tn - .overlays - .first() - .and_then(|ol| { - ol.thumbnail_overlay_badge_view_model - .thumbnail_badges - .first() - }) - .and_then(|badge| { - util::parse_numeric_or_warn( - &badge.thumbnail_badge_view_model.text, - &mut self.warnings, + LockupContentType::LockupContentTypePlaylist => { + Some(YouTubeItem::Playlist(PlaylistItem { + id: lockup.content_id, + name: md.title, + thumbnail: tn.image.into(), + channel: self.channel.clone(), + video_count: tn + .overlays + .first() + .and_then(|ol| { + ol.thumbnail_overlay_badge_view_model + .thumbnail_badges + .first() + }) + .and_then(|badge| { + util::parse_numeric_or_warn( + &badge.thumbnail_badge_view_model.text, + &mut self.warnings, + ) + }), + })) + } + LockupContentType::LockupContentTypeVideo => { + let mut mdr = md + .metadata + .content_metadata_view_model + .metadata_rows + .into_iter(); + let channel = mdr + .next() + .and_then(|r| r.metadata_parts.into_iter().next()) + .and_then(|p| ChannelTag::try_from(p.into_text_component()).ok()); + let (view_count, publish_date_txt) = mdr + .next() + .map(|metadata_row| { + let mut parts = metadata_row.metadata_parts.into_iter(); + let p1 = parts.next(); + let p2 = parts.next(); + ( + p1.and_then(|p| { + util::parse_large_numstr_or_warn( + p.as_str(), + self.lang, + &mut self.warnings, + ) + }), + p2.map(|p2| p2.into_text_component().into_string()), ) + }) + .unwrap_or_default(); + + Some(YouTubeItem::Video(VideoItem { + id: lockup.content_id, + name: md.title, + duration: tn + .overlays + .first() + .and_then(|ol| { + ol.thumbnail_overlay_badge_view_model + .thumbnail_badges + .first() + }) + .and_then(|badge| { + util::parse_video_length(&badge.thumbnail_badge_view_model.text) + }), + thumbnail: tn.image.into(), + channel, + publish_date: publish_date_txt.as_deref().and_then(|t| { + timeago::parse_textual_date_or_warn(self.lang, t, &mut self.warnings) }), - }), + publish_date_txt, + view_count, + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + })) + } LockupContentType::Unknown => None, } } @@ -782,7 +824,7 @@ impl YouTubeListMapper { } YouTubeListItem::LockupViewModel(lockup) => { if let Some(mapped) = self.map_lockup(lockup) { - self.items.push(YouTubeItem::Playlist(mapped)); + self.items.push(mapped); } } YouTubeListItem::ContinuationItemRenderer { @@ -828,6 +870,11 @@ impl YouTubeListMapper { let mapped = self.map_playlist_video(video); self.items.push(mapped); } + YouTubeListItem::LockupViewModel(lockup) => { + if let Some(YouTubeItem::Video(mapped)) = self.map_lockup(lockup) { + self.items.push(mapped); + } + } YouTubeListItem::ContinuationItemRenderer { continuation_endpoint, } => self.ctoken = Some(continuation_endpoint.continuation_command.token), @@ -859,7 +906,7 @@ impl YouTubeListMapper { self.items.push(mapped); } YouTubeListItem::LockupViewModel(lockup) => { - if let Some(mapped) = self.map_lockup(lockup) { + if let Some(YouTubeItem::Playlist(mapped)) = self.map_lockup(lockup) { self.items.push(mapped); } } diff --git a/src/client/video_details.rs b/src/client/video_details.rs index f219531..42ba894 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -252,6 +252,7 @@ impl MapResponse for response::VideoDetails { text, page_type, browse_id, + .. } => match page_type { response::url_endpoint::PageType::Channel => (browse_id, text), _ => { diff --git a/src/serializer/snapshots/rustypipe__serializer__text__tests__t_attributed_description.snap b/src/serializer/snapshots/rustypipe__serializer__text__tests__t_attributed_description.snap index c4bf828..880e2cd 100644 --- a/src/serializer/snapshots/rustypipe__serializer__text__tests__t_attributed_description.snap +++ b/src/serializer/snapshots/rustypipe__serializer__text__tests__t_attributed_description.snap @@ -139,6 +139,7 @@ SAttributed { text: "#aespa", page_type: Unknown, browse_id: "FEhashtag", + verification: None, }, Text { text: " ", @@ -152,6 +153,7 @@ SAttributed { text: "#æspa", page_type: Unknown, browse_id: "FEhashtag", + verification: None, }, Text { text: " ", @@ -165,6 +167,7 @@ SAttributed { text: "#BlackMamba", page_type: Unknown, browse_id: "FEhashtag", + verification: None, }, Text { text: " ", @@ -178,6 +181,7 @@ SAttributed { text: "#블랙맘바", page_type: Unknown, browse_id: "FEhashtag", + verification: None, }, Text { text: " ", @@ -191,6 +195,7 @@ SAttributed { text: "#에스파", page_type: Unknown, browse_id: "FEhashtag", + verification: None, }, Text { text: "\naespa 에스파 'Black Mamba' MV ℗ SM Entertainment", diff --git a/src/serializer/text.rs b/src/serializer/text.rs index 90a298a..d560b51 100644 --- a/src/serializer/text.rs +++ b/src/serializer/text.rs @@ -4,10 +4,13 @@ use serde::{Deserialize, Deserializer}; use serde_with::{serde_as, DefaultOnError, DeserializeAs, VecSkipError}; use crate::{ - client::response::url_endpoint::{ - MusicPage, MusicPageType, MusicVideoType, NavigationEndpoint, OnTap, PageType, + client::response::{ + url_endpoint::{ + MusicPage, MusicPageType, MusicVideoType, NavigationEndpoint, OnTap, PageType, + }, + AttachmentRun, }, - model::{richtext::Style, UrlTarget}, + model::{richtext::Style, UrlTarget, Verification}, util, }; @@ -101,6 +104,7 @@ pub(crate) enum TextComponent { text: String, page_type: PageType, browse_id: String, + verification: Verification, }, Web { text: String, @@ -151,6 +155,9 @@ pub(crate) struct AttributedText { #[serde(default)] #[serde_as(as = "VecSkipError<_>")] style_runs: Vec, + #[serde(default)] + #[serde_as(as = "VecSkipError<_>")] + attachment_runs: Vec, } #[serde_as] @@ -229,6 +236,7 @@ impl From for TextComponent { strikethrough: run.strikethrough, }, run.navigation_endpoint, + Verification::None, ) } } @@ -272,6 +280,7 @@ fn map_text_component( text: String, style: Style, nav: Option, + verification: Verification, ) -> TextComponent { match nav { Some(NavigationEndpoint::Watch { watch_endpoint }) => TextComponent::Video { @@ -296,6 +305,7 @@ fn map_text_component( }, text, browse_id: browse_endpoint.browse_id, + verification, }, Some(NavigationEndpoint::Url { url_endpoint }) => TextComponent::Web { text, @@ -307,6 +317,7 @@ fn map_text_component( text, page_type: PageType::Playlist, browse_id: watch_playlist_endpoint.playlist_id, + verification, }, None => TextComponent::Text { text, style }, } @@ -385,6 +396,13 @@ impl<'de> DeserializeAs<'de, TextComponents> for AttributedText { ); runs.sort_by_key(|run| run.start_index); + let verification = text + .attachment_runs + .into_iter() + .next() + .map(Verification::from) + .unwrap_or_default(); + let mut components = Vec::with_capacity(runs.len() + 1); for run in runs { let txt_before = take_chars(run.start_index); @@ -415,12 +433,14 @@ impl<'de> DeserializeAs<'de, TextComponents> for AttributedText { format!("{first_word}: {txt_link}"), Style::default(), Some(link), + verification, ) } else { map_text_component( txt_link.to_owned(), Style::default(), Some(link), + verification, ) } } @@ -428,14 +448,15 @@ impl<'de> DeserializeAs<'de, TextComponents> for AttributedText { txt_link.to_owned(), Style::default(), Some(link), + verification, ), } } else { - map_text_component(txt_link, Style::default(), Some(link)) + map_text_component(txt_link, Style::default(), Some(link), verification) } } AttributedTextRunContent::Style(style) => { - map_text_component(txt_run.to_string(), style, None) + map_text_component(txt_run.to_string(), style, None, verification) } }) } @@ -485,6 +506,7 @@ impl TryFrom for crate::model::ChannelId { text, page_type: PageType::Channel | PageType::Artist, browse_id, + .. } => Ok(crate::model::ChannelId { id: browse_id, name: text, @@ -494,6 +516,28 @@ impl TryFrom for crate::model::ChannelId { } } +impl TryFrom for crate::model::ChannelTag { + type Error = (); + + fn try_from(value: TextComponent) -> Result { + match value { + TextComponent::Browse { + text, + page_type: PageType::Channel | PageType::Artist, + browse_id, + verification, + } => Ok(crate::model::ChannelTag { + id: browse_id, + name: text, + avatar: Vec::new(), + verification, + subscriber_count: None, + }), + _ => Err(()), + } + } +} + impl TryFrom for crate::model::AlbumId { type Error = (); @@ -503,6 +547,7 @@ impl TryFrom for crate::model::AlbumId { text, page_type: PageType::Album, browse_id, + .. } => Ok(Self { id: browse_id, name: text, @@ -519,6 +564,7 @@ impl From for crate::model::ArtistId { text, page_type, browse_id, + .. } => match page_type { PageType::Channel | PageType::Artist => Self { id: Some(browse_id), @@ -558,6 +604,7 @@ impl From for crate::model::richtext::TextComponent { text, page_type, browse_id, + .. } => match page_type.to_url_target(browse_id) { Some(target) => Self::YouTube { text, target }, None => Self::Text { @@ -597,6 +644,15 @@ impl TextComponent { } } + pub fn into_string(self) -> String { + match self { + TextComponent::Video { text, .. } + | TextComponent::Browse { text, .. } + | TextComponent::Web { text, .. } + | TextComponent::Text { text, .. } => text, + } + } + pub fn music_page(self) -> Option { match self { TextComponent::Video { @@ -844,6 +900,7 @@ mod tests { text: "DEEP - The 1st Mini Album", page_type: Album, browse_id: "MPREb_TKV2ccxsj5i", + verification: None, }, } "###); @@ -878,6 +935,7 @@ mod tests { text: "laserluca", page_type: Channel, browse_id: "UCmxc6kXbU1J-0pR2F3wIx9A", + verification: None, }, } "###); @@ -993,6 +1051,7 @@ mod tests { text: "Roland Kaiser", page_type: Artist, browse_id: "UCtqi0viP-suK-okUQfaw8Ew", + verification: None, }, Text { text: " & ", @@ -1006,6 +1065,7 @@ mod tests { text: "Maite Kelly", page_type: Artist, browse_id: "UCY06CayCwdaOd1CnDgjy6uw", + verification: None, }, ], ), From ac8fbc3e679819189e2791c323975acaf1b43035 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 10 Nov 2024 03:24:26 +0100 Subject: [PATCH 029/191] fix: parsing lockup playlists with "MIX" instead of view count --- Justfile | 10 +- src/client/response/video_item.rs | 5 +- ...tests__map_video_details_20241109_mix.snap | 732 + src/client/video_details.rs | 1 + .../video_details_20241109_mix.json | 18625 ++++++++++++++++ tests/youtube.rs | 8 +- 6 files changed, 19370 insertions(+), 11 deletions(-) create mode 100644 src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20241109_mix.snap create mode 100644 testfiles/video_details/video_details_20241109_mix.json diff --git a/Justfile b/Justfile index e4d0194..cf754a3 100644 --- a/Justfile +++ b/Justfile @@ -1,15 +1,15 @@ test: # cargo test --features=rss - cargo nextest run --workspace --features=rss --no-fail-fast --failure-output final --retries 1 + cargo nextest run --workspace --features=rss --no-fail-fast --retries 1 unittest: - cargo nextest run --features=rss --no-fail-fast --failure-output final --lib + cargo nextest run --features=rss --no-fail-fast --lib testyt: - cargo nextest run --features=rss --no-fail-fast --failure-output final --retries 1 --test youtube + cargo nextest run --features=rss --no-fail-fast --retries 1 --test youtube testyt-localized: - YT_LANG=th cargo nextest run --features=rss --no-fail-fast --failure-output final --retries 1 --test youtube + YT_LANG=th cargo nextest run --features=rss --no-fail-fast ---retries 1 --test youtube testintl: #!/usr/bin/env bash @@ -28,7 +28,7 @@ testintl: for YT_LANG in "${LANGUAGES[@]}"; do echo "---TESTS FOR $YT_LANG ---" - if YT_LANG="$YT_LANG" cargo nextest run --no-fail-fast --failure-output final --retries 1 --test-threads 4 --test youtube -E 'not test(/^resolve/)'; then + if YT_LANG="$YT_LANG" cargo nextest run --no-fail-fast ---retries 1 --test-threads 4 --test youtube -E 'not test(/^resolve/)'; then echo "--- $YT_LANG COMPLETED ---" else echo "--- $YT_LANG FAILED ---" diff --git a/src/client/response/video_item.rs b/src/client/response/video_item.rs index 28be9d4..874e3a1 100644 --- a/src/client/response/video_item.rs +++ b/src/client/response/video_item.rs @@ -726,10 +726,7 @@ impl YouTubeListMapper { .first() }) .and_then(|badge| { - util::parse_numeric_or_warn( - &badge.thumbnail_badge_view_model.text, - &mut self.warnings, - ) + util::parse_numeric(&badge.thumbnail_badge_view_model.text).ok() }), })) } diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20241109_mix.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20241109_mix.snap new file mode 100644 index 0000000..c3b7230 --- /dev/null +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20241109_mix.snap @@ -0,0 +1,732 @@ +--- +source: src/client/video_details.rs +expression: map_res.c +--- +VideoDetails( + id: "XuM2onMGvTI", + name: "Gäa", + description: RichText([ + Text( + text: "Provided to YouTube by Universal Music Group\n\nGäa · Oonagh\n\nBest Of\n\n℗ An Airforce1 Records / We Love Music recording; ℗ 2014 Universal Music GmbH\n\nReleased on: 2020-08-07\n\nProducer, Associated Performer, Background Vocalist: Hardy Krech\nProducer: Mark Nissen\nAssociated Performer, Background Vocalist: Andreas Fahnert\nAssociated Performer, Background Vocalist: Velile Mchunu\nAssociated Performer, Background Vocalist: Billy King\nAssociated Performer, Background Vocalist: Alex Prince\nAssociated Performer, Flute: Sandro Friedrich\nProgrammer: Hartmut Krech\nEditor: Severin Zahler\nComposer Lyricist: Hartmut Krech\nComposer Lyricist: Mark Nissen\nAuthor: Lukas Hainer\nAuthor: Michael Boden\n\nAuto-generated by YouTube.", + ), + ]), + channel: ChannelTag( + id: "UCVGvnqB-5znqPSbMGlhF4Pw", + name: "Sentamusic", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s48-c-k-c0x00ffffff-no-rj", + width: 48, + height: 48, + ), + Thumbnail( + url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + Thumbnail( + url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s176-c-k-c0x00ffffff-no-rj", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(38100), + ), + view_count: 28898, + like_count: Some(213), + publish_date: "[date]", + publish_date_txt: Some("Aug 6, 2020"), + is_live: false, + is_ccommons: false, + chapters: [], + recommended: Paginator( + count: None, + items: [ + VideoItem( + id: "E8XaMMeUX7M", + name: "Sie singt für die, die sie nicht hören", + duration: Some(245), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/E8XaMMeUX7M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDpslNXCsGByXyek5rqUTlPduA6PQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/E8XaMMeUX7M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCiR5P4H39iF_JpaRsWj33p6xILZQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCVGvnqB-5znqPSbMGlhF4Pw", + name: "Sentamusic", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("6 years ago"), + view_count: Some(127967), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "gJapS0meSlc", + name: "Kingdom of Heaven: Burning the Past Extended (20 minutes version)", + duration: Some(1204), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/gJapS0meSlc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAfLAy2Om8QBrXljaToKGg4EAmy6w", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/gJapS0meSlc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBI4RQ40zY_KOh8qZG4991VueDo3w", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC8N3VCj1kY6VB3kiDh38bxw", + name: "Encosen", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_knaJfooIGRk_MXCNQLk5Zmx79JCKWsLMOl1LdlTZdnsg=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(243357), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "u2XCC1rKxV0", + name: "Faolan", + duration: Some(256), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/u2XCC1rKxV0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDd4Q0v9znAMTV6GLYt4Jq40MWX0w", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/u2XCC1rKxV0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBpNh48nrIpf9g319CFxdew6geBNg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCVGvnqB-5znqPSbMGlhF4Pw", + name: "Sentamusic", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(25802), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "C_pGRMlCM3U", + name: "Oonagh - Gäa [Offizielles Musikvideo]", + duration: Some(247), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGEMgZSguMA8=&rs=AOn4CLB_vkbQhRUgH75tZQVVJLFPs7K8sg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhDIGUoLjAP&rs=AOn4CLBJX6P3v_qpy--7IRxCBdygxb9ZoA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCD8hHNW3x7CA4M0Z1pi5NRQ", + name: "AIRFORCE1.TV", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_lVsvv0Zc8K2igVxGy6UQYJqmFHouOR3ux9zH74iv30eQ=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("10 years ago"), + view_count: Some(14449259), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "UtP9J88Jzg0", + name: "Ruinen im Sand", + duration: Some(195), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/UtP9J88Jzg0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCmkebFxTlBZCOUHBFkMHv0DodLFQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/UtP9J88Jzg0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOdwJVkok-U7P1YrZEchZZqY_HlQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCVGvnqB-5znqPSbMGlhF4Pw", + name: "Sentamusic", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(66406), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "Vu-6Er21_bM", + name: "Mutter Erde", + duration: Some(193), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Vu-6Er21_bM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDvKXWNaaAND_YpZMz6MohvZaHcBw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Vu-6Er21_bM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDY7VmNj1HMKx4iaRKrgT2s5AJpqw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCkYFRZTBmE1IzaKNuF6B3Uw", + name: "Story Of Dakota - Topic", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/G1umXDgUfbA4XATwAC9Hb3RvQuFsNgE1k-WbtgSQUjMtSXU3SZdp5Se25A2H2xJcjgKWZxWxPQ=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("6 years ago"), + view_count: Some(34662), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "nLmNchGTh20", + name: "Oonagh - Kuliko Jana - Eine neue Zeit", + duration: Some(214), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/nLmNchGTh20/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCKWMorJR33a_BMctF8siBEPYPvSQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/nLmNchGTh20/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBb_bEgnelYdP-J1piDHKQK4D0lBA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCUJHYmJ3_1Kwfs3lqYc_Rxg", + name: "ICH FIND SCHLAGER TOLL", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/An23BS5d6Fbk1nRfF5PZQaOijfmnVWgI7XCjhFl0pwWAthZ1Ayw-4ZG6_zwkxCaBKfesXBmO=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 years ago"), + view_count: Some(1841784), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "Ctpe9kafn78", + name: "So still mein Herz", + duration: Some(259), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Ctpe9kafn78/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDJqIxVeJPDgMFXTavr1aaYBuaY6w", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Ctpe9kafn78/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBxlTlqj7JCTsvoQdWyMkB_JZJ1dA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCVGvnqB-5znqPSbMGlhF4Pw", + name: "Sentamusic", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(48241), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "sg6j-zfUF_A", + name: "Eldamar", + duration: Some(223), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/sg6j-zfUF_A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDk_V_5woDmnABodJnokWXNeyUulg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/sg6j-zfUF_A/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCFtDJv4zRfP6XgwasjaN_nvdfG7Q", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCVGvnqB-5znqPSbMGlhF4Pw", + name: "Sentamusic", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(11079), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "mabaKE-xNUo", + name: "Celtic Woman - Tír na nÓg (feat Oonagh) [Official Music Video]", + duration: Some(196), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/mabaKE-xNUo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBZn8xM0oEJ6MDxWRRZ7jqqDvCrAw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/mabaKE-xNUo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDfLAhbREVerzlQTKI3c6b7-xJYmw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCUt83CEM-kE3OQx0GqLdZtw", + name: "Universal Music Deutschland", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_neU_ZtLnU0iv2J6Qhh-m-SdyrGBH5EY6OA_eLP35vUqA=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("9 years ago"), + view_count: Some(10097065), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "BQIbe3nNrLs", + name: "Senta - Egal wie Weit (Offizielles Video)", + duration: Some(166), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/BQIbe3nNrLs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCozZphHkPbL1-MzdpLOTSONm-xPQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BQIbe3nNrLs/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC2zkNbvfvCy95_KE9yP0CH2a_Wgw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCVGvnqB-5znqPSbMGlhF4Pw", + name: "Sentamusic", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 year ago"), + view_count: Some(199272), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "6jkNLisOu6g", + name: "01 Aulë und Yavanna", + duration: Some(218), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/6jkNLisOu6g/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AHeA4AC4AOKAgwIABABGEkgYChlMA8=&rs=AOn4CLDl2aKLj-BQchX2vOtKn59s5iYt9A", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/6jkNLisOu6g/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB3gOAAuADigIMCAAQARhJIGAoZTAP&rs=AOn4CLAsr456CW0aDfmJbwNcl31xgr_6sw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCawJ5ocVllDHdba04OoiNgw", + name: "T\'Owd Cheshire Tup", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_nzZfr0zDdl4lpjqQZYVgr-tTjAwPzHUKsYCp9vRsE=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 years ago"), + view_count: Some(9826), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "vnjva6Q2NMw", + name: "#Oonagh #OonaghLive | Oonagh | Show completo • Full concert (2017) / 480p", + duration: Some(2407), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/vnjva6Q2NMw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCo-TVqOy7D1phoX7z3TnoGSe2wQQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/vnjva6Q2NMw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLApZ1cuBTMKRWYowCDgEOJ-cEXBdg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCXAUp0fwOEZ4Q4ijtco-j-Q", + name: "Oonagh Brazil", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_lQEvqMeM7OnUcyoPo9r0sfONO3EgcS31imZyqbm16vKA=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(15623), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "kz34YyjG-Oo", + name: "CRAZY UNEXPECTED BATTLE combinations on The Voice", + duration: Some(2187), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/kz34YyjG-Oo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAXEkH_BO5UX-d12GbXXEk_pAhFhQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kz34YyjG-Oo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAGfSNohj4XUlcEncnhvehyehgXZA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCJYtYkiGldqX6Ne938j-k2g", + name: "The Voice Global", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0Q3BwKKmO0pXApaqRiQr7dTKz-ftpS1TxUtBZ0FGgrMEZhlMjUrwWXQypH7pu3Dg7A7FsbtHQg=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 months ago"), + view_count: Some(3150637), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "2cKs7BcgIfQ", + name: "Minne Duett", + duration: Some(220), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/2cKs7BcgIfQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAAvtdLsnu2ea26UIk2lN9tqOr_VA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/2cKs7BcgIfQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAYhd8ZhicK5DIND-EZFJ5H2qCgww", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCxWwz-uZkTNwEM_duLUrWkQ", + name: "fauntube", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_mP0XxeJzJhZPOtjS8H8UE0v5mt80H91MX6a_kfG2eJgjM=s88-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("6 years ago"), + view_count: Some(294858), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "ow8xLlqkMuU", + name: "Oonagh - Faolan", + duration: Some(321), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ow8xLlqkMuU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCLrrwu8ZDxOLwcLJn8C75tlhyT4A", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ow8xLlqkMuU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB2IoX8D-ILbTtwSZLHDvL6wfqnVg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCopVUcd6jgIxM9YTegO7Hww", + name: "Martchen13", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/B6tbK2h24H4EBxB8vFikRBd5vI319leVh6FDsxtmx4HLRGPBbMlnrbyB4-vw9q4xehn3yM4i43w=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("9 years ago"), + view_count: Some(1634446), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "IqiTJK_uzUY", + name: "Hans Zimmer | ULTIMATE Soundtrack Compilation Mix", + duration: Some(3493), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/IqiTJK_uzUY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYDY-oXJIpwhOqMPF35qtcItpXTw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/IqiTJK_uzUY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDdEWAy_yZzt80AsnDXMbYJ7SEw-Q", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCEQKgGFD-oJAl3L0CfTb_1g", + name: "Straals", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_lPuejfIc_Kf0WuQthwDSelUCruf8WNXWyLXg6yc3qIRA=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 years ago"), + view_count: Some(19574820), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "44G9JvrauLg", + name: "Tri Martolod", + duration: Some(199), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/44G9JvrauLg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQ3prhoiPh2Be5MN0tkX1gDGWs1w", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/44G9JvrauLg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB9Ow4teYaOtOQkV_AcUhT2-qJ9hw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC9qKvxWJEiRxsQnFN0tenyw", + name: "Santiano", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/daePPPIXMLk1HBFMiESnwZtkEijLne7yeTkM92kupm-ruG4acyPoAuY80mGZLKUUPoBTW0MO=s88-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("6 years ago"), + view_count: Some(932727), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + ], + ctoken: Some("CBQSExILWHVNMm9uTUd2VEnAAQHIAQEYACqeDDJzNkw2d3lQQ1FxTUNRb0Q4ajRBQ2c3Q1Bnc0lsNU83LV9URHJMR3lBUW9Pd2o0TENPX085YWFVc0xtMGtnRUtEY0ktQ2dpNG41dXo3N1c2NG5rS0RjSS1DZ2p2dHVQWWl0T0VtSFFLRGNJLUNnal9fYWpTbC0ySTZBWUtEc0ktQ3dqTXlQeUE1b3l0MjljQkNnM0NQZ29JMWVQVzZKV1J3NEJTQ2czQ1Bnb0lpTjJYbHJHODc4WVFDZzdDUGdzSXlyMkw2NkhLdm9ya0FRb093ajRMQ0steDVKNjF0LWI0bndFS0RjSS1DZ2k2aWNfQWdJN2h6RG9LRHNJLUN3akc1T1RibnZDUzl0NEJDZzdDUGdzSXd2cnZ6LWZMN3NYUUFRb053ajRLQ091S2w5SHozTFBwT2dvT3dqNExDSzZUajduSXhiS0lvd0VLRGNJLUNnajExWkhpcHViYjhSTUtEY0ktQ2dqeDc0bWtnYlNQb1I0S0RjSS1DZ2kwLVlXSXl1aU43endLRHNJLUN3ajhpSmlkM1lhVWdwRUJDZzdDUGdzSTFwdWE4Y0NTaU9iakFRb093ajRMQ1B5SHNwakI5dHFxekFFS0RjSS1DZ2pQZ3NuSzZMZWF5aTBLRGNJLUNnaXI0OGZKcmZPYXpHUUtEc0ktQ3dqaHI5X210YlRsb2JVQkNnN0NQZ3NJdl83dHU3dXUxb3VBQVFvRDhqNEFDZzNDUGdvSXM3X1J2SXpHOXVJVENnUHlQZ0FLRHNJLUN3alhsUG5NdEttcXk0QUJDZ1B5UGdBS0o5SS1KQW9pVUV4aGFGSktXRWczV0ZCSWJWZE9TemMwVm5wM1NVWXljWFZYY1dSR1NWZDJjZ29EOGo0QUNnN0NQZ3NJM1lxcjFyWEI4TEs3QVFvRDhqNEFDZzNDUGdvSTllYUl5c3pJa2YwTENnUHlQZ0FLSDlJLUhBb2FVa1JGVFdRNFVGcEpkamxEVUhOMmRrVkVZbTlmY0ZWRU5IY0tBX0ktQUFvTndqNEtDSTJjcF9qOHBQX3BVZ29EOGo0QUNnM0NQZ29Jc192WDdhdkM3dmRXQ2dQeVBnQUtEc0ktQ3dqdGpzNk1vYTdqM0p3QkNnUHlQZ0FLRGNJLUNnaV92XzYwNU42WDdRb0tBX0ktQUFvT3dqNExDUEN2MEw2el82aUhzZ0VLQV9JLUFBb093ajRMQ01ycXhQMkV4YmJUbVFFS0FfSS1BQW9Od2o0S0NMdlp0czYzNzRhQkJRb0Q4ajRBQ2c3Q1Bnc0lxUGU2Mk9LbHc1enFBUW9EOGo0QUNnN0NQZ3NJek9uWW9icnR1N3ktQVFvRDhqNEFDZzdDUGdzSTZ2R2J4cktNX3A2VEFRb0Q4ajRBQ2c3Q1Bnc0k5TU9BdWNHZHEtSFpBUW9EOGo0QUNnN0NQZ3NJNWVXUTFlV2x6SWVqQVFvRDhqNEFDZzNDUGdvSXhwcTdfOHJrcE5RaUNnUHlQZ0FLRHNJLUN3aTQ4ZXJXNzZUdndPTUJFaFVBR2h3ZUlDSWtKaWdxTEM0d01qUTJPRG84UGtBYUJBZ0FFQUVhQkFnQUVBSWFCQWdBRUFNYUJBZ0FFQVFhQkFnQUVBVWFCQWdBRUFZYUJBZ0FFQWNhQkFnQUVBZ2FCQWdBRUFrYUJBZ0FFQW9hQkFnQUVBc2FCQWdBRUF3YUJBZ0FFQTBhQkFnQUVBNGFCQWdBRUE4YUJBZ0FFQkFhQkFnQUVCRWFCQWdBRUJJYUJBZ0FFQk1hQkFnQUVCUWFCQWdBRUJVYUJBZ0FFQllhQkFnQUVCY2FCQWdBRUJnYUJBZ0FFQmthQkFnYUVCc2FCQWdjRUIwYUJBZ2VFQjhhQkFnZ0VDRWFCQWdpRUNNYUJBZ2tFQ1VhQkFnbUVDY2FCQWdvRUNrYUJBZ3FFQ3NhQkFnc0VDMGFCQWd1RUM4YUJBZ3dFREVhQkFneUVETWFCQWcwRURVYUJBZzJFRGNhQkFnNEVEa2FCQWc2RURzYUJBZzhFRDBhQkFnLUVEOGFCQWhBRUVFcUZRQWFIQjRnSWlRbUtDb3NMakF5TkRZNE9qdy1RQWoPd2F0Y2gtbmV4dC1mZWVk"), + visitor_data: Some("CgthU0ZEaGhJbEgwVyiJp8C5BjIKCgJVUxIEEgAgEQ%3D%3D"), + endpoint: next, + ), + top_comments: Paginator( + count: Some(2), + items: [], + ctoken: Some("Eg0SC1h1TTJvbk1HdlRJGAYyJSIRIgtYdU0yb25NR3ZUSTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), + visitor_data: Some("CgthU0ZEaGhJbEgwVyiJp8C5BjIKCgJVUxIEEgAgEQ%3D%3D"), + endpoint: next, + ), + latest_comments: Paginator( + count: Some(2), + items: [], + ctoken: Some("Eg0SC1h1TTJvbk1HdlRJGAYyOCIRIgtYdU0yb25NR3ZUSTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), + visitor_data: Some("CgthU0ZEaGhJbEgwVyiJp8C5BjIKCgJVUxIEEgAgEQ%3D%3D"), + endpoint: next, + ), + visitor_data: Some("CgthU0ZEaGhJbEgwVyiJp8C5BjIKCgJVUxIEEgAgEQ%3D%3D"), +) diff --git a/src/client/video_details.rs b/src/client/video_details.rs index 42ba894..6324bb0 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -658,6 +658,7 @@ mod tests { #[case::ab_new_cont("20221011_new_continuation", "ZeerrnuLi5E")] #[case::ab_no_recommends("20221011_rec_isr", "nFDBxBUfE74")] #[case::ab_new_likes("20231103_likes", "ZeerrnuLi5E")] + #[case::mix("20241109_mix", "XuM2onMGvTI")] fn map_video_details(#[case] name: &str, #[case] id: &str) { let json_path = path!(*TESTFILES / "video_details" / format!("video_details_{name}.json")); let json_file = File::open(json_path).unwrap(); diff --git a/testfiles/video_details/video_details_20241109_mix.json b/testfiles/video_details/video_details_20241109_mix.json new file mode 100644 index 0000000..52499f9 --- /dev/null +++ b/testfiles/video_details/video_details_20241109_mix.json @@ -0,0 +1,18625 @@ +{ + "responseContext": { + "visitorData": "CgthU0ZEaGhJbEgwVyiJp8C5BjIKCgJVUxIEEgAgEQ%3D%3D", + "serviceTrackingParams": [ + { + "service": "CSI", + "params": [ + { + "key": "c", + "value": "WEB" + }, + { + "key": "cver", + "value": "2.20241107.11.00" + }, + { + "key": "yt_li", + "value": "0" + }, + { + "key": "GetWatchNext_rid", + "value": "0xc5a890c5c20ecee6" + } + ] + }, + { + "service": "GFEEDBACK", + "params": [ + { + "key": "logged_in", + "value": "0" + }, + { + "key": "e", + "value": "23804281,23966208,23986032,24004644,24077241,24166867,24181174,24241378,24378826,24420368,24439361,24445499,24453989,24542367,24547317,24548629,24566687,24699899,39325854,39326986,51009781,51010235,51017346,51020570,51025415,51030103,51037342,51037353,51050361,51053689,51057848,51057851,51063643,51064835,51072748,51091058,51095478,51098299,51111738,51115184,51117319,51124104,51129210,51133103,51141472,51144925,51151423,51152050,51157411,51157841,51158514,51160545,51165467,51169118,51176511,51178320,51178329,51178342,51178351,51178982,51179883,51182850,51183909,51184990,51190724,51194136,51195231,51204329,51213773,51217504,51221152,51222382,51222973,51223961,51226841,51226863,51227037,51227776,51228350,51230241,51230478,51230878,51231814,51236663,51237842,51239093,51241028,51242448,51243940,51245621,51248255,51248734,51251836,51255676,51255680,51255743,51256074,51256084,51257562,51257895,51257902,51257911,51257914,51258066,51259135,51263449,51265335,51265362,51265371,51266454,51272366,51272458,51273608,51274583,51275782,51276557,51276565,51281227,51282077,51282080,51282792,51285052,51285417,51285717,51287196,51287500,51289102,51289920,51289935,51289938,51289958,51289965,51289974,51291889,51293343,51294322,51295132,51295576,51296439,51297232,51298019,51298021,51299153,51299520,51299710,51299724,51299981,51300005,51300012,51300176,51300241,51300699,51300810,51302492,51302680,51303667,51303670,51303789,51304155,51305313,51305531,51305839,51306108,51306259,51307502,51308045,51308060,51308709,51309313,51310323,51310742,51311031,51311038,51311505,51311519,51312144,51312688,51313149,51313767,51314158,51314681,51314696,51314699,51314712,51314721,51315041,51315910,51315917,51315928,51315931,51315938,51315945,51315956,51315959,51315972,51315977,51316173,51316846,51317749,51318207,51318845,51320275,51322670,51323366,51323556,51324755,51325576,51326208,51326281,51326641,51326762,51326932,51327124,51327142,51327163,51327180,51327613,51327636,51328144,51328948,51329146,51329227,51329506,51330194,51331487,51331500,51331518,51331533,51331538,51331545,51331554,51331561,51332896,51333739,51333878,51335644,51336661,51336953,51337187,51337349,51338495,51338524,51339163,51339747,51341226,51341445,51341730,51342093,51343110,51343368,51343867,51344927,51345112,51345126" + }, + { + "key": "visitor_data", + "value": "CgthU0ZEaGhJbEgwVyjFxKq5BjIKCgJVUxIEEgAgEQ%3D%3D" + } + ] + }, + { + "service": "GUIDED_HELP", + "params": [ + { + "key": "logged_in", + "value": "0" + } + ] + }, + { + "service": "ECATCHER", + "params": [ + { + "key": "client.version", + "value": "2.20241107" + }, + { + "key": "client.name", + "value": "WEB" + } + ] + } + ], + "mainAppWebResponseContext": { + "loggedOut": true, + "trackingParam": "kx_fmPxhoPZRXCQVYl2hckUQcFYnM16hM6EaArUQIn2OMiHRgkussh7BwOcCE59TDtslLKPQ-SS" + }, + "webResponseContextExtensionData": { + "webPrefetchData": { + "navigationEndpoints": [ + { + "clickTrackingParams": "CAAQg2ciEwjVwOmw1dCJAxVWR3oFHRp4OJcyDHJlbGF0ZWQtYXV0b0iy-pqYp9TN8V6aAQUIAxD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=sg6j-zfUF_A&pp=QAFIAQ%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "sg6j-zfUF_A", + "params": "EAEYAdoBBAgBKgA%3D", + "playerParams": "QAFIAQ%3D%3D", + "watchEndpointSupportedPrefetchConfig": { + "prefetchHintConfig": { + "prefetchPriority": 0, + "countdownUiRelativeSecondsPrefetchCondition": -3 + } + } + } + }, + { + "clickTrackingParams": "CAAQg2ciEwjVwOmw1dCJAxVWR3oFHRp4OJcyDHJlbGF0ZWQtYXV0b0iy-pqYp9TN8V6aAQUIAxD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=sg6j-zfUF_A&pp=QAFIAQ%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "sg6j-zfUF_A", + "params": "EAEYAdoBBAgBKgA%3D", + "playerParams": "QAFIAQ%3D%3D", + "watchEndpointSupportedPrefetchConfig": { + "prefetchHintConfig": { + "prefetchPriority": 0, + "countdownUiRelativeSecondsPrefetchCondition": -3 + } + } + } + }, + { + "clickTrackingParams": "CAAQg2ciEwjVwOmw1dCJAxVWR3oFHRp4OJcyDHJlbGF0ZWQtYXV0b0iy-pqYp9TN8V6aAQUIAxD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=sg6j-zfUF_A&pp=QAFIAQ%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "sg6j-zfUF_A", + "params": "EAEYAdoBBAgBKgA%3D", + "playerParams": "QAFIAQ%3D%3D", + "watchEndpointSupportedPrefetchConfig": { + "prefetchHintConfig": { + "prefetchPriority": 0, + "countdownUiRelativeSecondsPrefetchCondition": -3 + } + } + } + } + ] + }, + "hasDecorated": true + } + }, + "contents": { + "twoColumnWatchNextResults": { + "results": { + "results": { + "contents": [ + { + "videoPrimaryInfoRenderer": { + "title": { + "runs": [ + { + "text": "Gäa" + } + ] + }, + "viewCount": { + "videoViewCountRenderer": { + "viewCount": { + "simpleText": "28,898 views" + }, + "shortViewCount": { + "simpleText": "28K views" + }, + "originalViewCount": "0" + } + }, + "videoActions": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Report" + } + ] + }, + "icon": { + "iconType": "FLAG" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLICEMyrARgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Need to report the video?" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CLICEMyrARgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/?p=report_illegal_content&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/?p=report_illegal_content&hl=en" + } + } + }, + { + "text": " without signing in." + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CMECEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "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%3Dhttps%253A%252F%252Fwww.youtube.com%252Fyoutubei%252Fv1%252Fnext%253FprettyPrint%253Dfalse&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CMECEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "command": { + "clickTrackingParams": "CMECEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "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%3Dhttps%253A%252F%252Fwww.youtube.com%252Fyoutubei%252Fv1%252Fnext%253FprettyPrint%253Dfalse&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "hack": true + } + } + } + } + } + } + } + }, + "trackingParams": "CLICEMyrARgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + } + ], + "trackingParams": "CLICEMyrARgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "topLevelButtons": [ + { + "segmentedLikeDislikeButtonViewModel": { + "likeButtonViewModel": { + "likeButtonViewModel": { + "toggleButtonViewModel": { + "toggleButtonViewModel": { + "defaultButtonViewModel": { + "buttonViewModel": { + "iconName": "LIKE", + "title": "213", + "onTap": { + "serialCommand": { + "commands": [ + { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CL8CEKVBIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "innertubeCommand": { + "clickTrackingParams": "CL8CEKVBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "simpleText": "Like this video?" + }, + "content": { + "simpleText": "Sign in to make your opinion count." + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "Sign in" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMACEPqGBCITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "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&hl=en&ec=66426", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CMACEPqGBCITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/like/like" + } + }, + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "XuM2onMGvTI" + }, + "likeParams": "Cg0KC1h1TTJvbk1HdlRJIAAyDAiJp8C5BhDuz8ewAg%3D%3D" + } + }, + "idamTag": "66426" + } + }, + "trackingParams": "CMACEPqGBCITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + } + } + } + } + } + } + ] + } + }, + "accessibilityText": "like this video along with 213 other people", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "trackingParams": "CL8CEKVBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_TONAL", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "accessibilityId": "id.video.like.button", + "tooltip": "I like this" + } + }, + "toggledButtonViewModel": { + "buttonViewModel": { + "iconName": "LIKE", + "title": "214", + "onTap": { + "serialCommand": { + "commands": [ + { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CL4CEKVBIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "innertubeCommand": { + "clickTrackingParams": "CL4CEKVBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/like/removelike" + } + }, + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "XuM2onMGvTI" + }, + "removeLikeParams": "Cg0KC1h1TTJvbk1HdlRJGAAqDAiJp8C5BhC2v8iwAg%3D%3D" + } + } + } + ] + } + }, + "accessibilityText": "like this video along with 213 other people", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "trackingParams": "CL4CEKVBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_TONAL", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "accessibilityId": "id.video.like.button", + "tooltip": "Unlike" + } + }, + "identifier": "watch-like", + "trackingParams": "CLICEMyrARgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "isTogglingDisabled": true + } + }, + "likeStatusEntityKey": "EgtYdU0yb25NR3ZUSSA-KAE%3D", + "likeStatusEntity": { + "key": "EgtYdU0yb25NR3ZUSSA-KAE%3D", + "likeStatus": "INDIFFERENT" + } + } + }, + "dislikeButtonViewModel": { + "dislikeButtonViewModel": { + "toggleButtonViewModel": { + "toggleButtonViewModel": { + "defaultButtonViewModel": { + "buttonViewModel": { + "iconName": "DISLIKE", + "title": "Dislike", + "onTap": { + "serialCommand": { + "commands": [ + { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CLwCEKiPCSITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + }, + { + "innertubeCommand": { + "clickTrackingParams": "CLwCEKiPCSITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "simpleText": "Don't like this video?" + }, + "content": { + "simpleText": "Sign in to make your opinion count." + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "Sign in" + }, + "navigationEndpoint": { + "clickTrackingParams": "CL0CEPmGBCITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "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&hl=en&ec=66425", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CL0CEPmGBCITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/like/dislike" + } + }, + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "XuM2onMGvTI" + }, + "dislikeParams": "Cg0KC1h1TTJvbk1HdlRJEAAiDAiJp8C5BhC6mMqwAg%3D%3D" + } + }, + "idamTag": "66425" + } + }, + "trackingParams": "CL0CEPmGBCITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + } + } + } + } + } + } + ] + } + }, + "accessibilityText": "Dislike this video", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "trackingParams": "CLwCEKiPCSITCNXA6bDV0IkDFVZHegUdGng4lw==", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_TONAL", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "accessibilityId": "id.video.dislike.button", + "tooltip": "I dislike this" + } + }, + "toggledButtonViewModel": { + "buttonViewModel": { + "iconName": "DISLIKE", + "title": "Dislike", + "onTap": { + "serialCommand": { + "commands": [ + { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CLsCEKiPCSITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + }, + { + "innertubeCommand": { + "clickTrackingParams": "CLsCEKiPCSITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/like/removelike" + } + }, + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "XuM2onMGvTI" + }, + "removeLikeParams": "Cg0KC1h1TTJvbk1HdlRJGAAqDAiJp8C5BhD2tsqwAg%3D%3D" + } + } + } + ] + } + }, + "accessibilityText": "Dislike this video", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "trackingParams": "CLsCEKiPCSITCNXA6bDV0IkDFVZHegUdGng4lw==", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_TONAL", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "accessibilityId": "id.video.dislike.button", + "tooltip": "I dislike this" + } + }, + "trackingParams": "CLICEMyrARgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "isTogglingDisabled": true + } + }, + "dislikeEntityKey": "EgtYdU0yb25NR3ZUSSA-KAE%3D" + } + }, + "iconType": "LIKE_ICON_TYPE_UNKNOWN", + "likeCountEntity": { + "key": "unset_like_count_entity_key" + }, + "dynamicLikeCountUpdateData": { + "updateStatusKey": "like_count_update_status_key", + "placeholderLikeCountValuesKey": "like_count_placeholder_values_key", + "updateDelayLoopId": "like_count_update_delay_loop_id", + "updateDelaySec": 5 + }, + "teasersOrderEntityKey": "EgtYdU0yb25NR3ZUSSD8AygB" + } + }, + { + "buttonViewModel": { + "iconName": "SHARE", + "title": "Share", + "onTap": { + "serialCommand": { + "commands": [ + { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CLkCEOWWARgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "innertubeCommand": { + "clickTrackingParams": "CLkCEOWWARgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtYdU0yb25NR3ZUSaABAQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CLkCEOWWARgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CLoCEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + } + } + ] + } + }, + "accessibilityText": "Share", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "trackingParams": "CLkCEOWWARgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_TONAL", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "state": "BUTTON_VIEW_MODEL_STATE_ACTIVE", + "accessibilityId": "id.video.share.button", + "tooltip": "Share" + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "More actions" + } + }, + "flexibleItems": [ + { + "menuFlexibleItemRenderer": { + "menuItem": { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLgCENGqBSITCNXA6bDV0IkDFVZHegUdGng4lw==", + "offlineVideoEndpoint": { + "videoId": "XuM2onMGvTI", + "onAddCommand": { + "clickTrackingParams": "CLgCENGqBSITCNXA6bDV0IkDFVZHegUdGng4lw==", + "getDownloadActionCommand": { + "videoId": "XuM2onMGvTI", + "params": "CAEQAA%3D%3D", + "offlineabilityEntityKey": "Eg0KC1h1TTJvbk1HdlRJIPYBKAE%3D" + } + } + } + }, + "trackingParams": "CLgCENGqBSITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + }, + "topLevelButton": { + "downloadButtonRenderer": { + "trackingParams": "CLcCENGqBSITCNXA6bDV0IkDFVZHegUdGng4lw==", + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "targetId": "watch-download-button", + "command": { + "clickTrackingParams": "CLcCENGqBSITCNXA6bDV0IkDFVZHegUdGng4lw==", + "offlineVideoEndpoint": { + "videoId": "XuM2onMGvTI", + "onAddCommand": { + "clickTrackingParams": "CLcCENGqBSITCNXA6bDV0IkDFVZHegUdGng4lw==", + "getDownloadActionCommand": { + "videoId": "XuM2onMGvTI", + "params": "CAEQAA%3D%3D", + "offlineabilityEntityKey": "Eg0KC1h1TTJvbk1HdlRJIPYBKAE%3D" + } + } + } + } + } + } + } + }, + { + "menuFlexibleItemRenderer": { + "menuItem": { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Save" + } + ] + }, + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLUCEOuQCSITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Want to watch this again later?" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to add this video to a playlist." + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "Sign in" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLYCEPuGBCITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DXuM2onMGvTI&hl=en&ec=66427", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CLYCEPuGBCITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=XuM2onMGvTI", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "XuM2onMGvTI", + "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&odepv=1&id=5ee336a27306bd32&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "idamTag": "66427" + } + }, + "trackingParams": "CLYCEPuGBCITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + } + } + } + } + }, + "trackingParams": "CLUCEOuQCSITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + }, + "topLevelButton": { + "buttonViewModel": { + "iconName": "PLAYLIST_ADD", + "title": "Save", + "onTap": { + "serialCommand": { + "commands": [ + { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CLMCEOuQCSITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + }, + { + "innertubeCommand": { + "clickTrackingParams": "CLMCEOuQCSITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Want to watch this again later?" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to add this video to a playlist." + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "Sign in" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLQCEPuGBCITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DXuM2onMGvTI&hl=en&ec=66427", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CLQCEPuGBCITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=XuM2onMGvTI", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "XuM2onMGvTI", + "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&odepv=1&id=5ee336a27306bd32&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "idamTag": "66427" + } + }, + "trackingParams": "CLQCEPuGBCITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + } + } + } + } + } + } + ] + } + }, + "accessibilityText": "Save to playlist", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "trackingParams": "CLMCEOuQCSITCNXA6bDV0IkDFVZHegUdGng4lw==", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_TONAL", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "tooltip": "Save" + } + } + } + } + ] + } + }, + "trackingParams": "CLICEMyrARgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "dateText": { + "simpleText": "Aug 6, 2020" + }, + "relativeDateText": { + "accessibility": { + "accessibilityData": { + "label": "4 years ago" + } + }, + "simpleText": "4 years ago" + } + } + }, + { + "videoSecondaryInfoRenderer": { + "owner": { + "videoOwnerRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s48-c-k-c0x00ffffff-no-rj", + "width": 48, + "height": 48 + }, + { + "url": "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + }, + { + "url": "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s176-c-k-c0x00ffffff-no-rj", + "width": 176, + "height": 176 + } + ] + }, + "title": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CLECEOE5IhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "subscriptionButton": { + "type": "FREE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLECEOE5IhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UC_vmjW5e1xEHhYjY2a0kK1A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UC_vmjW5e1xEHhYjY2a0kK1A" + } + }, + "subscriberCountText": { + "accessibility": { + "accessibilityData": { + "label": "38.1K subscribers" + } + }, + "simpleText": "38.1K subscribers" + }, + "trackingParams": "CLECEOE5IhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "badges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CLECEOE5IhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ] + } + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "subscribed": false, + "enabled": true, + "type": "FREE", + "channelId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "showPreferences": false, + "subscribedButtonText": { + "runs": [ + { + "text": "Subscribed" + } + ] + }, + "unsubscribedButtonText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "trackingParams": "CKMCEJsrIhMI1cDpsNXQiQMVVkd6BR0aeDiXMgV3YXRjaA==", + "unsubscribeButtonText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Sentamusic." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Sentamusic." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Sentamusic" + }, + "trackingParams": "CLACEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Sentamusic" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Sentamusic" + }, + "trackingParams": "CK8CEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Sentamusic" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CKgCEJf5ASITCNXA6bDV0IkDFVZHegUdGng4lw==", + "command": { + "clickTrackingParams": "CKgCEJf5ASITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CKgCEJf5ASITCNXA6bDV0IkDFVZHegUdGng4lw==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4CEOy1BBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiXMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1ZHdm5xQi01em5xUFNiTUdsaEY0UHcSAggBGAAgBFITCgIIAxILWHVNMm9uTUd2VEkYAA%3D%3D" + } + }, + "trackingParams": "CK4CEOy1BBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0CEO21BBgEIhMI1cDpsNXQiQMVVkd6BR0aeDiXMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1ZHdm5xQi01em5xUFNiTUdsaEY0UHcSAggDGAAgBFITCgIIAxILWHVNMm9uTUd2VEkYAA%3D%3D" + } + }, + "trackingParams": "CK0CEO21BBgEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkCENuLChgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKkCENuLChgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKoCEMY4IhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Sentamusic" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwCEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiXMgV3YXRjaA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCVGvnqB-5znqPSbMGlhF4Pw" + ], + "params": "CgIIAxILWHVNMm9uTUd2VEkYAA%3D%3D" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKwCEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKsCEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CKkCENuLChgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { + "iconType": "EXPAND_MORE" + } + } + }, + "targetId": "watch-subscribe", + "signInEndpoint": { + "clickTrackingParams": "CKMCEJsrIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "simpleText": "Want to subscribe to this channel?" + }, + "content": { + "simpleText": "Sign in to subscribe to this channel." + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "Sign in" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKcCEP2GBCITCNXA6bDV0IkDFVZHegUdGng4lzIJc3Vic2NyaWJl", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DXuM2onMGvTI%26continue_action%3DQUFFLUhqbVh0SW5CSHpiMk9BTWVkaTdTTmtQcF9qdzNFZ3xBQ3Jtc0tsdzh6VEo2alcySU1ya3dEcWFvNzBHRV9nRVhoZzdiZzhaSWZLOXk2OEEzdWdwWmJMOURrRU9pY0ZSNDItMENNTF9HMlJobzhpSFVOcHp4c1hOYjg3MVBVWUt6NFd1SVExRERFdlBJQWxKeURJdXo0dGEyV0N0Tl9GWWF4UnhlSmNJZDhyQVNfcXRIYkJZdlZpMUYxYVVFOEw4UU5WS2I1MU1ieXJlYUI2NUdIcnhhTWJ2bExJNTE0Q0ZZNElmbTU5TVhCOEQ&hl=en&ec=66429", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CKcCEP2GBCITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=XuM2onMGvTI", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "XuM2onMGvTI", + "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&odepv=1&id=5ee336a27306bd32&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "continueAction": "QUFFLUhqbVh0SW5CSHpiMk9BTWVkaTdTTmtQcF9qdzNFZ3xBQ3Jtc0tsdzh6VEo2alcySU1ya3dEcWFvNzBHRV9nRVhoZzdiZzhaSWZLOXk2OEEzdWdwWmJMOURrRU9pY0ZSNDItMENNTF9HMlJobzhpSFVOcHp4c1hOYjg3MVBVWUt6NFd1SVExRERFdlBJQWxKeURJdXo0dGEyV0N0Tl9GWWF4UnhlSmNJZDhyQVNfcXRIYkJZdlZpMUYxYVVFOEw4UU5WS2I1MU1ieXJlYUI2NUdIcnhhTWJ2bExJNTE0Q0ZZNElmbTU5TVhCOEQ", + "idamTag": "66429" + } + }, + "trackingParams": "CKcCEP2GBCITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + } + } + } + } + }, + "subscribedEntityKey": "EhhVQ1ZHdm5xQi01em5xUFNiTUdsaEY0UHcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CKMCEJsrIhMI1cDpsNXQiQMVVkd6BR0aeDiXMgV3YXRjaA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": [ + "UCVGvnqB-5znqPSbMGlhF4Pw" + ], + "params": "EgIIAxgAIgtYdU0yb25NR3ZUSQ%3D%3D" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CKMCEJsrIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKMCEJsrIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKQCEMY4IhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Sentamusic" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKYCEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiXMgV3YXRjaA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCVGvnqB-5znqPSbMGlhF4Pw" + ], + "params": "CgIIAxILWHVNMm9uTUd2VEkYAA%3D%3D" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKYCEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKUCEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "metadataRowContainer": { + "metadataRowContainerRenderer": { + "collapsedItemCount": 0, + "trackingParams": "CKICEM2rARgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "showMoreText": { + "simpleText": "...more" + }, + "showLessText": { + "simpleText": "Show less" + }, + "trackingParams": "CKICEM2rARgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "defaultExpanded": false, + "descriptionCollapsedLines": 3, + "showMoreCommand": { + "clickTrackingParams": "CKICEM2rARgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CKICEM2rARgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "changeEngagementPanelVisibilityAction": { + "targetId": "engagement-panel-structured-description", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_EXPANDED" + } + }, + { + "clickTrackingParams": "CKICEM2rARgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "scrollToEngagementPanelCommand": { + "targetId": "engagement-panel-structured-description" + } + } + ] + } + }, + "showLessCommand": { + "clickTrackingParams": "CKICEM2rARgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "changeEngagementPanelVisibilityAction": { + "targetId": "engagement-panel-structured-description", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN" + } + }, + "attributedDescription": { + "content": "Provided to YouTube by Universal Music Group\n\nGäa · Oonagh\n\nBest Of\n\n℗ An Airforce1 Records / We Love Music recording; ℗ 2014 Universal Music GmbH\n\nReleased on: 2020-08-07\n\nProducer, Associated Performer, Background Vocalist: Hardy Krech\nProducer: Mark Nissen\nAssociated Performer, Background Vocalist: Andreas Fahnert\nAssociated Performer, Background Vocalist: Velile Mchunu\nAssociated Performer, Background Vocalist: Billy King\nAssociated Performer, Background Vocalist: Alex Prince\nAssociated Performer, Flute: Sandro Friedrich\nProgrammer: Hartmut Krech\nEditor: Severin Zahler\nComposer Lyricist: Hartmut Krech\nComposer Lyricist: Mark Nissen\nAuthor: Lukas Hainer\nAuthor: Michael Boden\n\nAuto-generated by YouTube.", + "styleRuns": [ + { + "startIndex": 0, + "length": 727, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + }, + "fontFamilyName": "Roboto" + } + ] + }, + "headerRuns": [ + { + "startIndex": 0, + "length": 727, + "headerMapping": "ATTRIBUTED_STRING_HEADER_MAPPING_UNSPECIFIED" + } + ] + } + }, + { + "itemSectionRenderer": { + "contents": [ + { + "commentsEntryPointHeaderRenderer": { + "headerText": { + "runs": [ + { + "text": "Comments" + } + ] + }, + "onTap": { + "clickTrackingParams": "CKACEMaJBRgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CKACEMaJBRgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "changeEngagementPanelVisibilityAction": { + "targetId": "engagement-panel-comments-section", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_EXPANDED" + } + }, + { + "clickTrackingParams": "CKACEMaJBRgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "scrollToEngagementPanelCommand": { + "targetId": "engagement-panel-comments-section" + } + } + ] + } + }, + "trackingParams": "CKACEMaJBRgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commentCount": { + "simpleText": "2" + }, + "contentRenderer": { + "commentsSimpleboxRenderer": { + "simpleboxAvatar": { + "thumbnails": [ + { + "url": "", + "width": 88, + "height": 88 + } + ], + "accessibility": { + "accessibilityData": { + "label": "" + } + } + }, + "simpleboxPlaceholder": { + "runs": [ + { + "text": "Add a comment..." + } + ] + }, + "trackingParams": "CKECEKm8CiITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + }, + "targetId": "comments-entry-point-header-identifier" + } + } + ], + "trackingParams": "CJ8CELsvGAIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "sectionIdentifier": "comments-entry-point" + } + }, + { + "itemSectionRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CJ4CELsvGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1h1TTJvbk1HdlRJGAYyJSIRIgtYdU0yb25NR3ZUSTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CJ4CELsvGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "sectionIdentifier": "comment-item-section", + "targetId": "comments-section" + } + } + ], + "trackingParams": "CJ0CELovIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "secondaryResults": { + "secondaryResults": { + "results": [ + { + "compactVideoRenderer": { + "videoId": "E8XaMMeUX7M", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/E8XaMMeUX7M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDpslNXCsGByXyek5rqUTlPduA6PQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/E8XaMMeUX7M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCiR5P4H39iF_JpaRsWj33p6xILZQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Sie singt für die, die sie nicht hören by Sentamusic 127,967 views 6 years ago 4 minutes, 5 seconds" + } + }, + "simpleText": "Sie singt für die, die sie nicht hören" + }, + "longBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CJYCEKQwGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "6 years ago" + }, + "viewCountText": { + "simpleText": "127,967 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 5 seconds" + } + }, + "simpleText": "4:05" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJYCEKQwGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=E8XaMMeUX7M", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "E8XaMMeUX7M", + "nofollow": true, + "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&odepv=1&id=13c5da30c7945fb3&ip=79.205.208.149&initcwndbps=1911250&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CJYCEKQwGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJYCEKQwGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "trackingParams": "CJYCEKQwGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJdAs7_RvIzG9uIT", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "127K views" + } + }, + "simpleText": "127K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsCEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJsCEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "E8XaMMeUX7M", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJsCEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "E8XaMMeUX7M" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "E8XaMMeUX7M" + ] + } + }, + { + "clickTrackingParams": "CJsCEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CJwCELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CJsCEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJoCENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "E8XaMMeUX7M", + "onAddCommand": { + "clickTrackingParams": "CJoCENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "E8XaMMeUX7M", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CJoCENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJYCEKQwGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtFOFhhTU1lVVg3TQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CJYCEKQwGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CJkCEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CJYCEKQwGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CJYCEKQwGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "targetId": "watch-related-menu-button" + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 5 seconds" + } + }, + "simpleText": "4:05" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJgCEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "E8XaMMeUX7M", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJgCEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "E8XaMMeUX7M" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CJgCEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJcCEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJcCEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "E8XaMMeUX7M", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJcCEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "E8XaMMeUX7M" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "E8XaMMeUX7M" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CJcCEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Sie singt für die, die sie nicht hören - 4 minutes, 5 seconds - Go to channel - Senta - Topic - 127K views - 6 years ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "gJapS0meSlc", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/gJapS0meSlc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAfLAy2Om8QBrXljaToKGg4EAmy6w", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/gJapS0meSlc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBI4RQ40zY_KOh8qZG4991VueDo3w", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Kingdom of Heaven: Burning the Past Extended (20 minutes version) by Encosen 243,357 views 4 years ago 20 minutes" + } + }, + "simpleText": "Kingdom of Heaven: Burning the Past Extended (20 minutes version)" + }, + "longBylineText": { + "runs": [ + { + "text": "Encosen", + "navigationEndpoint": { + "clickTrackingParams": "CI8CEKQwGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@huss4realz", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC8N3VCj1kY6VB3kiDh38bxw", + "canonicalBaseUrl": "/@huss4realz" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "4 years ago" + }, + "viewCountText": { + "simpleText": "243,357 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 4 seconds" + } + }, + "simpleText": "20:04" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI8CEKQwGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=gJapS0meSlc", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "gJapS0meSlc", + "nofollow": true, + "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&odepv=1&id=8096a94b499e4a57&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "Encosen", + "navigationEndpoint": { + "clickTrackingParams": "CI8CEKQwGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@huss4realz", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC8N3VCj1kY6VB3kiDh38bxw", + "canonicalBaseUrl": "/@huss4realz" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_knaJfooIGRk_MXCNQLk5Zmx79JCKWsLMOl1LdlTZdnsg=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "trackingParams": "CI8CEKQwGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJdA15T5zLSpqsuAAQ==", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "243K views" + } + }, + "simpleText": "243K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJQCEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJQCEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "gJapS0meSlc", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJQCEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "gJapS0meSlc" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "gJapS0meSlc" + ] + } + }, + { + "clickTrackingParams": "CJQCEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CJUCELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CJQCEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJMCENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "gJapS0meSlc", + "onAddCommand": { + "clickTrackingParams": "CJMCENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "gJapS0meSlc", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CJMCENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8CEKQwGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtnSmFwUzBtZVNsYw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CI8CEKQwGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CJICEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CI8CEKQwGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CI8CEKQwGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 4 seconds" + } + }, + "simpleText": "20:04" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJECEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "gJapS0meSlc", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJECEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "gJapS0meSlc" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CJECEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJACEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJACEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "gJapS0meSlc", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJACEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "gJapS0meSlc" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "gJapS0meSlc" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CJACEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Kingdom of Heaven: Burning the Past Extended (20 minutes version) - 20 minutes - Go to channel - Encosen - 243K views - 4 years ago - play video" + } + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/XuM2onMGvTI/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLAHs4IuCGN_tGSYhwQoIvUoPIubQw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/XuM2onMGvTI/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDSp1WejkBmoMSefePjV9grmrIbBA", + "width": 336, + "height": 188 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "30 videos", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 3353124, + "darkTheme": 3353124 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 4142381, + "darkTheme": 4142381 + } + } + }, + "stackColor": { + "lightTheme": 10059884, + "darkTheme": 9667446 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Oonagh Best Off" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "Edin Oprasic", + "commandRuns": [ + { + "startIndex": 0, + "length": 12, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CI4CENLEDBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiXMgdyZWxsaXN0", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@edinoprasic3000", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC8ElEyFBG5NzF5CajjLQRjw", + "canonicalBaseUrl": "/@edinoprasic3000" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 12, + "weightLabel": "FONT_WEIGHT_NORMAL" + } + ] + } + }, + { + "text": { + "content": "Playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 8, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CI4CENLEDBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiXMgdyZWxsaXN0", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@edinoprasic3000", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC8ElEyFBG5NzF5CajjLQRjw", + "canonicalBaseUrl": "/@edinoprasic3000" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 8, + "weightLabel": "FONT_WEIGHT_NORMAL" + } + ] + } + } + ] + }, + { + "metadataParts": [ + { + "text": { + "content": "View full playlist", + "commandRuns": [ + { + "startIndex": 0, + "length": 18, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CI4CENLEDBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiXMgdyZWxsaXN0", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLahRJXH7XPHmWNK74VzwIF2quWqdFIWvr", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLahRJXH7XPHmWNK74VzwIF2quWqdFIWvr" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 18, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "PLahRJXH7XPHmWNK74VzwIF2quWqdFIWvr", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CI4CENLEDBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "clientVeSpec": { + "uiType": 205394, + "veCounter": 1027219967 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CI4CENLEDBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiXMgdyZWxsaXN0mgEFCAwQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=XuM2onMGvTI&list=PLahRJXH7XPHmWNK74VzwIF2quWqdFIWvr&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "XuM2onMGvTI", + "playlistId": "PLahRJXH7XPHmWNK74VzwIF2quWqdFIWvr", + "params": "OAI%3D", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTGFoUkpYSDdYUEhtV05LNzRWendJRjJxdVdxZEZJV3Zy" + } + }, + "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&odepv=1&id=5ee336a27306bd32&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "u2XCC1rKxV0", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/u2XCC1rKxV0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDd4Q0v9znAMTV6GLYt4Jq40MWX0w", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/u2XCC1rKxV0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBpNh48nrIpf9g319CFxdew6geBNg", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Faolan by Sentamusic 25,802 views 4 years ago 4 minutes, 16 seconds" + } + }, + "simpleText": "Faolan" + }, + "longBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CIcCEKQwGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "4 years ago" + }, + "viewCountText": { + "simpleText": "25,802 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 16 seconds" + } + }, + "simpleText": "4:16" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIcCEKQwGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=u2XCC1rKxV0", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "u2XCC1rKxV0", + "nofollow": true, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&odepv=1&id=bb65c20b5acac55d&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CIcCEKQwGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CIcCEKQwGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "trackingParams": "CIcCEKQwGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJdA3Yqr1rXB8LK7AQ==", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "25K views" + } + }, + "simpleText": "25K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwCEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIwCEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "u2XCC1rKxV0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIwCEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "u2XCC1rKxV0" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "u2XCC1rKxV0" + ] + } + }, + { + "clickTrackingParams": "CIwCEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CI0CELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CIwCEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIsCENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "u2XCC1rKxV0", + "onAddCommand": { + "clickTrackingParams": "CIsCENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "u2XCC1rKxV0", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CIsCENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcCEKQwGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "Cgt1MlhDQzFyS3hWMA%3D%3D", + "commands": [ + { + "clickTrackingParams": "CIcCEKQwGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CIoCEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CIcCEKQwGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CIcCEKQwGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 16 seconds" + } + }, + "simpleText": "4:16" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIkCEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "u2XCC1rKxV0", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIkCEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "u2XCC1rKxV0" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CIkCEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIgCEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIgCEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "u2XCC1rKxV0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIgCEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "u2XCC1rKxV0" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "u2XCC1rKxV0" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CIgCEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Faolan - 4 minutes, 16 seconds - Go to channel - Senta - Topic - 25K views - 4 years ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "C_pGRMlCM3U", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGEMgZSguMA8=&rs=AOn4CLB_vkbQhRUgH75tZQVVJLFPs7K8sg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhDIGUoLjAP&rs=AOn4CLBJX6P3v_qpy--7IRxCBdygxb9ZoA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Oonagh - Gäa [Offizielles Musikvideo] by AIRFORCE1.TV 14,449,259 views 10 years ago 4 minutes, 7 seconds" + } + }, + "simpleText": "Oonagh - Gäa [Offizielles Musikvideo]" + }, + "longBylineText": { + "runs": [ + { + "text": "AIRFORCE1.TV", + "navigationEndpoint": { + "clickTrackingParams": "CIACEKQwGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@airforce1tvmusic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCD8hHNW3x7CA4M0Z1pi5NRQ", + "canonicalBaseUrl": "/@airforce1tvmusic" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "10 years ago" + }, + "viewCountText": { + "simpleText": "14,449,259 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 7 seconds" + } + }, + "simpleText": "4:07" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIACEKQwGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=C_pGRMlCM3U", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "C_pGRMlCM3U", + "nofollow": true, + "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&odepv=1&id=0bfa4644c9423375&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "AIRFORCE1.TV", + "navigationEndpoint": { + "clickTrackingParams": "CIACEKQwGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@airforce1tvmusic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCD8hHNW3x7CA4M0Z1pi5NRQ", + "canonicalBaseUrl": "/@airforce1tvmusic" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_lVsvv0Zc8K2igVxGy6UQYJqmFHouOR3ux9zH74iv30eQ=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "trackingParams": "CIACEKQwGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJdA9eaIyszIkf0L", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "14 million views" + } + }, + "simpleText": "14M views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIUCEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIUCEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "C_pGRMlCM3U", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIUCEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "C_pGRMlCM3U" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "C_pGRMlCM3U" + ] + } + }, + { + "clickTrackingParams": "CIUCEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CIYCELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CIUCEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIQCENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "C_pGRMlCM3U", + "onAddCommand": { + "clickTrackingParams": "CIQCENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "C_pGRMlCM3U", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CIQCENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIACEKQwGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtDX3BHUk1sQ00zVQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CIACEKQwGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CIMCEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CIACEKQwGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CIACEKQwGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 7 seconds" + } + }, + "simpleText": "4:07" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIICEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "C_pGRMlCM3U", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIICEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "C_pGRMlCM3U" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CIICEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIECEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIECEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "C_pGRMlCM3U", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIECEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "C_pGRMlCM3U" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "C_pGRMlCM3U" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CIECEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Oonagh - Gäa [Offizielles Musikvideo] - 4 minutes, 7 seconds - Go to channel - AIRFORCE1.TV - 14M views - 10 years ago - play video" + } + } + } + }, + { + "lockupViewModel": { + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwEwCKgBEF5IWvKriqkDIwgBFQAAiEIYAfABAfgB_gmAAtAFigIMCAAQARhDIGUoLjAP&rs=AOn4CLAabHbPX41tQiH4WqcvsFC0upCRMw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwExCNACELwBSFryq4qpAyMIARUAAIhCGAHwAQH4Af4JgALQBYoCDAgAEAEYQyBlKC4wDw==&rs=AOn4CLCTRgTaXcxojFx3S_nxI82tOkSAUg", + "width": 336, + "height": 188 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "MIX" + } + } + ] + }, + "text": "Mix", + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "backgroundColor": { + "lightTheme": 1648145, + "darkTheme": 1648145 + } + } + } + ], + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END" + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER" + } + } + ], + "backgroundColor": { + "lightTheme": 2768669, + "darkTheme": 2768669 + } + } + }, + "stackColor": { + "lightTheme": 8165739, + "darkTheme": 8031344 + } + } + }, + "metadata": { + "lockupMetadataViewModel": { + "title": { + "content": "Mix - Oonagh" + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + {}, + { + "metadataParts": [ + { + "text": { + "content": "Updated today" + } + } + ] + } + ], + "delimiter": " • " + } + } + } + }, + "contentId": "RDEMd8PZIv9CPsvvEDbo_pUD4w", + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CP8BEIrSDRgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "clientVeSpec": { + "uiType": 223498, + "veCounter": 1027219966 + }, + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CP8BEIrSDRgFIhMI1cDpsNXQiQMVVkd6BR0aeDiXMgpsaXN0X290aGVymgEFCAwQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=C_pGRMlCM3U&list=RDEMd8PZIv9CPsvvEDbo_pUD4w&start_radio=1&rv=XuM2onMGvTI", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "C_pGRMlCM3U", + "playlistId": "RDEMd8PZIv9CPsvvEDbo_pUD4w", + "params": "OALAAQHCAwtYdU0yb25NR3ZUSQ%3D%3D", + "continuePlayback": true, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhpSREVNZDhQWkl2OUNQc3Z2RURib19wVUQ0dw%3D%3D" + } + }, + "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&odepv=1&id=0bfa4644c9423375&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + } + } + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "UtP9J88Jzg0", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/UtP9J88Jzg0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCmkebFxTlBZCOUHBFkMHv0DodLFQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/UtP9J88Jzg0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOdwJVkok-U7P1YrZEchZZqY_HlQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Ruinen im Sand by Sentamusic 66,406 views 4 years ago 3 minutes, 15 seconds" + } + }, + "simpleText": "Ruinen im Sand" + }, + "longBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CPgBEKQwGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "4 years ago" + }, + "viewCountText": { + "simpleText": "66,406 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 15 seconds" + } + }, + "simpleText": "3:15" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPgBEKQwGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=UtP9J88Jzg0", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "UtP9J88Jzg0", + "nofollow": true, + "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&odepv=1&id=52d3fd27cf09ce0d&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CPgBEKQwGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CPgBEKQwGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "trackingParams": "CPgBEKQwGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJdAjZyn-Pyk_-lS", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "66K views" + } + }, + "simpleText": "66K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CP0BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "UtP9J88Jzg0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CP0BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "UtP9J88Jzg0" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "UtP9J88Jzg0" + ] + } + }, + { + "clickTrackingParams": "CP0BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CP4BELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CP0BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPwBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "UtP9J88Jzg0", + "onAddCommand": { + "clickTrackingParams": "CPwBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "UtP9J88Jzg0", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CPwBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPgBEKQwGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtVdFA5Sjg4SnpnMA%3D%3D", + "commands": [ + { + "clickTrackingParams": "CPgBEKQwGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CPsBEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CPgBEKQwGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CPgBEKQwGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 15 seconds" + } + }, + "simpleText": "3:15" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPoBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "UtP9J88Jzg0", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPoBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "UtP9J88Jzg0" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CPoBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPkBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPkBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "UtP9J88Jzg0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPkBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "UtP9J88Jzg0" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "UtP9J88Jzg0" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CPkBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Ruinen im Sand - 3 minutes, 15 seconds - Go to channel - Senta - Topic - 66K views - 4 years ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "Vu-6Er21_bM", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/Vu-6Er21_bM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDvKXWNaaAND_YpZMz6MohvZaHcBw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/Vu-6Er21_bM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDY7VmNj1HMKx4iaRKrgT2s5AJpqw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Mutter Erde by Story Of Dakota - Topic 34,662 views 6 years ago 3 minutes, 13 seconds" + } + }, + "simpleText": "Mutter Erde" + }, + "longBylineText": { + "runs": [ + { + "text": "Story Of Dakota - Topic", + "navigationEndpoint": { + "clickTrackingParams": "CPEBEKQwGAciEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCkYFRZTBmE1IzaKNuF6B3Uw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCkYFRZTBmE1IzaKNuF6B3Uw", + "canonicalBaseUrl": "/channel/UCkYFRZTBmE1IzaKNuF6B3Uw" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "6 years ago" + }, + "viewCountText": { + "simpleText": "34,662 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 13 seconds" + } + }, + "simpleText": "3:13" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPEBEKQwGAciEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Vu-6Er21_bM", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Vu-6Er21_bM", + "nofollow": true, + "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&odepv=1&id=56efba12bdb5fdb3&ip=79.205.208.149&initcwndbps=1911250&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "Story Of Dakota - Topic", + "navigationEndpoint": { + "clickTrackingParams": "CPEBEKQwGAciEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCkYFRZTBmE1IzaKNuF6B3Uw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCkYFRZTBmE1IzaKNuF6B3Uw", + "canonicalBaseUrl": "/channel/UCkYFRZTBmE1IzaKNuF6B3Uw" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/G1umXDgUfbA4XATwAC9Hb3RvQuFsNgE1k-WbtgSQUjMtSXU3SZdp5Se25A2H2xJcjgKWZxWxPQ=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "trackingParams": "CPEBEKQwGAciEwjVwOmw1dCJAxVWR3oFHRp4OJdAs_vX7avC7vdW", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "34K views" + } + }, + "simpleText": "34K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPYBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPYBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "Vu-6Er21_bM", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPYBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "Vu-6Er21_bM" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "Vu-6Er21_bM" + ] + } + }, + { + "clickTrackingParams": "CPYBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CPcBELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CPYBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPUBENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "Vu-6Er21_bM", + "onAddCommand": { + "clickTrackingParams": "CPUBENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "Vu-6Er21_bM", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CPUBENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPEBEKQwGAciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtWdS02RXIyMV9iTQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CPEBEKQwGAciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CPQBEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CPEBEKQwGAciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CPEBEKQwGAciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 13 seconds" + } + }, + "simpleText": "3:13" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPMBEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "Vu-6Er21_bM", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPMBEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Vu-6Er21_bM" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CPMBEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPIBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPIBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "Vu-6Er21_bM", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPIBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "Vu-6Er21_bM" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "Vu-6Er21_bM" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CPIBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Mutter Erde - 3 minutes, 13 seconds - Go to channel - Story Of Dakota - Topic - 34K views - 6 years ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "nLmNchGTh20", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/nLmNchGTh20/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCKWMorJR33a_BMctF8siBEPYPvSQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/nLmNchGTh20/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBb_bEgnelYdP-J1piDHKQK4D0lBA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Oonagh - Kuliko Jana - Eine neue Zeit by ICH FIND SCHLAGER TOLL 1,841,784 views 5 years ago 3 minutes, 34 seconds" + } + }, + "simpleText": "Oonagh - Kuliko Jana - Eine neue Zeit" + }, + "longBylineText": { + "runs": [ + { + "text": "ICH FIND SCHLAGER TOLL", + "navigationEndpoint": { + "clickTrackingParams": "COoBEKQwGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ICHFINDSCHLAGERTOLL", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCUJHYmJ3_1Kwfs3lqYc_Rxg", + "canonicalBaseUrl": "/@ICHFINDSCHLAGERTOLL" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "5 years ago" + }, + "viewCountText": { + "simpleText": "1,841,784 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 34 seconds" + } + }, + "simpleText": "3:34" + }, + "navigationEndpoint": { + "clickTrackingParams": "COoBEKQwGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=nLmNchGTh20", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "nLmNchGTh20", + "nofollow": true, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&odepv=1&id=9cb98d721193876d&ip=79.205.208.149&initcwndbps=1911250&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "ICH FIND SCHLAGER TOLL", + "navigationEndpoint": { + "clickTrackingParams": "COoBEKQwGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ICHFINDSCHLAGERTOLL", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCUJHYmJ3_1Kwfs3lqYc_Rxg", + "canonicalBaseUrl": "/@ICHFINDSCHLAGERTOLL" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/An23BS5d6Fbk1nRfF5PZQaOijfmnVWgI7XCjhFl0pwWAthZ1Ayw-4ZG6_zwkxCaBKfesXBmO=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "COoBEKQwGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "COoBEKQwGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJdA7Y7OjKGu49ycAQ==", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.8 million views" + } + }, + "simpleText": "1.8M views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CO8BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "nLmNchGTh20", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CO8BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "nLmNchGTh20" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "nLmNchGTh20" + ] + } + }, + { + "clickTrackingParams": "CO8BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CPABELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CO8BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CO4BENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "nLmNchGTh20", + "onAddCommand": { + "clickTrackingParams": "CO4BENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "nLmNchGTh20", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CO4BENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COoBEKQwGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtuTG1OY2hHVGgyMA%3D%3D", + "commands": [ + { + "clickTrackingParams": "COoBEKQwGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CO0BEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "COoBEKQwGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "COoBEKQwGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 34 seconds" + } + }, + "simpleText": "3:34" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "COwBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "nLmNchGTh20", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COwBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "nLmNchGTh20" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "COwBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "COsBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COsBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "nLmNchGTh20", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COsBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "nLmNchGTh20" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "nLmNchGTh20" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "COsBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Oonagh - Kuliko Jana - Eine neue Zeit - 3 minutes, 34 seconds - Go to channel - ICH FIND SCHLAGER TOLL - 1.8M views - 5 years ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "Ctpe9kafn78", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/Ctpe9kafn78/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDJqIxVeJPDgMFXTavr1aaYBuaY6w", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/Ctpe9kafn78/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBxlTlqj7JCTsvoQdWyMkB_JZJ1dA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "So still mein Herz by Sentamusic 48,241 views 4 years ago 4 minutes, 19 seconds" + } + }, + "simpleText": "So still mein Herz" + }, + "longBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "COMBEKQwGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "4 years ago" + }, + "viewCountText": { + "simpleText": "48,241 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 19 seconds" + } + }, + "simpleText": "4:19" + }, + "navigationEndpoint": { + "clickTrackingParams": "COMBEKQwGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Ctpe9kafn78", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Ctpe9kafn78", + "nofollow": true, + "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&odepv=1&id=0ada5ef6469f9fbf&ip=79.205.208.149&initcwndbps=1911250&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "COMBEKQwGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "COMBEKQwGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "trackingParams": "COMBEKQwGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJdAv7_-tOTel-0K", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "48K views" + } + }, + "simpleText": "48K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "COgBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COgBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "Ctpe9kafn78", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COgBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "Ctpe9kafn78" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "Ctpe9kafn78" + ] + } + }, + { + "clickTrackingParams": "COgBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "COkBELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "COgBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COcBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "Ctpe9kafn78", + "onAddCommand": { + "clickTrackingParams": "COcBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "Ctpe9kafn78", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "COcBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COMBEKQwGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtDdHBlOWthZm43OA%3D%3D", + "commands": [ + { + "clickTrackingParams": "COMBEKQwGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "COYBEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "COMBEKQwGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "COMBEKQwGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 19 seconds" + } + }, + "simpleText": "4:19" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "COUBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "Ctpe9kafn78", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COUBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Ctpe9kafn78" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "COUBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "COQBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COQBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "Ctpe9kafn78", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COQBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "Ctpe9kafn78" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "Ctpe9kafn78" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "COQBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "So still mein Herz - 4 minutes, 19 seconds - Go to channel - Senta - Topic - 48K views - 4 years ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "sg6j-zfUF_A", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/sg6j-zfUF_A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDk_V_5woDmnABodJnokWXNeyUulg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/sg6j-zfUF_A/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCFtDJv4zRfP6XgwasjaN_nvdfG7Q", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Eldamar by Sentamusic 11,079 views 4 years ago 3 minutes, 43 seconds" + } + }, + "simpleText": "Eldamar" + }, + "longBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CNwBEKQwGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "4 years ago" + }, + "viewCountText": { + "simpleText": "11,079 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 43 seconds" + } + }, + "simpleText": "3:43" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNwBEKQwGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=sg6j-zfUF_A", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "sg6j-zfUF_A", + "nofollow": true, + "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&odepv=1&id=b20ea3fb37d417f0&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CNwBEKQwGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CNwBEKQwGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "trackingParams": "CNwBEKQwGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJdA8K_QvrP_qIeyAQ==", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "11K views" + } + }, + "simpleText": "11K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "COEBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COEBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "sg6j-zfUF_A", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COEBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "sg6j-zfUF_A" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "sg6j-zfUF_A" + ] + } + }, + { + "clickTrackingParams": "COEBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "COIBELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "COEBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COABENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "sg6j-zfUF_A", + "onAddCommand": { + "clickTrackingParams": "COABENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "sg6j-zfUF_A", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "COABENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwBEKQwGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtzZzZqLXpmVUZfQQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CNwBEKQwGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CN8BEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CNwBEKQwGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CNwBEKQwGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 43 seconds" + } + }, + "simpleText": "3:43" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CN4BEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "sg6j-zfUF_A", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CN4BEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "sg6j-zfUF_A" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CN4BEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CN0BEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CN0BEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "sg6j-zfUF_A", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CN0BEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "sg6j-zfUF_A" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "sg6j-zfUF_A" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CN0BEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Eldamar - 3 minutes, 43 seconds - Go to channel - Senta - Topic - 11K views - 4 years ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "mabaKE-xNUo", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/mabaKE-xNUo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBZn8xM0oEJ6MDxWRRZ7jqqDvCrAw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/mabaKE-xNUo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDfLAhbREVerzlQTKI3c6b7-xJYmw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Celtic Woman - Tír na nÓg (feat Oonagh) [Official Music Video] by Universal Music Deutschland 10,097,065 views 9 years ago 3 minutes, 16 seconds" + } + }, + "simpleText": "Celtic Woman - Tír na nÓg (feat Oonagh) [Official Music Video]" + }, + "longBylineText": { + "runs": [ + { + "text": "Universal Music Deutschland", + "navigationEndpoint": { + "clickTrackingParams": "CNUBEKQwGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@UniversalMusicGermany", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCUt83CEM-kE3OQx0GqLdZtw", + "canonicalBaseUrl": "/@UniversalMusicGermany" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "9 years ago" + }, + "viewCountText": { + "simpleText": "10,097,065 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 16 seconds" + } + }, + "simpleText": "3:16" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNUBEKQwGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=mabaKE-xNUo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "mabaKE-xNUo", + "nofollow": true, + "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&odepv=1&id=99a6da284fb1354a&ip=79.205.208.149&initcwndbps=1911250&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "Universal Music Deutschland", + "navigationEndpoint": { + "clickTrackingParams": "CNUBEKQwGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@UniversalMusicGermany", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCUt83CEM-kE3OQx0GqLdZtw", + "canonicalBaseUrl": "/@UniversalMusicGermany" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_neU_ZtLnU0iv2J6Qhh-m-SdyrGBH5EY6OA_eLP35vUqA=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CNUBEKQwGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CNUBEKQwGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJdAyurE_YTFttOZAQ==", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "10 million views" + } + }, + "simpleText": "10M views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNoBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNoBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "mabaKE-xNUo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNoBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "mabaKE-xNUo" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "mabaKE-xNUo" + ] + } + }, + { + "clickTrackingParams": "CNoBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CNsBELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CNoBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNkBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "mabaKE-xNUo", + "onAddCommand": { + "clickTrackingParams": "CNkBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "mabaKE-xNUo", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CNkBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNUBEKQwGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgttYWJhS0UteE5Vbw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CNUBEKQwGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CNgBEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CNUBEKQwGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CNUBEKQwGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 16 seconds" + } + }, + "simpleText": "3:16" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNcBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "mabaKE-xNUo", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNcBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "mabaKE-xNUo" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CNcBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNYBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNYBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "mabaKE-xNUo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNYBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "mabaKE-xNUo" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "mabaKE-xNUo" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CNYBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Celtic Woman - Tír na nÓg (feat Oonagh) [Official Music Video] - 3 minutes, 16 seconds - Go to channel - Universal Music Deutschland - 10M views - 9 years ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "BQIbe3nNrLs", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/BQIbe3nNrLs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCozZphHkPbL1-MzdpLOTSONm-xPQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/BQIbe3nNrLs/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC2zkNbvfvCy95_KE9yP0CH2a_Wgw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Senta - Egal wie Weit (Offizielles Video) by Sentamusic 199,272 views 1 year ago 2 minutes, 46 seconds" + } + }, + "simpleText": "Senta - Egal wie Weit (Offizielles Video)" + }, + "longBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CM4BEKQwGAwiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "1 year ago" + }, + "viewCountText": { + "simpleText": "199,272 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 46 seconds" + } + }, + "simpleText": "2:46" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM4BEKQwGAwiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=BQIbe3nNrLs", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "BQIbe3nNrLs", + "nofollow": true, + "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&odepv=1&id=05021b7b79cdacbb&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CM4BEKQwGAwiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CM4BEKQwGAwiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "trackingParams": "CM4BEKQwGAwiEwjVwOmw1dCJAxVWR3oFHRp4OJdAu9m2zrfvhoEF", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "199K views" + } + }, + "simpleText": "199K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNMBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNMBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "BQIbe3nNrLs", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNMBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "BQIbe3nNrLs" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "BQIbe3nNrLs" + ] + } + }, + { + "clickTrackingParams": "CNMBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CNQBELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CNMBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNIBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "BQIbe3nNrLs", + "onAddCommand": { + "clickTrackingParams": "CNIBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "BQIbe3nNrLs", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CNIBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4BEKQwGAwiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtCUUliZTNuTnJMcw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CM4BEKQwGAwiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CNEBEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CM4BEKQwGAwiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CM4BEKQwGAwiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 46 seconds" + } + }, + "simpleText": "2:46" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNABEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "BQIbe3nNrLs", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNABEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "BQIbe3nNrLs" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CNABEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CM8BEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CM8BEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "BQIbe3nNrLs", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CM8BEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "BQIbe3nNrLs" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "BQIbe3nNrLs" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CM8BEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Senta - Egal wie Weit (Offizielles Video) - 2 minutes, 46 seconds - Go to channel - Sentamusic - 199K views - 1 year ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "6jkNLisOu6g", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/6jkNLisOu6g/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AHeA4AC4AOKAgwIABABGEkgYChlMA8=&rs=AOn4CLDl2aKLj-BQchX2vOtKn59s5iYt9A", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/6jkNLisOu6g/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB3gOAAuADigIMCAAQARhJIGAoZTAP&rs=AOn4CLAsr456CW0aDfmJbwNcl31xgr_6sw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "01 Aulë und Yavanna by T'Owd Cheshire Tup 9,826 views 5 years ago 3 minutes, 38 seconds" + } + }, + "simpleText": "01 Aulë und Yavanna" + }, + "longBylineText": { + "runs": [ + { + "text": "T'Owd Cheshire Tup", + "navigationEndpoint": { + "clickTrackingParams": "CMcBEKQwGA0iEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@towdcheshiretup7671", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCawJ5ocVllDHdba04OoiNgw", + "canonicalBaseUrl": "/@towdcheshiretup7671" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "5 years ago" + }, + "viewCountText": { + "simpleText": "9,826 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 38 seconds" + } + }, + "simpleText": "3:38" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMcBEKQwGA0iEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=6jkNLisOu6g", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "6jkNLisOu6g", + "nofollow": true, + "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&odepv=1&id=ea390d2e2b0ebba8&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "T'Owd Cheshire Tup", + "navigationEndpoint": { + "clickTrackingParams": "CMcBEKQwGA0iEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@towdcheshiretup7671", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCawJ5ocVllDHdba04OoiNgw", + "canonicalBaseUrl": "/@towdcheshiretup7671" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_nzZfr0zDdl4lpjqQZYVgr-tTjAwPzHUKsYCp9vRsE=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "trackingParams": "CMcBEKQwGA0iEwjVwOmw1dCJAxVWR3oFHRp4OJdAqPe62OKlw5zqAQ==", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "9.8K views" + } + }, + "simpleText": "9.8K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMwBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "6jkNLisOu6g", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMwBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "6jkNLisOu6g" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "6jkNLisOu6g" + ] + } + }, + { + "clickTrackingParams": "CMwBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CM0BELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CMwBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMsBENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "6jkNLisOu6g", + "onAddCommand": { + "clickTrackingParams": "CMsBENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "6jkNLisOu6g", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CMsBENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcBEKQwGA0iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "Cgs2amtOTGlzT3U2Zw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CMcBEKQwGA0iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CMoBEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CMcBEKQwGA0iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CMcBEKQwGA0iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 38 seconds" + } + }, + "simpleText": "3:38" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMkBEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "6jkNLisOu6g", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMkBEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "6jkNLisOu6g" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CMkBEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMgBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMgBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "6jkNLisOu6g", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMgBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "6jkNLisOu6g" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "6jkNLisOu6g" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CMgBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "01 Aulë und Yavanna - 3 minutes, 38 seconds - Go to channel - T'Owd Cheshire Tup - 9.8K views - 5 years ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "vnjva6Q2NMw", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/vnjva6Q2NMw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCo-TVqOy7D1phoX7z3TnoGSe2wQQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/vnjva6Q2NMw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLApZ1cuBTMKRWYowCDgEOJ-cEXBdg", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "#Oonagh #OonaghLive | Oonagh | Show completo • Full concert (2017) / 480p by Oonagh Brazil 15,623 views 4 years ago 40 minutes" + } + }, + "simpleText": "#Oonagh #OonaghLive | Oonagh | Show completo • Full concert (2017) / 480p" + }, + "longBylineText": { + "runs": [ + { + "text": "Oonagh Brazil", + "navigationEndpoint": { + "clickTrackingParams": "CMABEKQwGA4iEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@oonaghbrazil3482", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCXAUp0fwOEZ4Q4ijtco-j-Q", + "canonicalBaseUrl": "/@oonaghbrazil3482" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "4 years ago" + }, + "viewCountText": { + "simpleText": "15,623 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "40 minutes, 7 seconds" + } + }, + "simpleText": "40:07" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMABEKQwGA4iEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=vnjva6Q2NMw", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "vnjva6Q2NMw", + "nofollow": true, + "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&odepv=1&id=be78ef6ba43634cc&ip=79.205.208.149&initcwndbps=1911250&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "Oonagh Brazil", + "navigationEndpoint": { + "clickTrackingParams": "CMABEKQwGA4iEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@oonaghbrazil3482", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCXAUp0fwOEZ4Q4ijtco-j-Q", + "canonicalBaseUrl": "/@oonaghbrazil3482" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_lQEvqMeM7OnUcyoPo9r0sfONO3EgcS31imZyqbm16vKA=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "trackingParams": "CMABEKQwGA4iEwjVwOmw1dCJAxVWR3oFHRp4OJdAzOnYobrtu7y-AQ==", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "15K views" + } + }, + "simpleText": "15K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMUBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMUBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "vnjva6Q2NMw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMUBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "vnjva6Q2NMw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "vnjva6Q2NMw" + ] + } + }, + { + "clickTrackingParams": "CMUBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CMYBELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CMUBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMQBENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "vnjva6Q2NMw", + "onAddCommand": { + "clickTrackingParams": "CMQBENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "vnjva6Q2NMw", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CMQBENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMABEKQwGA4iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "Cgt2bmp2YTZRMk5Ndw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CMABEKQwGA4iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CMMBEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CMABEKQwGA4iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CMABEKQwGA4iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "40 minutes, 7 seconds" + } + }, + "simpleText": "40:07" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMIBEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "vnjva6Q2NMw", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMIBEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "vnjva6Q2NMw" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CMIBEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMEBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMEBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "vnjva6Q2NMw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMEBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "vnjva6Q2NMw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "vnjva6Q2NMw" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CMEBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "#Oonagh #OonaghLive | Oonagh | Show completo • Full concert (2017) / 480p - 40 minutes - Go to channel - Oonagh Brazil - 15K views - 4 years ago - play video" + } + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "kz34YyjG-Oo", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/kz34YyjG-Oo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAXEkH_BO5UX-d12GbXXEk_pAhFhQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/kz34YyjG-Oo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAGfSNohj4XUlcEncnhvehyehgXZA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "CRAZY UNEXPECTED BATTLE combinations on The Voice by The Voice Global 3,150,637 views 4 months ago 36 minutes" + } + }, + "simpleText": "CRAZY UNEXPECTED BATTLE combinations on The Voice" + }, + "longBylineText": { + "runs": [ + { + "text": "The Voice Global", + "navigationEndpoint": { + "clickTrackingParams": "CLkBEKQwGA8iEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TheVoiceGlobal", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCJYtYkiGldqX6Ne938j-k2g", + "canonicalBaseUrl": "/@TheVoiceGlobal" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "4 months ago" + }, + "viewCountText": { + "simpleText": "3,150,637 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "36 minutes, 27 seconds" + } + }, + "simpleText": "36:27" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLkBEKQwGA8iEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=kz34YyjG-Oo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "kz34YyjG-Oo", + "nofollow": true, + "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&odepv=1&id=933df86328c6f8ea&ip=79.205.208.149&initcwndbps=1911250&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "The Voice Global", + "navigationEndpoint": { + "clickTrackingParams": "CLkBEKQwGA8iEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TheVoiceGlobal", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCJYtYkiGldqX6Ne938j-k2g", + "canonicalBaseUrl": "/@TheVoiceGlobal" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/0Q3BwKKmO0pXApaqRiQr7dTKz-ftpS1TxUtBZ0FGgrMEZhlMjUrwWXQypH7pu3Dg7A7FsbtHQg=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CLkBEKQwGA8iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CLkBEKQwGA8iEwjVwOmw1dCJAxVWR3oFHRp4OJdA6vGbxrKM_p6TAQ==", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "3.1 million views" + } + }, + "simpleText": "3.1M views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL4BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CL4BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "kz34YyjG-Oo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CL4BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "kz34YyjG-Oo" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "kz34YyjG-Oo" + ] + } + }, + { + "clickTrackingParams": "CL4BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CL8BELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CL4BEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CL0BENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "kz34YyjG-Oo", + "onAddCommand": { + "clickTrackingParams": "CL0BENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "kz34YyjG-Oo", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CL0BENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkBEKQwGA8iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtrejM0WXlqRy1Pbw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CLkBEKQwGA8iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CLwBEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CLkBEKQwGA8iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CLkBEKQwGA8iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "36 minutes, 27 seconds" + } + }, + "simpleText": "36:27" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLsBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "kz34YyjG-Oo", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLsBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "kz34YyjG-Oo" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CLsBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLoBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLoBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "kz34YyjG-Oo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLoBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "kz34YyjG-Oo" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "kz34YyjG-Oo" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CLoBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "CRAZY UNEXPECTED BATTLE combinations on The Voice - 36 minutes - Go to channel - The Voice Global - 3.1M views - 4 months ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "2cKs7BcgIfQ", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/2cKs7BcgIfQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAAvtdLsnu2ea26UIk2lN9tqOr_VA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/2cKs7BcgIfQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAYhd8ZhicK5DIND-EZFJ5H2qCgww", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Minne Duett by fauntube 294,858 views 6 years ago 3 minutes, 40 seconds" + } + }, + "simpleText": "Minne Duett" + }, + "longBylineText": { + "runs": [ + { + "text": "fauntube", + "navigationEndpoint": { + "clickTrackingParams": "CLIBEKQwGBAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCxWwz-uZkTNwEM_duLUrWkQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxWwz-uZkTNwEM_duLUrWkQ", + "canonicalBaseUrl": "/channel/UCxWwz-uZkTNwEM_duLUrWkQ" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "6 years ago" + }, + "viewCountText": { + "simpleText": "294,858 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 40 seconds" + } + }, + "simpleText": "3:40" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLIBEKQwGBAiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=2cKs7BcgIfQ", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "2cKs7BcgIfQ", + "nofollow": true, + "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&odepv=1&id=d9c2acec172021f4&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "fauntube", + "navigationEndpoint": { + "clickTrackingParams": "CLIBEKQwGBAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCxWwz-uZkTNwEM_duLUrWkQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxWwz-uZkTNwEM_duLUrWkQ", + "canonicalBaseUrl": "/channel/UCxWwz-uZkTNwEM_duLUrWkQ" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_mP0XxeJzJhZPOtjS8H8UE0v5mt80H91MX6a_kfG2eJgjM=s88-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CLIBEKQwGBAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "trackingParams": "CLIBEKQwGBAiEwjVwOmw1dCJAxVWR3oFHRp4OJdA9MOAucGdq-HZAQ==", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "294K views" + } + }, + "simpleText": "294K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLcBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "2cKs7BcgIfQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLcBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "2cKs7BcgIfQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "2cKs7BcgIfQ" + ] + } + }, + { + "clickTrackingParams": "CLcBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CLgBELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CLcBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLYBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "2cKs7BcgIfQ", + "onAddCommand": { + "clickTrackingParams": "CLYBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "2cKs7BcgIfQ", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CLYBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLIBEKQwGBAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgsyY0tzN0JjZ0lmUQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CLIBEKQwGBAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CLUBEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CLIBEKQwGBAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CLIBEKQwGBAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 40 seconds" + } + }, + "simpleText": "3:40" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLQBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "2cKs7BcgIfQ", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLQBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "2cKs7BcgIfQ" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CLQBEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLMBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLMBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "2cKs7BcgIfQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLMBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "2cKs7BcgIfQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "2cKs7BcgIfQ" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CLMBEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Minne Duett - 3 minutes, 40 seconds - Go to channel - Faun - Topic - 294K views - 6 years ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "ow8xLlqkMuU", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/ow8xLlqkMuU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCLrrwu8ZDxOLwcLJn8C75tlhyT4A", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/ow8xLlqkMuU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB2IoX8D-ILbTtwSZLHDvL6wfqnVg", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Oonagh - Faolan by Martchen13 1,634,446 views 9 years ago 5 minutes, 21 seconds" + } + }, + "simpleText": "Oonagh - Faolan" + }, + "longBylineText": { + "runs": [ + { + "text": "Martchen13", + "navigationEndpoint": { + "clickTrackingParams": "CKsBEKQwGBEiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Martchen13", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCopVUcd6jgIxM9YTegO7Hww", + "canonicalBaseUrl": "/@Martchen13" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "9 years ago" + }, + "viewCountText": { + "simpleText": "1,634,446 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "5 minutes, 21 seconds" + } + }, + "simpleText": "5:21" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKsBEKQwGBEiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=ow8xLlqkMuU", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "ow8xLlqkMuU", + "nofollow": true, + "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&odepv=1&id=a30f312e5aa432e5&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "Martchen13", + "navigationEndpoint": { + "clickTrackingParams": "CKsBEKQwGBEiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Martchen13", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCopVUcd6jgIxM9YTegO7Hww", + "canonicalBaseUrl": "/@Martchen13" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/B6tbK2h24H4EBxB8vFikRBd5vI319leVh6FDsxtmx4HLRGPBbMlnrbyB4-vw9q4xehn3yM4i43w=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "trackingParams": "CKsBEKQwGBEiEwjVwOmw1dCJAxVWR3oFHRp4OJdA5eWQ1eWlzIejAQ==", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.6 million views" + } + }, + "simpleText": "1.6M views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLABEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLABEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "ow8xLlqkMuU", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLABEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "ow8xLlqkMuU" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "ow8xLlqkMuU" + ] + } + }, + { + "clickTrackingParams": "CLABEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CLEBELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CLABEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CK8BENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "ow8xLlqkMuU", + "onAddCommand": { + "clickTrackingParams": "CK8BENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "ow8xLlqkMuU", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CK8BENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKsBEKQwGBEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "Cgtvdzh4TGxxa011VQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CKsBEKQwGBEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CK4BEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CKsBEKQwGBEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CKsBEKQwGBEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "5 minutes, 21 seconds" + } + }, + "simpleText": "5:21" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CK0BEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "ow8xLlqkMuU", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CK0BEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "ow8xLlqkMuU" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CK0BEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKwBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKwBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "ow8xLlqkMuU", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKwBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "ow8xLlqkMuU" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "ow8xLlqkMuU" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CKwBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Oonagh - Faolan - 5 minutes, 21 seconds - Go to channel - Martchen13 - 1.6M views - 9 years ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "IqiTJK_uzUY", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/IqiTJK_uzUY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYDY-oXJIpwhOqMPF35qtcItpXTw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/IqiTJK_uzUY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDdEWAy_yZzt80AsnDXMbYJ7SEw-Q", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Hans Zimmer | ULTIMATE Soundtrack Compilation Mix by Straals 19,574,820 views 5 years ago 58 minutes" + } + }, + "simpleText": "Hans Zimmer | ULTIMATE Soundtrack Compilation Mix" + }, + "longBylineText": { + "runs": [ + { + "text": "Straals", + "navigationEndpoint": { + "clickTrackingParams": "CKQBEKQwGBIiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Straals", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCEQKgGFD-oJAl3L0CfTb_1g", + "canonicalBaseUrl": "/@Straals" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "5 years ago" + }, + "viewCountText": { + "simpleText": "19,574,820 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "58 minutes, 13 seconds" + } + }, + "simpleText": "58:13" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKQBEKQwGBIiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=IqiTJK_uzUY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "IqiTJK_uzUY", + "nofollow": true, + "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&odepv=1&id=22a89324afeecd46&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "Straals", + "navigationEndpoint": { + "clickTrackingParams": "CKQBEKQwGBIiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWQ=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Straals", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCEQKgGFD-oJAl3L0CfTb_1g", + "canonicalBaseUrl": "/@Straals" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_lPuejfIc_Kf0WuQthwDSelUCruf8WNXWyLXg6yc3qIRA=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "trackingParams": "CKQBEKQwGBIiEwjVwOmw1dCJAxVWR3oFHRp4OJdAxpq7_8rkpNQi", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "19 million views" + } + }, + "simpleText": "19M views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKkBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "IqiTJK_uzUY", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKkBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "IqiTJK_uzUY" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "IqiTJK_uzUY" + ] + } + }, + { + "clickTrackingParams": "CKkBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CKoBELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CKkBEP6YBBgFIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKgBENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "IqiTJK_uzUY", + "onAddCommand": { + "clickTrackingParams": "CKgBENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "IqiTJK_uzUY", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CKgBENGqBRgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKQBEKQwGBIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtJcWlUSktfdXpVWQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CKQBEKQwGBIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CKcBEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CKQBEKQwGBIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CKQBEKQwGBIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "58 minutes, 13 seconds" + } + }, + "simpleText": "58:13" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKYBEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "IqiTJK_uzUY", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKYBEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "IqiTJK_uzUY" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CKYBEPnnAxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKUBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKUBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "IqiTJK_uzUY", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKUBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "IqiTJK_uzUY" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "IqiTJK_uzUY" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CKUBEMfsBBgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Hans Zimmer | ULTIMATE Soundtrack Compilation Mix - 58 minutes - Go to channel - Straals - 19M views - 5 years ago - play video" + } + } + } + }, + { + "compactVideoRenderer": { + "videoId": "44G9JvrauLg", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/44G9JvrauLg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQ3prhoiPh2Be5MN0tkX1gDGWs1w", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/44G9JvrauLg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB9Ow4teYaOtOQkV_AcUhT2-qJ9hw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Tri Martolod by Santiano 932,727 views 6 years ago 3 minutes, 19 seconds" + } + }, + "simpleText": "Tri Martolod" + }, + "longBylineText": { + "runs": [ + { + "text": "Santiano", + "navigationEndpoint": { + "clickTrackingParams": "CJ0BEKQwGBMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UC9qKvxWJEiRxsQnFN0tenyw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9qKvxWJEiRxsQnFN0tenyw", + "canonicalBaseUrl": "/channel/UC9qKvxWJEiRxsQnFN0tenyw" + } + } + } + ] + }, + "publishedTimeText": { + "simpleText": "6 years ago" + }, + "viewCountText": { + "simpleText": "932,727 views" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 19 seconds" + } + }, + "simpleText": "3:19" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ0BEKQwGBMiEwjVwOmw1dCJAxVWR3oFHRp4OJcyB3JlbGF0ZWRIsvqamKfUzfFemgEFCAEQ-B0=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=44G9JvrauLg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "44G9JvrauLg", + "nofollow": true, + "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&odepv=1&id=e381bd26fadab8b8&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "text": "Santiano", + "navigationEndpoint": { + "clickTrackingParams": "CJ0BEKQwGBMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UC9qKvxWJEiRxsQnFN0tenyw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9qKvxWJEiRxsQnFN0tenyw", + "canonicalBaseUrl": "/channel/UC9qKvxWJEiRxsQnFN0tenyw" + } + } + } + ] + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/daePPPIXMLk1HBFMiESnwZtkEijLne7yeTkM92kupm-ruG4acyPoAuY80mGZLKUUPoBTW0MO=s88-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJ0BEKQwGBMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "trackingParams": "CJ0BEKQwGBMiEwjVwOmw1dCJAxVWR3oFHRp4OJdAuPHq1u-k78DjAQ==", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "932K views" + } + }, + "simpleText": "932K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKIBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKIBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "44G9JvrauLg", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKIBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "44G9JvrauLg" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "44G9JvrauLg" + ] + } + }, + { + "clickTrackingParams": "CKIBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CKMBELlqIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "trackingParams": "CKIBEP6YBBgGIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKEBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "offlineVideoEndpoint": { + "videoId": "44G9JvrauLg", + "onAddCommand": { + "clickTrackingParams": "CKEBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "getDownloadActionCommand": { + "videoId": "44G9JvrauLg", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CKEBENGqBRgHIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0BEKQwGBMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "Cgs0NEc5SnZyYXVMZw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CJ0BEKQwGBMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CKABEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CJ0BEKQwGBMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "hasSeparator": true + } + } + ], + "trackingParams": "CJ0BEKQwGBMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 19 seconds" + } + }, + "simpleText": "3:19" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJ8BEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "44G9JvrauLg", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJ8BEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "44G9JvrauLg" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CJ8BEPnnAxgCIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJ4BEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJ4BEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "44G9JvrauLg", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJ4BEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "44G9JvrauLg" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "44G9JvrauLg" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CJ4BEMfsBBgDIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Tri Martolod - 3 minutes, 19 seconds - Go to channel - Santiano - Topic - 932K views - 6 years ago - play video" + } + } + } + }, + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CJsBEKkwIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "CBQSExILWHVNMm9uTUd2VEnAAQHIAQEYACqeDDJzNkw2d3lQQ1FxTUNRb0Q4ajRBQ2c3Q1Bnc0lsNU83LV9URHJMR3lBUW9Pd2o0TENPX085YWFVc0xtMGtnRUtEY0ktQ2dpNG41dXo3N1c2NG5rS0RjSS1DZ2p2dHVQWWl0T0VtSFFLRGNJLUNnal9fYWpTbC0ySTZBWUtEc0ktQ3dqTXlQeUE1b3l0MjljQkNnM0NQZ29JMWVQVzZKV1J3NEJTQ2czQ1Bnb0lpTjJYbHJHODc4WVFDZzdDUGdzSXlyMkw2NkhLdm9ya0FRb093ajRMQ0steDVKNjF0LWI0bndFS0RjSS1DZ2k2aWNfQWdJN2h6RG9LRHNJLUN3akc1T1RibnZDUzl0NEJDZzdDUGdzSXd2cnZ6LWZMN3NYUUFRb053ajRLQ091S2w5SHozTFBwT2dvT3dqNExDSzZUajduSXhiS0lvd0VLRGNJLUNnajExWkhpcHViYjhSTUtEY0ktQ2dqeDc0bWtnYlNQb1I0S0RjSS1DZ2kwLVlXSXl1aU43endLRHNJLUN3ajhpSmlkM1lhVWdwRUJDZzdDUGdzSTFwdWE4Y0NTaU9iakFRb093ajRMQ1B5SHNwakI5dHFxekFFS0RjSS1DZ2pQZ3NuSzZMZWF5aTBLRGNJLUNnaXI0OGZKcmZPYXpHUUtEc0ktQ3dqaHI5X210YlRsb2JVQkNnN0NQZ3NJdl83dHU3dXUxb3VBQVFvRDhqNEFDZzNDUGdvSXM3X1J2SXpHOXVJVENnUHlQZ0FLRHNJLUN3alhsUG5NdEttcXk0QUJDZ1B5UGdBS0o5SS1KQW9pVUV4aGFGSktXRWczV0ZCSWJWZE9TemMwVm5wM1NVWXljWFZYY1dSR1NWZDJjZ29EOGo0QUNnN0NQZ3NJM1lxcjFyWEI4TEs3QVFvRDhqNEFDZzNDUGdvSTllYUl5c3pJa2YwTENnUHlQZ0FLSDlJLUhBb2FVa1JGVFdRNFVGcEpkamxEVUhOMmRrVkVZbTlmY0ZWRU5IY0tBX0ktQUFvTndqNEtDSTJjcF9qOHBQX3BVZ29EOGo0QUNnM0NQZ29Jc192WDdhdkM3dmRXQ2dQeVBnQUtEc0ktQ3dqdGpzNk1vYTdqM0p3QkNnUHlQZ0FLRGNJLUNnaV92XzYwNU42WDdRb0tBX0ktQUFvT3dqNExDUEN2MEw2el82aUhzZ0VLQV9JLUFBb093ajRMQ01ycXhQMkV4YmJUbVFFS0FfSS1BQW9Od2o0S0NMdlp0czYzNzRhQkJRb0Q4ajRBQ2c3Q1Bnc0lxUGU2Mk9LbHc1enFBUW9EOGo0QUNnN0NQZ3NJek9uWW9icnR1N3ktQVFvRDhqNEFDZzdDUGdzSTZ2R2J4cktNX3A2VEFRb0Q4ajRBQ2c3Q1Bnc0k5TU9BdWNHZHEtSFpBUW9EOGo0QUNnN0NQZ3NJNWVXUTFlV2x6SWVqQVFvRDhqNEFDZzNDUGdvSXhwcTdfOHJrcE5RaUNnUHlQZ0FLRHNJLUN3aTQ4ZXJXNzZUdndPTUJFaFVBR2h3ZUlDSWtKaWdxTEM0d01qUTJPRG84UGtBYUJBZ0FFQUVhQkFnQUVBSWFCQWdBRUFNYUJBZ0FFQVFhQkFnQUVBVWFCQWdBRUFZYUJBZ0FFQWNhQkFnQUVBZ2FCQWdBRUFrYUJBZ0FFQW9hQkFnQUVBc2FCQWdBRUF3YUJBZ0FFQTBhQkFnQUVBNGFCQWdBRUE4YUJBZ0FFQkFhQkFnQUVCRWFCQWdBRUJJYUJBZ0FFQk1hQkFnQUVCUWFCQWdBRUJVYUJBZ0FFQllhQkFnQUVCY2FCQWdBRUJnYUJBZ0FFQmthQkFnYUVCc2FCQWdjRUIwYUJBZ2VFQjhhQkFnZ0VDRWFCQWdpRUNNYUJBZ2tFQ1VhQkFnbUVDY2FCQWdvRUNrYUJBZ3FFQ3NhQkFnc0VDMGFCQWd1RUM4YUJBZ3dFREVhQkFneUVETWFCQWcwRURVYUJBZzJFRGNhQkFnNEVEa2FCQWc2RURzYUJBZzhFRDBhQkFnLUVEOGFCQWhBRUVFcUZRQWFIQjRnSWlRbUtDb3NMakF5TkRZNE9qdy1RQWoPd2F0Y2gtbmV4dC1mZWVk", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + }, + "button": { + "buttonRenderer": { + "style": "STYLE_SUGGESTIVE", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Show more" + } + ] + }, + "trackingParams": "CJwBEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "command": { + "clickTrackingParams": "CJwBEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "CBQSExILWHVNMm9uTUd2VEnAAQHIAQEYACqeDDJzNkw2d3lQQ1FxTUNRb0Q4ajRBQ2c3Q1Bnc0lsNU83LV9URHJMR3lBUW9Pd2o0TENPX085YWFVc0xtMGtnRUtEY0ktQ2dpNG41dXo3N1c2NG5rS0RjSS1DZ2p2dHVQWWl0T0VtSFFLRGNJLUNnal9fYWpTbC0ySTZBWUtEc0ktQ3dqTXlQeUE1b3l0MjljQkNnM0NQZ29JMWVQVzZKV1J3NEJTQ2czQ1Bnb0lpTjJYbHJHODc4WVFDZzdDUGdzSXlyMkw2NkhLdm9ya0FRb093ajRMQ0steDVKNjF0LWI0bndFS0RjSS1DZ2k2aWNfQWdJN2h6RG9LRHNJLUN3akc1T1RibnZDUzl0NEJDZzdDUGdzSXd2cnZ6LWZMN3NYUUFRb053ajRLQ091S2w5SHozTFBwT2dvT3dqNExDSzZUajduSXhiS0lvd0VLRGNJLUNnajExWkhpcHViYjhSTUtEY0ktQ2dqeDc0bWtnYlNQb1I0S0RjSS1DZ2kwLVlXSXl1aU43endLRHNJLUN3ajhpSmlkM1lhVWdwRUJDZzdDUGdzSTFwdWE4Y0NTaU9iakFRb093ajRMQ1B5SHNwakI5dHFxekFFS0RjSS1DZ2pQZ3NuSzZMZWF5aTBLRGNJLUNnaXI0OGZKcmZPYXpHUUtEc0ktQ3dqaHI5X210YlRsb2JVQkNnN0NQZ3NJdl83dHU3dXUxb3VBQVFvRDhqNEFDZzNDUGdvSXM3X1J2SXpHOXVJVENnUHlQZ0FLRHNJLUN3alhsUG5NdEttcXk0QUJDZ1B5UGdBS0o5SS1KQW9pVUV4aGFGSktXRWczV0ZCSWJWZE9TemMwVm5wM1NVWXljWFZYY1dSR1NWZDJjZ29EOGo0QUNnN0NQZ3NJM1lxcjFyWEI4TEs3QVFvRDhqNEFDZzNDUGdvSTllYUl5c3pJa2YwTENnUHlQZ0FLSDlJLUhBb2FVa1JGVFdRNFVGcEpkamxEVUhOMmRrVkVZbTlmY0ZWRU5IY0tBX0ktQUFvTndqNEtDSTJjcF9qOHBQX3BVZ29EOGo0QUNnM0NQZ29Jc192WDdhdkM3dmRXQ2dQeVBnQUtEc0ktQ3dqdGpzNk1vYTdqM0p3QkNnUHlQZ0FLRGNJLUNnaV92XzYwNU42WDdRb0tBX0ktQUFvT3dqNExDUEN2MEw2el82aUhzZ0VLQV9JLUFBb093ajRMQ01ycXhQMkV4YmJUbVFFS0FfSS1BQW9Od2o0S0NMdlp0czYzNzRhQkJRb0Q4ajRBQ2c3Q1Bnc0lxUGU2Mk9LbHc1enFBUW9EOGo0QUNnN0NQZ3NJek9uWW9icnR1N3ktQVFvRDhqNEFDZzdDUGdzSTZ2R2J4cktNX3A2VEFRb0Q4ajRBQ2c3Q1Bnc0k5TU9BdWNHZHEtSFpBUW9EOGo0QUNnN0NQZ3NJNWVXUTFlV2x6SWVqQVFvRDhqNEFDZzNDUGdvSXhwcTdfOHJrcE5RaUNnUHlQZ0FLRHNJLUN3aTQ4ZXJXNzZUdndPTUJFaFVBR2h3ZUlDSWtKaWdxTEM0d01qUTJPRG84UGtBYUJBZ0FFQUVhQkFnQUVBSWFCQWdBRUFNYUJBZ0FFQVFhQkFnQUVBVWFCQWdBRUFZYUJBZ0FFQWNhQkFnQUVBZ2FCQWdBRUFrYUJBZ0FFQW9hQkFnQUVBc2FCQWdBRUF3YUJBZ0FFQTBhQkFnQUVBNGFCQWdBRUE4YUJBZ0FFQkFhQkFnQUVCRWFCQWdBRUJJYUJBZ0FFQk1hQkFnQUVCUWFCQWdBRUJVYUJBZ0FFQllhQkFnQUVCY2FCQWdBRUJnYUJBZ0FFQmthQkFnYUVCc2FCQWdjRUIwYUJBZ2VFQjhhQkFnZ0VDRWFCQWdpRUNNYUJBZ2tFQ1VhQkFnbUVDY2FCQWdvRUNrYUJBZ3FFQ3NhQkFnc0VDMGFCQWd1RUM4YUJBZ3dFREVhQkFneUVETWFCQWcwRURVYUJBZzJFRGNhQkFnNEVEa2FCQWc2RURzYUJBZzhFRDBhQkFnLUVEOGFCQWhBRUVFcUZRQWFIQjRnSWlRbUtDb3NMakF5TkRZNE9qdy1RQWoPd2F0Y2gtbmV4dC1mZWVk", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + } + } + ], + "trackingParams": "CJsBEKkwIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "targetId": "watch-next-feed" + } + }, + "autoplay": { + "autoplay": { + "sets": [ + { + "mode": "NORMAL", + "autoplayVideo": { + "clickTrackingParams": "CJoBEOGSASITCNXA6bDV0IkDFVZHegUdGng4lzIMcmVsYXRlZC1hdXRvSLL6mpin1M3xXpoBBQgDEPgd", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=sg6j-zfUF_A&pp=QAFIAQ%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "sg6j-zfUF_A", + "params": "EAEYAdoBBAgBKgA%3D", + "playerParams": "QAFIAQ%3D%3D", + "watchEndpointSupportedPrefetchConfig": { + "prefetchHintConfig": { + "prefetchPriority": 0, + "countdownUiRelativeSecondsPrefetchCondition": -3 + } + } + } + } + } + ], + "countDownSecs": 5, + "trackingParams": "CJoBEOGSASITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + } + } + }, + "currentVideoEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=XuM2onMGvTI", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "XuM2onMGvTI", + "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&odepv=1&id=5ee336a27306bd32&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "playerOverlays": { + "playerOverlayRenderer": { + "endScreen": { + "watchNextEndScreenRenderer": { + "results": [ + { + "endScreenVideoRenderer": { + "videoId": "E8XaMMeUX7M", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/E8XaMMeUX7M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDpslNXCsGByXyek5rqUTlPduA6PQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/E8XaMMeUX7M/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCw-P2jakSsLDxxvrmxxnrLoj8yYg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/E8XaMMeUX7M/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCKzjnmbjKFTocIWGZmeErhxarXsg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/E8XaMMeUX7M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCiR5P4H39iF_JpaRsWj33p6xILZQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Sie singt für die, die sie nicht hören by Sentamusic 127,967 views 6 years ago 4 minutes, 5 seconds" + } + }, + "simpleText": "Sie singt für die, die sie nicht hören" + }, + "shortBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CJkBEL1OGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 5 seconds" + } + }, + "simpleText": "4:05" + }, + "lengthInSeconds": 245, + "navigationEndpoint": { + "clickTrackingParams": "CJkBEL1OGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJcyCWVuZHNjcmVlbkiy-pqYp9TN8V6aAQUIAhD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=E8XaMMeUX7M", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "E8XaMMeUX7M", + "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&odepv=1&id=13c5da30c7945fb3&ip=79.205.208.149&initcwndbps=1911250&mt=1731203833&oweuc=" + } + } + } + } + }, + "trackingParams": "CJkBEL1OGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "127K views" + } + }, + "simpleText": "127K views" + }, + "publishedTimeText": { + "simpleText": "6 years ago" + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 5 seconds" + } + }, + "simpleText": "4:05" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ] + } + }, + { + "endScreenVideoRenderer": { + "videoId": "gJapS0meSlc", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/gJapS0meSlc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAfLAy2Om8QBrXljaToKGg4EAmy6w", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/gJapS0meSlc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCJepNZwlCdiHroN5vJuqWuEUbgRg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/gJapS0meSlc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCEcBENxgBJ57UvKPCuGv_NdzWV8w", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/gJapS0meSlc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBI4RQ40zY_KOh8qZG4991VueDo3w", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Kingdom of Heaven: Burning the Past Extended (20 minutes version) by Encosen 243,357 views 4 years ago 20 minutes" + } + }, + "simpleText": "Kingdom of Heaven: Burning the Past Extended (20 minutes version)" + }, + "shortBylineText": { + "runs": [ + { + "text": "Encosen", + "navigationEndpoint": { + "clickTrackingParams": "CJgBEL1OGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@huss4realz", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC8N3VCj1kY6VB3kiDh38bxw", + "canonicalBaseUrl": "/@huss4realz" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 4 seconds" + } + }, + "simpleText": "20:04" + }, + "lengthInSeconds": 1204, + "navigationEndpoint": { + "clickTrackingParams": "CJgBEL1OGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJcyCWVuZHNjcmVlbkiy-pqYp9TN8V6aAQUIAhD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=gJapS0meSlc", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "gJapS0meSlc", + "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&odepv=1&id=8096a94b499e4a57&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "trackingParams": "CJgBEL1OGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "243K views" + } + }, + "simpleText": "243K views" + }, + "publishedTimeText": { + "simpleText": "4 years ago" + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 4 seconds" + } + }, + "simpleText": "20:04" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ] + } + }, + { + "endScreenPlaylistRenderer": { + "playlistId": "PLahRJXH7XPHmWNK74VzwIF2quWqdFIWvr", + "title": { + "simpleText": "Oonagh Best Off" + }, + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/XuM2onMGvTI/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLAHs4IuCGN_tGSYhwQoIvUoPIubQw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/XuM2onMGvTI/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLBps253_D451BBvMPuNKAARYvaJzA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/XuM2onMGvTI/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBf_jog_9cErF_EPnB_xRa2XAeTWQ", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/XuM2onMGvTI/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDSp1WejkBmoMSefePjV9grmrIbBA", + "width": 336, + "height": 188 + } + ] + }, + "videoCount": "30", + "longBylineText": { + "runs": [ + { + "text": "Edin Oprasic", + "navigationEndpoint": { + "clickTrackingParams": "CJcBEL5OGAIiEwjVwOmw1dCJAxVWR3oFHRp4OJcyCWVuZHNjcmVlbg==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@edinoprasic3000", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC8ElEyFBG5NzF5CajjLQRjw", + "canonicalBaseUrl": "/@edinoprasic3000" + } + } + } + ] + }, + "videoCountText": { + "runs": [ + { + "text": "30" + }, + { + "text": " videos" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CJcBEL5OGAIiEwjVwOmw1dCJAxVWR3oFHRp4OJcyCWVuZHNjcmVlbpoBBQgCEPgd", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=XuM2onMGvTI&list=PLahRJXH7XPHmWNK74VzwIF2quWqdFIWvr&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "XuM2onMGvTI", + "playlistId": "PLahRJXH7XPHmWNK74VzwIF2quWqdFIWvr", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTGFoUkpYSDdYUEhtV05LNzRWendJRjJxdVdxZEZJV3Zy" + } + }, + "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&odepv=1&id=5ee336a27306bd32&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "trackingParams": "CJcBEL5OGAIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + { + "endScreenVideoRenderer": { + "videoId": "u2XCC1rKxV0", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/u2XCC1rKxV0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDd4Q0v9znAMTV6GLYt4Jq40MWX0w", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/u2XCC1rKxV0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC7nWmdF7lmzk1atF4iQzJ1O5jljA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/u2XCC1rKxV0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBWAX2YsE8EJIpbKaNdTcWpN9Acdw", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/u2XCC1rKxV0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBpNh48nrIpf9g319CFxdew6geBNg", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Faolan by Sentamusic 25,802 views 4 years ago 4 minutes, 16 seconds" + } + }, + "simpleText": "Faolan" + }, + "shortBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CJYBEL1OGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 16 seconds" + } + }, + "simpleText": "4:16" + }, + "lengthInSeconds": 256, + "navigationEndpoint": { + "clickTrackingParams": "CJYBEL1OGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJcyCWVuZHNjcmVlbkiy-pqYp9TN8V6aAQUIAhD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=u2XCC1rKxV0", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "u2XCC1rKxV0", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&odepv=1&id=bb65c20b5acac55d&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "trackingParams": "CJYBEL1OGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "25K views" + } + }, + "simpleText": "25K views" + }, + "publishedTimeText": { + "simpleText": "4 years ago" + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 16 seconds" + } + }, + "simpleText": "4:16" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ] + } + }, + { + "endScreenVideoRenderer": { + "videoId": "C_pGRMlCM3U", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGEMgZSguMA8=&rs=AOn4CLB_vkbQhRUgH75tZQVVJLFPs7K8sg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwE1CMQBEG5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGEMgZSguMA8=&rs=AOn4CLCL8lY4lMtWwwMiYNQvdIKs_UDrTw", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhDIGUoLjAP&rs=AOn4CLCf4KKCKryxgNPWYa7HAcsa9vN1Eg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhDIGUoLjAP&rs=AOn4CLBJX6P3v_qpy--7IRxCBdygxb9ZoA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Oonagh - Gäa [Offizielles Musikvideo] by AIRFORCE1.TV 14,449,259 views 10 years ago 4 minutes, 7 seconds" + } + }, + "simpleText": "Oonagh - Gäa [Offizielles Musikvideo]" + }, + "shortBylineText": { + "runs": [ + { + "text": "AIRFORCE1.TV", + "navigationEndpoint": { + "clickTrackingParams": "CJUBEL1OGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@airforce1tvmusic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCD8hHNW3x7CA4M0Z1pi5NRQ", + "canonicalBaseUrl": "/@airforce1tvmusic" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 7 seconds" + } + }, + "simpleText": "4:07" + }, + "lengthInSeconds": 247, + "navigationEndpoint": { + "clickTrackingParams": "CJUBEL1OGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJcyCWVuZHNjcmVlbkiy-pqYp9TN8V6aAQUIAhD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=C_pGRMlCM3U", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "C_pGRMlCM3U", + "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&odepv=1&id=0bfa4644c9423375&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "trackingParams": "CJUBEL1OGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "14 million views" + } + }, + "simpleText": "14M views" + }, + "publishedTimeText": { + "simpleText": "10 years ago" + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 7 seconds" + } + }, + "simpleText": "4:07" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ] + } + }, + { + "endScreenPlaylistRenderer": { + "playlistId": "RDEMd8PZIv9CPsvvEDbo_pUD4w", + "title": { + "simpleText": "Mix - Oonagh" + }, + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwEwCKgBEF5IWvKriqkDIwgBFQAAiEIYAfABAfgB_gmAAtAFigIMCAAQARhDIGUoLjAP&rs=AOn4CLAabHbPX41tQiH4WqcvsFC0upCRMw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwEwCMQBEG5IWvKriqkDIwgBFQAAiEIYAfABAfgB_gmAAtAFigIMCAAQARhDIGUoLjAP&rs=AOn4CLArKrHfjAd8l2Sk9VMHfadcJwPOXA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwExCPYBEIoBSFryq4qpAyMIARUAAIhCGAHwAQH4Af4JgALQBYoCDAgAEAEYQyBlKC4wDw==&rs=AOn4CLCIKtVi0124hh5mzXnZ5o4LDyKsIw", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwExCNACELwBSFryq4qpAyMIARUAAIhCGAHwAQH4Af4JgALQBYoCDAgAEAEYQyBlKC4wDw==&rs=AOn4CLCTRgTaXcxojFx3S_nxI82tOkSAUg", + "width": 336, + "height": 188 + } + ] + }, + "videoCountText": { + "runs": [ + { + "text": "50+ videos" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CJQBEL5OGAUiEwjVwOmw1dCJAxVWR3oFHRp4OJcyCWVuZHNjcmVlbpoBBQgCEPgd", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=SUioohuufeE&list=RDEMd8PZIv9CPsvvEDbo_pUD4w&start_radio=1&rv=XuM2onMGvTI", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "SUioohuufeE", + "playlistId": "RDEMd8PZIv9CPsvvEDbo_pUD4w", + "params": "wAEBwgMLWHVNMm9uTUd2VEk%3D", + "continuePlayback": true, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhpSREVNZDhQWkl2OUNQc3Z2RURib19wVUQ0dw%3D%3D" + } + }, + "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&odepv=1&id=4948a8a21bae7de1&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "trackingParams": "CJQBEL5OGAUiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + { + "endScreenVideoRenderer": { + "videoId": "UtP9J88Jzg0", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/UtP9J88Jzg0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCmkebFxTlBZCOUHBFkMHv0DodLFQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/UtP9J88Jzg0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBaB45t_nbn6LJxlju1AoxHmnY9uQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/UtP9J88Jzg0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBHDqaO2UY0DAb9Xq9caEH2fv0eWw", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/UtP9J88Jzg0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOdwJVkok-U7P1YrZEchZZqY_HlQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Ruinen im Sand by Sentamusic 66,406 views 4 years ago 3 minutes, 15 seconds" + } + }, + "simpleText": "Ruinen im Sand" + }, + "shortBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CJMBEL1OGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 15 seconds" + } + }, + "simpleText": "3:15" + }, + "lengthInSeconds": 195, + "navigationEndpoint": { + "clickTrackingParams": "CJMBEL1OGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJcyCWVuZHNjcmVlbkiy-pqYp9TN8V6aAQUIAhD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=UtP9J88Jzg0", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "UtP9J88Jzg0", + "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&odepv=1&id=52d3fd27cf09ce0d&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "trackingParams": "CJMBEL1OGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "66K views" + } + }, + "simpleText": "66K views" + }, + "publishedTimeText": { + "simpleText": "4 years ago" + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 15 seconds" + } + }, + "simpleText": "3:15" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ] + } + }, + { + "endScreenVideoRenderer": { + "videoId": "Vu-6Er21_bM", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/Vu-6Er21_bM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDvKXWNaaAND_YpZMz6MohvZaHcBw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/Vu-6Er21_bM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDv8l-h_t2yYfHLjVwK0bct51qeew", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/Vu-6Er21_bM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAgem0exqjycOG8zNYJT-yVHaAAcQ", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/Vu-6Er21_bM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDY7VmNj1HMKx4iaRKrgT2s5AJpqw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Mutter Erde by Story Of Dakota - Topic 34,662 views 6 years ago 3 minutes, 13 seconds" + } + }, + "simpleText": "Mutter Erde" + }, + "shortBylineText": { + "runs": [ + { + "text": "Story Of Dakota - Topic", + "navigationEndpoint": { + "clickTrackingParams": "CJIBEL1OGAciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCkYFRZTBmE1IzaKNuF6B3Uw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCkYFRZTBmE1IzaKNuF6B3Uw", + "canonicalBaseUrl": "/channel/UCkYFRZTBmE1IzaKNuF6B3Uw" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 13 seconds" + } + }, + "simpleText": "3:13" + }, + "lengthInSeconds": 193, + "navigationEndpoint": { + "clickTrackingParams": "CJIBEL1OGAciEwjVwOmw1dCJAxVWR3oFHRp4OJcyCWVuZHNjcmVlbkiy-pqYp9TN8V6aAQUIAhD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Vu-6Er21_bM", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Vu-6Er21_bM", + "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&odepv=1&id=56efba12bdb5fdb3&ip=79.205.208.149&initcwndbps=1911250&mt=1731203833&oweuc=" + } + } + } + } + }, + "trackingParams": "CJIBEL1OGAciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "34K views" + } + }, + "simpleText": "34K views" + }, + "publishedTimeText": { + "simpleText": "6 years ago" + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 13 seconds" + } + }, + "simpleText": "3:13" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ] + } + }, + { + "endScreenVideoRenderer": { + "videoId": "nLmNchGTh20", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/nLmNchGTh20/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCKWMorJR33a_BMctF8siBEPYPvSQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/nLmNchGTh20/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5lLThZr4Ob75oZ-OMv09vRmABfg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/nLmNchGTh20/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCsUr3lcUO5leD7CWZpbQrM-lrFAA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/nLmNchGTh20/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBb_bEgnelYdP-J1piDHKQK4D0lBA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Oonagh - Kuliko Jana - Eine neue Zeit by ICH FIND SCHLAGER TOLL 1,841,784 views 5 years ago 3 minutes, 34 seconds" + } + }, + "simpleText": "Oonagh - Kuliko Jana - Eine neue Zeit" + }, + "shortBylineText": { + "runs": [ + { + "text": "ICH FIND SCHLAGER TOLL", + "navigationEndpoint": { + "clickTrackingParams": "CJEBEL1OGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ICHFINDSCHLAGERTOLL", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCUJHYmJ3_1Kwfs3lqYc_Rxg", + "canonicalBaseUrl": "/@ICHFINDSCHLAGERTOLL" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 34 seconds" + } + }, + "simpleText": "3:34" + }, + "lengthInSeconds": 214, + "navigationEndpoint": { + "clickTrackingParams": "CJEBEL1OGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJcyCWVuZHNjcmVlbkiy-pqYp9TN8V6aAQUIAhD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=nLmNchGTh20", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "nLmNchGTh20", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&odepv=1&id=9cb98d721193876d&ip=79.205.208.149&initcwndbps=1911250&mt=1731203833&oweuc=" + } + } + } + } + }, + "trackingParams": "CJEBEL1OGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.8 million views" + } + }, + "simpleText": "1.8M views" + }, + "publishedTimeText": { + "simpleText": "5 years ago" + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 34 seconds" + } + }, + "simpleText": "3:34" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ] + } + }, + { + "endScreenVideoRenderer": { + "videoId": "Ctpe9kafn78", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/Ctpe9kafn78/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDJqIxVeJPDgMFXTavr1aaYBuaY6w", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/Ctpe9kafn78/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAA0kLlNFIYPBEsTy7hFt5O0l2oWA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/Ctpe9kafn78/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD8oEWo7pgiQ3OV0xQ_qSdUnBVfRg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/Ctpe9kafn78/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBxlTlqj7JCTsvoQdWyMkB_JZJ1dA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "So still mein Herz by Sentamusic 48,241 views 4 years ago 4 minutes, 19 seconds" + } + }, + "simpleText": "So still mein Herz" + }, + "shortBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CJABEL1OGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 19 seconds" + } + }, + "simpleText": "4:19" + }, + "lengthInSeconds": 259, + "navigationEndpoint": { + "clickTrackingParams": "CJABEL1OGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJcyCWVuZHNjcmVlbkiy-pqYp9TN8V6aAQUIAhD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Ctpe9kafn78", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Ctpe9kafn78", + "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&odepv=1&id=0ada5ef6469f9fbf&ip=79.205.208.149&initcwndbps=1911250&mt=1731203833&oweuc=" + } + } + } + } + }, + "trackingParams": "CJABEL1OGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "48K views" + } + }, + "simpleText": "48K views" + }, + "publishedTimeText": { + "simpleText": "4 years ago" + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 19 seconds" + } + }, + "simpleText": "4:19" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ] + } + }, + { + "endScreenVideoRenderer": { + "videoId": "sg6j-zfUF_A", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/sg6j-zfUF_A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDk_V_5woDmnABodJnokWXNeyUulg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/sg6j-zfUF_A/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCfKuKPmYhVtJC40j4Bc2VUvgRxbg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/sg6j-zfUF_A/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBie3RPQj7H5iSbYq1UfU7nEckeWw", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/sg6j-zfUF_A/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCFtDJv4zRfP6XgwasjaN_nvdfG7Q", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Eldamar by Sentamusic 11,079 views 4 years ago 3 minutes, 43 seconds" + } + }, + "simpleText": "Eldamar" + }, + "shortBylineText": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CI8BEL1OGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 43 seconds" + } + }, + "simpleText": "3:43" + }, + "lengthInSeconds": 223, + "navigationEndpoint": { + "clickTrackingParams": "CI8BEL1OGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJcyCWVuZHNjcmVlbkiy-pqYp9TN8V6aAQUIAhD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=sg6j-zfUF_A", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "sg6j-zfUF_A", + "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&odepv=1&id=b20ea3fb37d417f0&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "trackingParams": "CI8BEL1OGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "11K views" + } + }, + "simpleText": "11K views" + }, + "publishedTimeText": { + "simpleText": "4 years ago" + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 43 seconds" + } + }, + "simpleText": "3:43" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ] + } + }, + { + "endScreenVideoRenderer": { + "videoId": "mabaKE-xNUo", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/mabaKE-xNUo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBZn8xM0oEJ6MDxWRRZ7jqqDvCrAw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/mabaKE-xNUo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAcEbBlIE7XV74TLav_8wkKStT_Uw", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/mabaKE-xNUo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC9Gi4Oj8rZr8aUuTjsugX6RvvzlQ", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/mabaKE-xNUo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDfLAhbREVerzlQTKI3c6b7-xJYmw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "accessibility": { + "accessibilityData": { + "label": "Celtic Woman - Tír na nÓg (feat Oonagh) [Official Music Video] by Universal Music Deutschland 10,097,065 views 9 years ago 3 minutes, 16 seconds" + } + }, + "simpleText": "Celtic Woman - Tír na nÓg (feat Oonagh) [Official Music Video]" + }, + "shortBylineText": { + "runs": [ + { + "text": "Universal Music Deutschland", + "navigationEndpoint": { + "clickTrackingParams": "CI4BEL1OGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@UniversalMusicGermany", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCUt83CEM-kE3OQx0GqLdZtw", + "canonicalBaseUrl": "/@UniversalMusicGermany" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 16 seconds" + } + }, + "simpleText": "3:16" + }, + "lengthInSeconds": 196, + "navigationEndpoint": { + "clickTrackingParams": "CI4BEL1OGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJcyCWVuZHNjcmVlbkiy-pqYp9TN8V6aAQUIAhD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=mabaKE-xNUo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "mabaKE-xNUo", + "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&odepv=1&id=99a6da284fb1354a&ip=79.205.208.149&initcwndbps=1911250&mt=1731203833&oweuc=" + } + } + } + } + }, + "trackingParams": "CI4BEL1OGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "10 million views" + } + }, + "simpleText": "10M views" + }, + "publishedTimeText": { + "simpleText": "9 years ago" + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 16 seconds" + } + }, + "simpleText": "3:16" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ] + } + } + ], + "title": { + "simpleText": "You may also like..." + }, + "trackingParams": "CI0BEPpcIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "autoplay": { + "playerOverlayAutoplayRenderer": { + "title": { + "simpleText": "Up next" + }, + "videoTitle": { + "accessibility": { + "accessibilityData": { + "label": "Eldamar by Sentamusic 11,079 views 4 years ago 3 minutes, 43 seconds" + } + }, + "simpleText": "Eldamar" + }, + "byline": { + "runs": [ + { + "text": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CIkBEOSSASITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + } + } + ] + }, + "pauseText": { + "simpleText": "Autoplay is paused" + }, + "background": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/sg6j-zfUF_A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDk_V_5woDmnABodJnokWXNeyUulg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/sg6j-zfUF_A/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCFtDJv4zRfP6XgwasjaN_nvdfG7Q", + "width": 336, + "height": 188 + } + ] + }, + "countDownSecs": 3, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "Cancel" + }, + "accessibility": { + "label": "Cancel autoplay for this video" + }, + "trackingParams": "CIwBEOCSASITCNXA6bDV0IkDFVZHegUdGng4lw==", + "accessibilityData": { + "accessibilityData": { + "label": "Cancel autoplay for this video" + } + }, + "command": { + "clickTrackingParams": "CIwBEOCSASITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/get_survey" + } + }, + "getSurveyCommand": { + "endpoint": { + "watch": { + "hack": true + } + }, + "action": "SURVEY_TRIGGER_ACTION_AUTOPLAY_CANCEL" + } + } + } + }, + "nextButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIsBEOKSASITCNXA6bDV0IkDFVZHegUdGng4l0iy-pqYp9TN8V6aAQUIBhD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=sg6j-zfUF_A", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "sg6j-zfUF_A", + "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&odepv=1&id=b20ea3fb37d417f0&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + }, + "accessibility": { + "label": "Play next video" + }, + "trackingParams": "CIsBEOKSASITCNXA6bDV0IkDFVZHegUdGng4lw==", + "accessibilityData": { + "accessibilityData": { + "label": "Play next video" + } + } + } + }, + "trackingParams": "CIkBEOSSASITCNXA6bDV0IkDFVZHegUdGng4lw==", + "closeButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "REMOVE" + }, + "accessibility": { + "label": "Cancel autoplay for this video" + }, + "trackingParams": "CIoBEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 43 seconds" + } + }, + "simpleText": "3:43" + }, + "style": "DEFAULT" + } + } + ], + "preferImmediateRedirect": false, + "videoId": "sg6j-zfUF_A", + "publishedTimeText": { + "simpleText": "4 years ago" + }, + "webShowNewAutonavCountdown": true, + "webShowBigThumbnailEndscreen": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "11K views" + } + }, + "simpleText": "11K views" + }, + "countDownSecsForFullscreen": 3 + } + }, + "shareButton": { + "buttonRenderer": { + "style": "STYLE_OPACITY", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIcBEOWWASITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtYdU0yb25NR3ZUSaABAg%3D%3D", + "commands": [ + { + "clickTrackingParams": "CIcBEOWWASITCNXA6bDV0IkDFVZHegUdGng4lw==", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CIgBEI5iIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "tooltip": "Share", + "trackingParams": "CIcBEOWWASITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + }, + "addToMenu": { + "menuRenderer": { + "trackingParams": "CAAQg2ciEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "videoDetails": { + "playerOverlayVideoDetailsRenderer": { + "title": { + "simpleText": "Gäa" + }, + "subtitle": { + "runs": [ + { + "text": "Senta - Topic" + }, + { + "text": " • " + }, + { + "text": "28,898 views" + } + ] + } + } + }, + "autonavToggle": { + "autoplaySwitchButtonRenderer": { + "onEnabledCommand": { + "clickTrackingParams": "CIYBEPW1BCITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/account/set_setting" + } + }, + "setSettingEndpoint": { + "settingItemId": "406", + "boolValue": true, + "settingItemIdForClient": "AUTONAV_FOR_SIGN_OUT" + } + }, + "onDisabledCommand": { + "clickTrackingParams": "CIYBEPW1BCITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/account/set_setting" + } + }, + "setSettingEndpoint": { + "settingItemId": "406", + "boolValue": false, + "settingItemIdForClient": "AUTONAV_FOR_SIGN_OUT" + } + }, + "enabledAccessibilityData": { + "accessibilityData": { + "label": "Autoplay is on" + } + }, + "disabledAccessibilityData": { + "accessibilityData": { + "label": "Autoplay is off" + } + }, + "trackingParams": "CIYBEPW1BCITCNXA6bDV0IkDFVZHegUdGng4lw==", + "enabled": true + } + }, + "speedmasterUserEdu": { + "speedmasterEduViewModel": { + "bodyText": { + "content": "Playing at 2x speed" + } + } + } + } + }, + "engagementPanels": [ + { + "engagementPanelSectionListRenderer": { + "panelIdentifier": "engagement-panel-comments-section", + "header": { + "engagementPanelTitleHeaderRenderer": { + "title": { + "runs": [ + { + "text": "Comments" + } + ] + }, + "contextualInfo": { + "runs": [ + { + "text": "2" + } + ] + }, + "menu": { + "sortFilterSubMenuRenderer": { + "subMenuItems": [ + { + "title": "Top comments", + "selected": true, + "serviceEndpoint": { + "clickTrackingParams": "CIQBEOPABxgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1h1TTJvbk1HdlRJGAYyOCIRIgtYdU0yb25NR3ZUSTAAeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT", + "command": { + "clickTrackingParams": "CIQBEOPABxgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showReloadUiCommand": { + "targetId": "engagement-panel-comments-section" + } + } + } + }, + "trackingParams": "CIQBEOPABxgAIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + }, + { + "title": "Newest first", + "selected": false, + "serviceEndpoint": { + "clickTrackingParams": "CIMBEOPABxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1h1TTJvbk1HdlRJGAYyOCIRIgtYdU0yb25NR3ZUSTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT", + "command": { + "clickTrackingParams": "CIMBEOPABxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "showReloadUiCommand": { + "targetId": "engagement-panel-comments-section" + } + } + } + }, + "trackingParams": "CIMBEOPABxgBIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + ], + "icon": { + "iconType": "SORT" + }, + "accessibility": { + "accessibilityData": { + "label": "Sort comments" + } + }, + "trackingParams": "CIIBEIHaBCITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + }, + "visibilityButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "icon": { + "iconType": "CLOSE" + }, + "trackingParams": "CIEBEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "accessibilityData": { + "accessibilityData": { + "label": "Close" + } + }, + "command": { + "clickTrackingParams": "CIEBEPBbIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "hideEngagementPanelEndpoint": { + "panelIdentifier": "engagement-panel-comments-section" + } + } + } + }, + "trackingParams": "CH4Q040EGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CIABELsvGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1h1TTJvbk1HdlRJGAYyOCIRIgtYdU0yb25NR3ZUSTAAeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CIABELsvGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "sectionIdentifier": "comment-item-section", + "targetId": "engagement-panel-comments-section" + } + } + ], + "trackingParams": "CH8Qui8iEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "veType": 76278, + "targetId": "engagement-panel-comments-section", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN", + "loggingDirectives": { + "trackingParams": "CH4Q040EGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "engagementPanelSectionListRenderer": { + "content": { + "adsEngagementPanelContentRenderer": { + "hack": true + } + }, + "targetId": "engagement-panel-ads", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN", + "loggingDirectives": { + "trackingParams": "CH0Q040EGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "engagementPanelSectionListRenderer": { + "panelIdentifier": "engagement-panel-structured-description", + "header": { + "engagementPanelTitleHeaderRenderer": { + "title": { + "simpleText": "Description" + }, + "visibilityButton": { + "buttonRenderer": { + "icon": { + "iconType": "CLOSE" + }, + "trackingParams": "CHwQ8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "accessibilityData": { + "label": "Close" + } + }, + "command": { + "clickTrackingParams": "CHwQ8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CHwQ8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "changeEngagementPanelVisibilityAction": { + "targetId": "engagement-panel-structured-description", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN" + } + }, + { + "clickTrackingParams": "CHwQ8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "updateToggleButtonStateCommand": { + "toggled": false, + "buttonId": "TOGGLE_BUTTON_ID_TYPE_STRUCTURED_DESCRIPTION" + } + } + ] + } + } + } + }, + "trackingParams": "CA0Q040EGAIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "content": { + "structuredDescriptionContentRenderer": { + "items": [ + { + "videoDescriptionHeaderRenderer": { + "title": { + "runs": [ + { + "text": "Gäa" + } + ] + }, + "channel": { + "simpleText": "Sentamusic" + }, + "views": { + "simpleText": "28,898 views" + }, + "publishDate": { + "simpleText": "Aug 6, 2020" + }, + "factoid": [ + { + "factoidRenderer": { + "value": { + "simpleText": "213" + }, + "label": { + "simpleText": "Likes" + }, + "accessibilityText": "213 likes" + } + }, + { + "viewCountFactoidRenderer": { + "viewCountEntityKey": "EgtYdU0yb25NR3ZUSSDCASgB", + "factoid": { + "factoidRenderer": { + "value": { + "simpleText": "28,898" + }, + "label": { + "simpleText": "Views" + }, + "accessibilityText": "28,898 views" + } + }, + "viewCountType": "VIEW_COUNT_FACTOID_TYPE_TOTAL_VIEWS" + } + }, + { + "factoidRenderer": { + "value": { + "simpleText": "2020" + }, + "label": { + "simpleText": "Aug 6" + }, + "accessibilityText": "Aug 6, 2020" + } + } + ], + "channelNavigationEndpoint": { + "clickTrackingParams": "CA0Q040EGAIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UC_vmjW5e1xEHhYjY2a0kK1A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UC_vmjW5e1xEHhYjY2a0kK1A" + } + }, + "channelThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj" + } + ] + } + } + }, + { + "expandableVideoDescriptionBodyRenderer": { + "showMoreText": { + "accessibility": { + "accessibilityData": { + "label": "Show more" + } + }, + "simpleText": "...more" + }, + "showLessText": { + "simpleText": "Show less" + }, + "attributedDescriptionBodyText": { + "content": "Provided to YouTube by Universal Music Group\n\nGäa · Oonagh\n\nBest Of\n\n℗ An Airforce1 Records / We Love Music recording; ℗ 2014 Universal Music GmbH\n\nReleased on: 2020-08-07\n\nProducer, Associated Performer, Background Vocalist: Hardy Krech\nProducer: Mark Nissen\nAssociated Performer, Background Vocalist: Andreas Fahnert\nAssociated Performer, Background Vocalist: Velile Mchunu\nAssociated Performer, Background Vocalist: Billy King\nAssociated Performer, Background Vocalist: Alex Prince\nAssociated Performer, Flute: Sandro Friedrich\nProgrammer: Hartmut Krech\nEditor: Severin Zahler\nComposer Lyricist: Hartmut Krech\nComposer Lyricist: Mark Nissen\nAuthor: Lukas Hainer\nAuthor: Michael Boden\n\nAuto-generated by YouTube.", + "styleRuns": [ + { + "startIndex": 0, + "length": 727, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + }, + "fontFamilyName": "Roboto" + } + ] + }, + "headerRuns": [ + { + "startIndex": 0, + "length": 727, + "headerMapping": "ATTRIBUTED_STRING_HEADER_MAPPING_UNSPECIFIED" + } + ] + } + }, + { + "horizontalCardListRenderer": { + "cards": [ + { + "videoAttributeViewModel": { + "image": { + "sources": [ + { + "url": "https://lh3.googleusercontent.com/51Ee0uFa5llisVq_-qrCKT9iznOXDLi4M0jAN9lQhqDP0FwF8U5hOz3FczkkjPW42uncvmaUBFuosCNv" + } + ] + }, + "imageStyle": "VIDEO_ATTRIBUTE_IMAGE_STYLE_SQUARE", + "title": "Gäa", + "subtitle": "Oonagh", + "secondarySubtitle": { + "content": "Best Of", + "commandRuns": [ + { + "startIndex": 0, + "length": 7, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHkQyMoHGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=OLAK5uy_nWkGoVhCfpvdc1S4mzQaueTFrNb2iyizI&playnext=1&index=1", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nWkGoVhCfpvdc1S4mzQaueTFrNb2iyizI" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 7, + "weightLabel": "FONT_WEIGHT_NORMAL" + } + ] + }, + "orientation": "VIDEO_ATTRIBUTE_ORIENTATION_HORIZONTAL", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHkQyMoHGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=C_pGRMlCM3U", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "C_pGRMlCM3U", + "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&odepv=1&id=0bfa4644c9423375&ip=79.205.208.149&initcwndbps=1973750&mt=1731203833&oweuc=" + } + } + } + } + } + }, + "sizingRule": "VIDEO_ATTRIBUTE_SIZING_RULE_RESPONSIVE", + "overflowMenuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CHkQyMoHGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "confirmDialogEndpoint": { + "content": { + "confirmDialogRenderer": { + "title": { + "runs": [ + { + "text": "Song credits" + } + ] + }, + "trackingParams": "CHoQxjgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "dialogMessages": [ + {} + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "OK" + } + ] + }, + "trackingParams": "CHsQ8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "accessibilityData": { + "label": "OK" + } + } + } + }, + "primaryIsCancel": false + } + } + } + } + }, + "overflowMenuA11yLabel": "More actions", + "loggingDirectives": { + "trackingParams": "CHkQyMoHGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + } + ], + "trackingParams": "CHYQkVoYAiITCNXA6bDV0IkDFVZHegUdGng4lw==", + "header": { + "richListHeaderRenderer": { + "title": { + "simpleText": "Music" + }, + "subtitle": { + "simpleText": "1 songs" + }, + "trackingParams": "CHgQraoBIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "style": { + "type": "HORIZONTAL_CARD_LIST_STYLE_TYPE_ENGAGEMENT_PANEL_SECTION" + }, + "footerButton": { + "buttonViewModel": { + "iconName": "MUSIC", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHcQycoHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UC-9-kyTW8ZkZNDHQJ6FgpwQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC-9-kyTW8ZkZNDHQJ6FgpwQ" + } + } + }, + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "trackingParams": "CHcQycoHIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "type": "BUTTON_VIEW_MODEL_TYPE_OUTLINE", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "titleFormatted": { + "content": "Music" + } + } + } + } + }, + { + "reelShelfRenderer": { + "title": { + "runs": [ + { + "text": "Shorts remixing this video" + } + ] + }, + "items": [ + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-smKyH09uyZc", + "accessibilityText": "Лицо почти дорисовала 💔, 2.7K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/smKyH09uyZc/hq720.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLCy12-bhzUwV3mG3WuWQnJP65KjfA", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHIQh_YEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/smKyH09uyZc", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "smKyH09uyZc", + "playerParams": "8AEByANFuAQfogYVAWvpgwg_MzzO3IMew66ToUh1zvQokAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/smKyH09uyZc/frame0.jpg", + "width": 720, + "height": 1280 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CHUQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EAAYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CHIQh_YEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CHMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CHMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "smKyH09uyZc", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "smKyH09uyZc" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "smKyH09uyZc" + ] + } + }, + { + "clickTrackingParams": "CHMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CHQQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHIQh_YEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "smKyH09uyZc" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Лицо почти дорисовала 💔" + }, + "secondaryText": { + "content": "2.7K views" + } + }, + "loggingDirectives": { + "trackingParams": "CHIQh_YEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-kmjlgUTdZ28", + "accessibilityText": "Зарисовки по Леди Баг - страничка, посвященная Адриану Агресту 🤍, 2.5K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/kmjlgUTdZ28/hq720.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDYIwVeRScllUXJpoxOnZ3LjIGK1w", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CG4Qh_YEGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/kmjlgUTdZ28", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "kmjlgUTdZ28", + "playerParams": "8AEByANFuAQfogYVAWvpgwhigHm9FcYYXmKKhGOLkJo7kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/kmjlgUTdZ28/frame0.jpg", + "width": 720, + "height": 1280 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CHEQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EAEYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CG4Qh_YEGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CG8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CG8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CG8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "kmjlgUTdZ28", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CG8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "kmjlgUTdZ28" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "kmjlgUTdZ28" + ] + } + }, + { + "clickTrackingParams": "CG8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CHAQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CG4Qh_YEGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "kmjlgUTdZ28" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 1, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Зарисовки по Леди Баг - страничка, посвященная Адриану Агресту 🤍" + }, + "secondaryText": { + "content": "2.5K views" + } + }, + "loggingDirectives": { + "trackingParams": "CG4Qh_YEGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-ecTprvZmz7g", + "accessibilityText": "🔥@grufterella #makeupart #goth #gothic #alternativegirl #makeup #altgirl #transition, 1.3K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/ecTprvZmz7g/hq720.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLA7xJVtfUAsgF7XsCNLxrNN2k-dnw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGoQh_YEGAIiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/ecTprvZmz7g", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "ecTprvZmz7g", + "playerParams": "8AEByANFuAQfogYVAWvpgwia5IYNU3CwikhbA6InvcBHkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/ecTprvZmz7g/frame0.jpg", + "width": 720, + "height": 1280 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CG0QsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EAIYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CGoQh_YEGAIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CGsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CGsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "ecTprvZmz7g", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "ecTprvZmz7g" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "ecTprvZmz7g" + ] + } + }, + { + "clickTrackingParams": "CGsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CGwQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGoQh_YEGAIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "ecTprvZmz7g" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 2, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "🔥@grufterella #makeupart #goth #gothic #alternativegirl #makeup #altgirl #transition" + }, + "secondaryText": { + "content": "1.3K views" + } + }, + "loggingDirectives": { + "trackingParams": "CGoQh_YEGAIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-dDASmKsY228", + "accessibilityText": "#goth #gothic #makeupart #alternativegirl, 787 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/dDASmKsY228/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAKO2z9GCUlnH6o2GHc7tVRdoqs_Q", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGYQh_YEGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/dDASmKsY228", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "dDASmKsY228", + "playerParams": "8AEByANFuAQfogYVAWvpgwi2aJTs_xVQHvLdYrGzeftrkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/dDASmKsY228/frame0.jpg", + "width": 720, + "height": 1280 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CGkQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EAMYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CGYQh_YEGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CGcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CGcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "dDASmKsY228", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "dDASmKsY228" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "dDASmKsY228" + ] + } + }, + { + "clickTrackingParams": "CGcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CGgQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGYQh_YEGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "dDASmKsY228" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 3, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "#goth #gothic #makeupart #alternativegirl" + }, + "secondaryText": { + "content": "787 views" + } + }, + "loggingDirectives": { + "trackingParams": "CGYQh_YEGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-BtAjaXpKPv8", + "accessibilityText": "here it is, the beloved Lithuanian city by the sea 17  #travel #palanga #music #walking, 439 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/BtAjaXpKPv8/oardefault.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDkZPUmpoOsB35sT3PU_cvvQFXuAw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGIQh_YEGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/BtAjaXpKPv8", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "BtAjaXpKPv8", + "playerParams": "8AEByANFuAQfogYVAWvpgwiKib7LRTybCgdDa4Oc3Y14kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/BtAjaXpKPv8/frame0.jpg", + "width": 608, + "height": 1080 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CGUQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EAQYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CGIQh_YEGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CGMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CGMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "BtAjaXpKPv8", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "BtAjaXpKPv8" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "BtAjaXpKPv8" + ] + } + }, + { + "clickTrackingParams": "CGMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CGQQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGIQh_YEGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "BtAjaXpKPv8" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 4, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "here it is, the beloved Lithuanian city by the sea 17  #travel #palanga #music #walking" + }, + "secondaryText": { + "content": "439 views" + } + }, + "loggingDirectives": { + "trackingParams": "CGIQh_YEGAQiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-17a0ZmAfJEw", + "accessibilityText": "🌍Muttererde #benensokreativ, 419 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/17a0ZmAfJEw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCx6HUj3zGKfdkGQA_dMpDsB6zq6w", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CF4Qh_YEGAUiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/17a0ZmAfJEw", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "17a0ZmAfJEw", + "playerParams": "8AEByANFuAQfogYVAWvpgwjokbNb2daLgp8R-zvpkkFxkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/17a0ZmAfJEw/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CGEQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EAUYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CF4Qh_YEGAUiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CF8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CF8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CF8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "17a0ZmAfJEw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CF8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "17a0ZmAfJEw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "17a0ZmAfJEw" + ] + } + }, + { + "clickTrackingParams": "CF8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CGAQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CF4Qh_YEGAUiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "17a0ZmAfJEw" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 5, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "🌍Muttererde #benensokreativ" + }, + "secondaryText": { + "content": "419 views" + } + }, + "loggingDirectives": { + "trackingParams": "CF4Qh_YEGAUiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-UgEMiV0VsdU", + "accessibilityText": "Halloween MakeUp - Gaia Mother Earth #makeup #shorts #makeupartist #gaia, 328 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/UgEMiV0VsdU/hq720.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLAOdvprqd7nWtcP_lNmrgFN9iVDuw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFoQh_YEGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/UgEMiV0VsdU", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "UgEMiV0VsdU", + "playerParams": "8AEByANFuAQfogYVAWvpgwhWP6wmYY1ftLXkMn4dGWh5kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/UgEMiV0VsdU/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CF0QsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EAYYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CFoQh_YEGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CFsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CFsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "UgEMiV0VsdU", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "UgEMiV0VsdU" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "UgEMiV0VsdU" + ] + } + }, + { + "clickTrackingParams": "CFsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CFwQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFoQh_YEGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "UgEMiV0VsdU" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 6, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Halloween MakeUp - Gaia Mother Earth #makeup #shorts #makeupartist #gaia" + }, + "secondaryText": { + "content": "328 views" + } + }, + "loggingDirectives": { + "trackingParams": "CFoQh_YEGAYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-EI294xLF7og", + "accessibilityText": "Onda: Mário, 257 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/EI294xLF7og/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAkBs_27vd_ZZdAuVZxGcPJpOP9DQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFYQh_YEGAciEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/EI294xLF7og", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "EI294xLF7og", + "playerParams": "8AEByANFuAQfogYVAWvpgwjQWW1SZDuyhR2hhWGdnYMckAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/EI294xLF7og/frame0.jpg", + "width": 720, + "height": 1280 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CFkQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EAcYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CFYQh_YEGAciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CFcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CFcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "EI294xLF7og", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "EI294xLF7og" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "EI294xLF7og" + ] + } + }, + { + "clickTrackingParams": "CFcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CFgQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFYQh_YEGAciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "EI294xLF7og" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 7, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Onda: Mário" + }, + "secondaryText": { + "content": "257 views" + } + }, + "loggingDirectives": { + "trackingParams": "CFYQh_YEGAciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-5BT6Uh1i3so", + "accessibilityText": "Vulcanalia en Segeda, 223 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/5BT6Uh1i3so/hq720_2.jpg?sqp=-oaymwEdCOADEOADSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLCVwpIMwuzfrD5GpQ7sobosMhJU5Q", + "width": 480, + "height": 480 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFIQh_YEGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/5BT6Uh1i3so", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "5BT6Uh1i3so", + "playerParams": "8AEByANFuAQfogYVAWvpgwgJFmAVZuUZwh7DcSVQWFr-kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/5BT6Uh1i3so/frame0.jpg", + "width": 480, + "height": 480 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CFUQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EAgYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CFIQh_YEGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CFMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CFMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "5BT6Uh1i3so", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "5BT6Uh1i3so" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "5BT6Uh1i3so" + ] + } + }, + { + "clickTrackingParams": "CFMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CFQQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFIQh_YEGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "5BT6Uh1i3so" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 8, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Vulcanalia en Segeda" + }, + "secondaryText": { + "content": "223 views" + } + }, + "loggingDirectives": { + "trackingParams": "CFIQh_YEGAgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-n_GZu1PZGK8", + "accessibilityText": "Fire 🖤 @livana.celestria #gothgirl #alternativegirl #makeup #fantasy #magic, 171 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/n_GZu1PZGK8/oardefault.jpg?sqp=-oaymwEdCMAEENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCsn3IVAp3lQMdgKDMikPu5t24K5A", + "width": 576, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CE4Qh_YEGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/n_GZu1PZGK8", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "n_GZu1PZGK8", + "playerParams": "8AEByANFuAQfogYVAWvpgwjxfmGKPRsK9sJbRqUbqflQkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/n_GZu1PZGK8/frame0.jpg", + "width": 1080, + "height": 1350 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CFEQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EAkYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CE4Qh_YEGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CE8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CE8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CE8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "n_GZu1PZGK8", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CE8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "n_GZu1PZGK8" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "n_GZu1PZGK8" + ] + } + }, + { + "clickTrackingParams": "CE8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CFAQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CE4Qh_YEGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "n_GZu1PZGK8" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 9, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Fire 🖤 @livana.celestria #gothgirl #alternativegirl #makeup #fantasy #magic" + }, + "secondaryText": { + "content": "171 views" + } + }, + "loggingDirectives": { + "trackingParams": "CE4Qh_YEGAkiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-OpmEcAgTxLo", + "accessibilityText": "Gäa - Oonagh, 130 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/OpmEcAgTxLo/hq720_2.jpg?sqp=-oaymwEdCJYDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDE0YhqY-oR2qZdMPYNSCvRmIJ3bg", + "width": 406, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEoQh_YEGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/OpmEcAgTxLo", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "OpmEcAgTxLo", + "playerParams": "8AEByANFuAQfogYVAWvpgwiZrjZQyJE4js3r3LWRkbnrkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/OpmEcAgTxLo/frame0.jpg", + "width": 406, + "height": 720 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CE0QsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EAoYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CEoQh_YEGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "OpmEcAgTxLo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "OpmEcAgTxLo" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "OpmEcAgTxLo" + ] + } + }, + { + "clickTrackingParams": "CEsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CEwQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEoQh_YEGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "OpmEcAgTxLo" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 10, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Gäa - Oonagh" + }, + "secondaryText": { + "content": "130 views" + } + }, + "loggingDirectives": { + "trackingParams": "CEoQh_YEGAoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-3uxLget5MkY", + "accessibilityText": "Kulinarische Hellsichtigkeit #fruktarisch #vegan #vegetarisch #liebe #love #milosc, 86 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/3uxLget5MkY/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLC11JZWjI6ZZaz2RMgkAI3S9hdBOg", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEYQh_YEGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/3uxLget5MkY", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "3uxLget5MkY", + "playerParams": "8AEByANFuAQfogYVAWvpgwgoEqp_Izc5l8WyVsX_WIZ5kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/3uxLget5MkY/frame0.jpg", + "width": 720, + "height": 1280 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CEkQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EAsYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CEYQh_YEGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "3uxLget5MkY", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "3uxLget5MkY" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "3uxLget5MkY" + ] + } + }, + { + "clickTrackingParams": "CEcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CEgQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEYQh_YEGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "3uxLget5MkY" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 11, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Kulinarische Hellsichtigkeit #fruktarisch #vegan #vegetarisch #liebe #love #milosc" + }, + "secondaryText": { + "content": "86 views" + } + }, + "loggingDirectives": { + "trackingParams": "CEYQh_YEGAsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-0Iu6Xnn7_UI", + "accessibilityText": "terra., 82 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/0Iu6Xnn7_UI/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLB9s5rMYO_i91ZLV03BDKTHDnH_sA", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEIQh_YEGAwiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/0Iu6Xnn7_UI", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "0Iu6Xnn7_UI", + "playerParams": "8AEByANFuAQfogYVAWvpgwhqCoD_hmWt6Reuiyv5vgvYkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/0Iu6Xnn7_UI/frame0.jpg", + "width": 720, + "height": 1280 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CEUQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EAwYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CEIQh_YEGAwiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "0Iu6Xnn7_UI", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "0Iu6Xnn7_UI" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "0Iu6Xnn7_UI" + ] + } + }, + { + "clickTrackingParams": "CEMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CEQQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEIQh_YEGAwiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "0Iu6Xnn7_UI" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 12, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "terra." + }, + "secondaryText": { + "content": "82 views" + } + }, + "loggingDirectives": { + "trackingParams": "CEIQh_YEGAwiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-OtLO5zolxWs", + "accessibilityText": "ate amanhã., 75 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/OtLO5zolxWs/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCD5Pxax92vpWBbxcQzpIg6zAchlA", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CD4Qh_YEGA0iEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/OtLO5zolxWs", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "OtLO5zolxWs", + "playerParams": "8AEByANFuAQfogYVAWvpgwhXHposoUywy7wtkdrCvmCekAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/OtLO5zolxWs/frame0.jpg", + "width": 720, + "height": 1280 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CEEQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EA0YH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CD4Qh_YEGA0iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CD8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CD8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CD8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "OtLO5zolxWs", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CD8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "OtLO5zolxWs" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "OtLO5zolxWs" + ] + } + }, + { + "clickTrackingParams": "CD8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CEAQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CD4Qh_YEGA0iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "OtLO5zolxWs" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 13, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "ate amanhã." + }, + "secondaryText": { + "content": "75 views" + } + }, + "loggingDirectives": { + "trackingParams": "CD4Qh_YEGA0iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-oxDKLIcjya4", + "accessibilityText": "Meine Eule mit Buntstiften 🦉 Frohe Weihnachten für dich 🎄#sketchbookspread #skizzenbuch #owlart, 63 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/oxDKLIcjya4/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAYn2EpytQE0ijj5ZqviEENfMRftg", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDoQh_YEGA4iEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/oxDKLIcjya4", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "oxDKLIcjya4", + "playerParams": "8AEByANFuAQfogYVAWvpgwhP6QnH6aiGo0ewgTFmbsKUkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/oxDKLIcjya4/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CD0QsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EA4YH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CDoQh_YEGA4iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "oxDKLIcjya4", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "oxDKLIcjya4" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "oxDKLIcjya4" + ] + } + }, + { + "clickTrackingParams": "CDsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CDwQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDoQh_YEGA4iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "oxDKLIcjya4" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 14, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Meine Eule mit Buntstiften 🦉 Frohe Weihnachten für dich 🎄#sketchbookspread #skizzenbuch #owlart" + }, + "secondaryText": { + "content": "63 views" + } + }, + "loggingDirectives": { + "trackingParams": "CDoQh_YEGA4iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-E-NvMmxEavU", + "accessibilityText": "25. August 2023, 59 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/E-NvMmxEavU/oar2.jpg?sqp=-oaymwEdCIAEENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAPW3k-Uknfmfx8YiRJWKntvrqvcw", + "width": 512, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDYQh_YEGA8iEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/E-NvMmxEavU", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "E-NvMmxEavU", + "playerParams": "8AEByANFuAQfogYVAWvpgwiDyW5N3Og4zyII1i1x9d2EkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/E-NvMmxEavU/frame0.jpg", + "width": 720, + "height": 1012 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CDkQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EA8YH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CDYQh_YEGA8iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "E-NvMmxEavU", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "E-NvMmxEavU" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "E-NvMmxEavU" + ] + } + }, + { + "clickTrackingParams": "CDcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CDgQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDYQh_YEGA8iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "E-NvMmxEavU" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 15, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "25. August 2023" + }, + "secondaryText": { + "content": "59 views" + } + }, + "loggingDirectives": { + "trackingParams": "CDYQh_YEGA8iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-HkI9oBSCd_E", + "accessibilityText": "happy birthday brox, 54 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/HkI9oBSCd_E/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDu5gm8SUCozsx2sAlL_J7C7RZ6og", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDIQh_YEGBAiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/HkI9oBSCd_E", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "HkI9oBSCd_E", + "playerParams": "8AEByANFuAQfogYVAWvpgwh1Mw0nhnzgEpsdMEh-RLdxkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/HkI9oBSCd_E/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CDUQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EBAYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CDIQh_YEGBAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "HkI9oBSCd_E", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "HkI9oBSCd_E" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "HkI9oBSCd_E" + ] + } + }, + { + "clickTrackingParams": "CDMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CDQQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDIQh_YEGBAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "HkI9oBSCd_E" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 16, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "happy birthday brox" + }, + "secondaryText": { + "content": "54 views" + } + }, + "loggingDirectives": { + "trackingParams": "CDIQh_YEGBAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-PN43RKEBfLQ", + "accessibilityText": "Kulinarische Hellsichtigkeit- #bohnen #fruktarisch #liebe #vegan #vegetarisch #milosc #love #oonagh, 42 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/PN43RKEBfLQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCTPQgFr_zT_92Wp5nQbRxfX-R5-A", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CC4Qh_YEGBEiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/PN43RKEBfLQ", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "PN43RKEBfLQ", + "playerParams": "8AEByANFuAQfogYVAWvpgwhMTCJrdwV5cambHVL9s2ODkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/PN43RKEBfLQ/frame0.jpg", + "width": 720, + "height": 1280 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CDEQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EBEYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CC4Qh_YEGBEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CC8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CC8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CC8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "PN43RKEBfLQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CC8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "PN43RKEBfLQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "PN43RKEBfLQ" + ] + } + }, + { + "clickTrackingParams": "CC8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CDAQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CC4Qh_YEGBEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "PN43RKEBfLQ" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 17, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Kulinarische Hellsichtigkeit- #bohnen #fruktarisch #liebe #vegan #vegetarisch #milosc #love #oonagh" + }, + "secondaryText": { + "content": "42 views" + } + }, + "loggingDirectives": { + "trackingParams": "CC4Qh_YEGBEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-kQRQNdOmBHw", + "accessibilityText": "R.Wardenburg Gärtnerei zum Anfassen!, 40 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/kQRQNdOmBHw/hq720_2.jpg?sqp=-oaymwEdCI4CEOADSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLB-KwsQWcKlOcCBIQEk7okf4FQ8gg", + "width": 270, + "height": 480 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCoQh_YEGBIiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/kQRQNdOmBHw", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "kQRQNdOmBHw", + "playerParams": "8AEByANFuAQfogYVAWvpgwitIZ1yZDhNDy2BOr89xDpDkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/kQRQNdOmBHw/frame0.jpg", + "width": 270, + "height": 480 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CC0QsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EBIYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CCoQh_YEGBIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CCsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "kQRQNdOmBHw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "kQRQNdOmBHw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "kQRQNdOmBHw" + ] + } + }, + { + "clickTrackingParams": "CCsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CCwQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCoQh_YEGBIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "kQRQNdOmBHw" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 18, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "R.Wardenburg Gärtnerei zum Anfassen!" + }, + "secondaryText": { + "content": "40 views" + } + }, + "loggingDirectives": { + "trackingParams": "CCoQh_YEGBIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-48wglA4mjdY", + "accessibilityText": "•Dein Mystic Moment •, 36 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/48wglA4mjdY/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLCHSTAnZVIj77OV33AV-OoaLhEmzA", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCYQh_YEGBMiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/48wglA4mjdY", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "48wglA4mjdY", + "playerParams": "8AEByANFuAQfogYVAWvpgwits2jsmJuyJCWO6iovZpDbkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/48wglA4mjdY/frame0.jpg", + "width": 720, + "height": 1280 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CCkQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EBMYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CCYQh_YEGBMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CCcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "48wglA4mjdY", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "48wglA4mjdY" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "48wglA4mjdY" + ] + } + }, + { + "clickTrackingParams": "CCcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CCgQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCYQh_YEGBMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "48wglA4mjdY" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 19, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "•Dein Mystic Moment •" + }, + "secondaryText": { + "content": "36 views" + } + }, + "loggingDirectives": { + "trackingParams": "CCYQh_YEGBMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-zFVrtBMMg_w", + "accessibilityText": "9. Februar 2022, 20 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/zFVrtBMMg_w/hq720_2.jpg?sqp=-oaymwEdCJYDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDrhtxNgBzCdyNKPdZrk0HUTfgn7g", + "width": 406, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCIQh_YEGBQiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/zFVrtBMMg_w", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "zFVrtBMMg_w", + "playerParams": "8AEByANFuAQfogYVAWvpgwhFr5rD5pCzBMLM7EGzC0JykAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/zFVrtBMMg_w/frame0.jpg", + "width": 406, + "height": 720 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CCUQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EBQYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CCIQh_YEGBQiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CCMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "zFVrtBMMg_w", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "zFVrtBMMg_w" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "zFVrtBMMg_w" + ] + } + }, + { + "clickTrackingParams": "CCMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CCQQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCIQh_YEGBQiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "zFVrtBMMg_w" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 20, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "9. Februar 2022" + }, + "secondaryText": { + "content": "20 views" + } + }, + "loggingDirectives": { + "trackingParams": "CCIQh_YEGBQiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-LZRpvolSQU8", + "accessibilityText": "Dachenfells(Bonn). Alemania👌👌👌😇😇😇😇, 16 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/LZRpvolSQU8/hq720_2.jpg?sqp=-oaymwEdCJYDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLD-oXLvpl07QTIUW4BIcK2s21sKkw", + "width": 406, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CB4Qh_YEGBUiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/LZRpvolSQU8", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "LZRpvolSQU8", + "playerParams": "8AEByANFuAQfogYVAWvpgwis5fEJxLRIdJWK1BO8u0EHkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/LZRpvolSQU8/frame0.jpg", + "width": 406, + "height": 720 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CCEQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EBUYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CB4Qh_YEGBUiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CB8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CB8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "LZRpvolSQU8", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CB8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "LZRpvolSQU8" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "LZRpvolSQU8" + ] + } + }, + { + "clickTrackingParams": "CB8Q_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CCAQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CB4Qh_YEGBUiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "LZRpvolSQU8" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 21, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Dachenfells(Bonn). Alemania👌👌👌😇😇😇😇" + }, + "secondaryText": { + "content": "16 views" + } + }, + "loggingDirectives": { + "trackingParams": "CB4Qh_YEGBUiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-ZJhrmtkx8as", + "accessibilityText": "13 March 2023, 9 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/ZJhrmtkx8as/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLApNHE_ehsjbBYeXx6UTSMtOYPJrg", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBoQh_YEGBYiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/ZJhrmtkx8as", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "ZJhrmtkx8as", + "playerParams": "8AEByANFuAQfogYVAWvpgwg_1CiMLZjl6-ulnAs8T5xekAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/ZJhrmtkx8as/frame0.jpg", + "width": 720, + "height": 1280 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CB0QsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EBYYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CBoQh_YEGBYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CBsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "ZJhrmtkx8as", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CBsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "ZJhrmtkx8as" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "ZJhrmtkx8as" + ] + } + }, + { + "clickTrackingParams": "CBsQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CBwQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBoQh_YEGBYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "ZJhrmtkx8as" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 22, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "13 March 2023" + }, + "secondaryText": { + "content": "9 views" + } + }, + "loggingDirectives": { + "trackingParams": "CBoQh_YEGBYiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-tUOVo1zX1-E", + "accessibilityText": "4 April 2024, 8 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/tUOVo1zX1-E/oar2.jpg?sqp=-oaymwEdCMQCENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAsXu-7LWfHbOBiGrSlPQvaoSZiiA", + "width": 324, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBYQh_YEGBciEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/tUOVo1zX1-E", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "tUOVo1zX1-E", + "playerParams": "8AEByANFuAQfogYVAWvpgwiIoxt34EzJ68DZzrtbOF9BkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/tUOVo1zX1-E/frame0.jpg", + "width": 576, + "height": 1280 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CBkQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EBcYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CBYQh_YEGBciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CBcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "tUOVo1zX1-E", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CBcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "tUOVo1zX1-E" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "tUOVo1zX1-E" + ] + } + }, + { + "clickTrackingParams": "CBcQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CBgQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBYQh_YEGBciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "tUOVo1zX1-E" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 23, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "4 April 2024" + }, + "secondaryText": { + "content": "8 views" + } + }, + "loggingDirectives": { + "trackingParams": "CBYQh_YEGBciEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-gBdZc7d7fz8", + "accessibilityText": "Gäa, 6 views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/gBdZc7d7fz8/oar2.jpg?sqp=-oaymwEdCJIDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAnb8npWaGFtTUOEy7ScDEJzzGFdA", + "width": 402, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBIQh_YEGBgiEwjVwOmw1dCJAxVWR3oFHRp4OJeaAQUIRRD4HQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/gBdZc7d7fz8", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "gBdZc7d7fz8", + "playerParams": "8AEByANFuAQfogYVAWvpgwgAGeyHYqyo5i9hQD4Z9JDTkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/gBdZc7d7fz8/frame0.jpg", + "width": 572, + "height": 1024 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CBUQsLUEIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CB8wAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "KvsCCg0KC3NtS3lIMDl1eVpjCg0KC2ttamxnVVRkWjI4Cg0KC2VjVHBydlptejdnCg0KC2REQVNtS3NZMjI4Cg0KC0J0QWphWHBLUHY4Cg0KCzE3YTBabUFmSkV3Cg0KC1VnRU1pVjBWc2RVCg0KC0VJMjk0eExGN29nCg0KCzVCVDZVaDFpM3NvCg0KC25fR1p1MVBaR0s4Cg0KC09wbUVjQWdUeExvCg0KCzN1eExnZXQ1TWtZCg0KCzBJdTZYbm43X1VJCg0KC090TE81em9seFdzCg0KC294REtMSWNqeWE0Cg0KC0UtTnZNbXhFYXZVCg0KC0hrSTlvQlNDZF9FCg0KC1BONDNSS0VCZkxRCg0KC2tRUlFOZE9tQkh3Cg0KCzQ4d2dsQTRtamRZCg0KC3pGVnJ0Qk1NZ193Cg0KC0xaUnB2b2xTUVU4Cg0KC1pKaHJtdGt4OGFzCg0KC3RVT1ZvMXpYMS1FCg0KC2dCZFpjN2Q3Zno4EBgYH1AZaAGKAREaDwoNCgthV3hXYjZpQkNfc5ABBQ%3D%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAw=" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CBIQh_YEGBgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Add to queue" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CBMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "addToPlaylistCommand": { + "openMiniplayer": false, + "openListPanel": true, + "videoId": "gBdZc7d7fz8", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CBMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "gBdZc7d7fz8" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "gBdZc7d7fz8" + ] + } + }, + { + "clickTrackingParams": "CBMQ_pgEGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "simpleText": "Added to queue" + }, + "trackingParams": "CBQQuWoiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "popupType": "TOAST" + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBIQh_YEGBgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "gBdZc7d7fz8" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 24, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Gäa" + }, + "secondaryText": { + "content": "6 views" + } + }, + "loggingDirectives": { + "trackingParams": "CBIQh_YEGBgiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + } + ], + "trackingParams": "CBEQudQIGAMiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + { + "videoDescriptionInfocardsSectionRenderer": { + "sectionTitle": { + "simpleText": "Sentamusic" + }, + "creatorVideosButton": { + "buttonRenderer": { + "style": "STYLE_INACTIVE_OUTLINE", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "Videos" + }, + "icon": { + "iconType": "MY_VIDEOS" + }, + "trackingParams": "CBAQ8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "command": { + "clickTrackingParams": "CBAQ8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UC_vmjW5e1xEHhYjY2a0kK1A/videos", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC_vmjW5e1xEHhYjY2a0kK1A", + "params": "EgZ2aWRlb3PyBgkKBzoAogECCAE%3D" + } + } + } + }, + "creatorAboutButton": { + "buttonRenderer": { + "style": "STYLE_INACTIVE_OUTLINE", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "About" + }, + "icon": { + "iconType": "ACCOUNT_BOX" + }, + "trackingParams": "CA8Q8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "command": { + "clickTrackingParams": "CA8Q8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UC_vmjW5e1xEHhYjY2a0kK1A/about", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC_vmjW5e1xEHhYjY2a0kK1A", + "params": "EgVhYm91dPIGBgoCMgBKAA%3D%3D" + } + } + } + }, + "sectionSubtitle": { + "accessibility": { + "accessibilityData": { + "label": "38.1K subscribers" + } + }, + "simpleText": "38.1K subscribers" + }, + "channelAvatar": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj" + } + ] + }, + "channelEndpoint": { + "clickTrackingParams": "CA4QwjcYBCITCNXA6bDV0IkDFVZHegUdGng4lw==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UC_vmjW5e1xEHhYjY2a0kK1A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UC_vmjW5e1xEHhYjY2a0kK1A" + } + }, + "trackingParams": "CA4QwjcYBCITCNXA6bDV0IkDFVZHegUdGng4lw==" + } + } + ] + } + }, + "veType": 124975, + "targetId": "engagement-panel-structured-description", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN", + "loggingDirectives": { + "trackingParams": "CA0Q040EGAIiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + } + ], + "topbar": { + "desktopTopbarRenderer": { + "logo": { + "topbarLogoRenderer": { + "iconImage": { + "iconType": "YOUTUBE_LOGO" + }, + "tooltipText": { + "runs": [ + { + "text": "YouTube Home" + } + ] + }, + "endpoint": { + "clickTrackingParams": "CAwQsV4iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 3854, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "FEwhat_to_watch" + } + }, + "trackingParams": "CAwQsV4iEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "overrideEntityKey": "EgZ0b3BiYXIg9QEoAQ%3D%3D" + } + }, + "searchbox": { + "fusionSearchboxRenderer": { + "icon": { + "iconType": "SEARCH" + }, + "placeholderText": { + "runs": [ + { + "text": "Search" + } + ] + }, + "config": { + "webSearchboxConfig": { + "requestLanguage": "en", + "requestDomain": "us", + "hasOnscreenKeyboard": false, + "focusSearchbox": true + } + }, + "trackingParams": "CAoQ7VAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "searchEndpoint": { + "clickTrackingParams": "CAoQ7VAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/results?search_query=", + "webPageType": "WEB_PAGE_TYPE_SEARCH", + "rootVe": 4724 + } + }, + "searchEndpoint": { + "query": "" + } + }, + "clearButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "CLOSE" + }, + "trackingParams": "CAsQ8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibilityData": { + "accessibilityData": { + "label": "Clear search query" + } + } + } + } + } + }, + "trackingParams": "CAEQq6wBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "topbarButtons": [ + { + "topbarMenuButtonRenderer": { + "icon": { + "iconType": "MORE_VERT" + }, + "menuRequest": { + "clickTrackingParams": "CAgQ_qsBGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/account/account_menu" + } + }, + "signalServiceEndpoint": { + "signal": "GET_ACCOUNT_MENU", + "actions": [ + { + "clickTrackingParams": "CAgQ_qsBGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "openPopupAction": { + "popup": { + "multiPageMenuRenderer": { + "trackingParams": "CAkQ_6sBIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "style": "MULTI_PAGE_MENU_STYLE_TYPE_SYSTEM", + "showLoadingSpinner": true + } + }, + "popupType": "DROPDOWN", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CAgQ_qsBGAAiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "accessibility": { + "accessibilityData": { + "label": "Settings" + } + }, + "tooltip": "Settings", + "style": "STYLE_DEFAULT" + } + }, + { + "buttonRenderer": { + "style": "STYLE_SUGGESTIVE", + "size": "SIZE_SMALL", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "icon": { + "iconType": "AVATAR_LOGGED_OUT" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAcQ1IAEGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "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%3Dhttps%253A%252F%252Fwww.youtube.com%252Fyoutubei%252Fv1%252Fnext%253FprettyPrint%253Dfalse&hl=en&ec=65620", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "idamTag": "65620" + } + }, + "trackingParams": "CAcQ1IAEGAEiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "targetId": "topbar-signin" + } + } + ], + "hotkeyDialog": { + "hotkeyDialogRenderer": { + "title": { + "runs": [ + { + "text": "Keyboard shortcuts" + } + ] + }, + "sections": [ + { + "hotkeyDialogSectionRenderer": { + "title": { + "runs": [ + { + "text": "Playback" + } + ] + }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle play/pause" + } + ] + }, + "hotkey": "k" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rewind 10 seconds" + } + ] + }, + "hotkey": "j" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Fast forward 10 seconds" + } + ] + }, + "hotkey": "l" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Previous video" + } + ] + }, + "hotkey": "P (SHIFT+p)" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Next video" + } + ] + }, + "hotkey": "N (SHIFT+n)" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Previous frame (while paused)" + } + ] + }, + "hotkey": ",", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Comma" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Next frame (while paused)" + } + ] + }, + "hotkey": ".", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Period" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Decrease playback rate" + } + ] + }, + "hotkey": "< (SHIFT+,)", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Less than or SHIFT + comma" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Increase playback rate" + } + ] + }, + "hotkey": "> (SHIFT+.)", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Greater than or SHIFT + period" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Seek to specific point in the video (7 advances to 70% of duration)" + } + ] + }, + "hotkey": "0..9" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Seek to previous chapter" + } + ] + }, + "hotkey": "CONTROL + ←" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Seek to next chapter" + } + ] + }, + "hotkey": "CONTROL + →" + } + } + ] + } + }, + { + "hotkeyDialogSectionRenderer": { + "title": { + "runs": [ + { + "text": "General" + } + ] + }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle full screen" + } + ] + }, + "hotkey": "f" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle theater mode" + } + ] + }, + "hotkey": "t" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle miniplayer" + } + ] + }, + "hotkey": "i" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Close miniplayer or current dialog" + } + ] + }, + "hotkey": "ESCAPE" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle mute" + } + ] + }, + "hotkey": "m" + } + } + ] + } + }, + { + "hotkeyDialogSectionRenderer": { + "title": { + "runs": [ + { + "text": "Subtitles and closed captions" + } + ] + }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "If the video supports captions, toggle captions ON/OFF" + } + ] + }, + "hotkey": "c" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rotate through different text opacity levels" + } + ] + }, + "hotkey": "o" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rotate through different window opacity levels" + } + ] + }, + "hotkey": "w" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rotate through font sizes (increasing)" + } + ] + }, + "hotkey": "+" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rotate through font sizes (decreasing)" + } + ] + }, + "hotkey": "-", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Minus" + } + } + } + } + ] + } + }, + { + "hotkeyDialogSectionRenderer": { + "title": { + "runs": [ + { + "text": "Spherical Videos" + } + ] + }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Pan up" + } + ] + }, + "hotkey": "w" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Pan left" + } + ] + }, + "hotkey": "a" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Pan down" + } + ] + }, + "hotkey": "s" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Pan right" + } + ] + }, + "hotkey": "d" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Zoom in" + } + ] + }, + "hotkey": "+ on numpad or ]", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Plus on number pad or right bracket" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Zoom out" + } + ] + }, + "hotkey": "- on numpad or [", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Minus on number pad or left bracket" + } + } + } + } + ] + } + } + ], + "dismissButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Dismiss" + } + ] + }, + "trackingParams": "CAYQ8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=" + } + }, + "trackingParams": "CAUQteYDIhMI1cDpsNXQiQMVVkd6BR0aeDiX" + } + }, + "backButton": { + "buttonRenderer": { + "trackingParams": "CAQQvIYDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "command": { + "clickTrackingParams": "CAQQvIYDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAQQvIYDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "signalAction": { + "signal": "HISTORY_BACK" + } + } + ] + } + } + } + }, + "forwardButton": { + "buttonRenderer": { + "trackingParams": "CAMQvYYDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "command": { + "clickTrackingParams": "CAMQvYYDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAMQvYYDIhMI1cDpsNXQiQMVVkd6BR0aeDiX", + "signalAction": { + "signal": "HISTORY_FORWARD" + } + } + ] + } + } + } + }, + "a11ySkipNavigationButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Skip navigation" + } + ] + }, + "trackingParams": "CAIQ8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "command": { + "clickTrackingParams": "CAIQ8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAIQ8FsiEwjVwOmw1dCJAxVWR3oFHRp4OJc=", + "signalAction": { + "signal": "SKIP_NAVIGATION" + } + } + ] + } + } + } + } + } + }, + "pageVisualEffects": [ + { + "cinematicContainerRenderer": { + "gradientColorConfig": [ + { + "darkThemeColor": 2566914048, + "startLocation": 0 + }, + { + "darkThemeColor": 2130706432 + }, + { + "darkThemeColor": 4278190080, + "startLocation": 1 + } + ], + "presentationStyle": "CINEMATIC_CONTAINER_PRESENTATION_STYLE_DYNAMIC_BLURRED", + "config": { + "lightThemeBackgroundColor": 4278190080, + "darkThemeBackgroundColor": 4278190080, + "animationConfig": { + "minImageUpdateIntervalMs": 5000, + "crossfadeDurationMs": 5000, + "crossfadeStartOffset": 1, + "maxFrameRate": 30 + }, + "colorSourceSizeMultiplier": 2.5, + "applyClientImageBlur": true, + "bottomColorSourceHeightMultiplier": 0.67, + "maxBottomColorSourceHeight": 260, + "colorSourceWidthMultiplier": 1.5, + "colorSourceHeightMultiplier": 2, + "blurStrength": 5, + "watchFullscreenConfig": { + "colorSourceWidthMultiplier": 2, + "colorSourceHeightMultiplier": 2, + "scrimWidthMultiplier": 2.5, + "scrimHeightMultiplier": 2.5, + "flatScrimColor": 2566914048 + }, + "enableInLightTheme": true + } + } + } + ], + "frameworkUpdates": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EgZ0b3BiYXIg9QEoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_DELETE", + "options": { + "persistenceOption": "ENTITY_PERSISTENCE_OPTION_INMEMORY_AND_PERSIST" + } + }, + { + "entityKey": "EgtYdU0yb25NR3ZUSSA-KAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "likeStatusEntity": { + "key": "EgtYdU0yb25NR3ZUSSA-KAE%3D", + "likeStatus": "INDIFFERENT" + } + } + }, + { + "entityKey": "EhhVQ1ZHdm5xQi01em5xUFNiTUdsaEY0UHcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1ZHdm5xQi01em5xUFNiTUdsaEY0UHcgMygB", + "subscribed": false + } + } + } + ], + "timestamp": { + "seconds": "1731203977", + "nanos": 651570473 + } + } + } +} diff --git a/tests/youtube.rs b/tests/youtube.rs index 5bd4024..893ebaf 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -999,7 +999,7 @@ async fn channel_search(rp: RustyPipe) { .unwrap(); assert_channel_eevblog(&channel); - assert_next(channel.content, rp.query(), 20, 2, true).await; + assert_next(channel.content, rp.query(), 18, 2, true).await; } fn assert_channel_eevblog(channel: &Channel) { @@ -1526,13 +1526,17 @@ async fn music_playlist( assert_eq!(playlist.description.map(|d| d.to_plaintext()), description); } + assert_eq!( + playlist.from_ytm, from_ytm, + "got channel: {:?}", + playlist.channel + ); if let Some(expect) = channel { let c = playlist.channel.expect("channel"); assert_eq!(c.id, expect.0); assert_eq!(c.name, expect.1); } assert!(!playlist.thumbnail.is_empty()); - assert_eq!(playlist.from_ytm, from_ytm); } #[rstest] From 8e0e66ffeca062b51dfc8c56fb7052f7350dea7f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 10 Nov 2024 14:51:39 +0100 Subject: [PATCH 030/191] chore(release): release rustypipe v0.7.0 --- CHANGELOG.md | 20 ++++++++++++++++++++ Cargo.toml | 4 ++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8840930..c7fc439 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,26 @@ All notable changes to this project will be documented in this file. +## [v0.7.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.6.0..rustypipe/v0.7.0) - 2024-11-10 + +### 🚀 Features + +- Allow searching for YTM users - ([50010b7](https://codeberg.org/ThetaDev/rustypipe/commit/50010b7b0856d3ce05fe7a9d5989e526089bc2ef)) +- [**breaking**] Replace `TrackItem::is_video` attr with TrackType enum; serde lowercase AlbumType enum for consistency - ([044094a](https://codeberg.org/ThetaDev/rustypipe/commit/044094a4b70f05c46a459fa1597e23f4224b7b0b)) + +### 🐛 Bug Fixes + +- Fetch unlocalized player data to interpret errors correctly; regression introduced with v0.6.0 - ([0919cbd](https://codeberg.org/ThetaDev/rustypipe/commit/0919cbd0dfe28ea00610c67a694e5f319e80635f)) +- A/B test 17: channel playlists lockupViewModel - ([342119d](https://codeberg.org/ThetaDev/rustypipe/commit/342119dba6f3dc2152eef1fc9841264a9e56b9f0)) +- [**breaking**] Serde: lowercase Verification enum - ([badb3ae](https://codeberg.org/ThetaDev/rustypipe/commit/badb3aef8249315909160b8ff73df3019f07cf97)) +- Parsing videos using LockupViewModel (Music video recommendations) - ([870ff79](https://codeberg.org/ThetaDev/rustypipe/commit/870ff79ee07dfab1f4f2be3a401cd5320ed587da)) +- Parsing lockup playlists with "MIX" instead of view count - ([ac8fbc3](https://codeberg.org/ThetaDev/rustypipe/commit/ac8fbc3e679819189e2791c323975acaf1b43035)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate thiserror to v2 (#16) - ([e1e1687](https://codeberg.org/ThetaDev/rustypipe/commit/e1e1687605603686ac5fd5deeb6aa8fecaf92494)) + + ## [v0.6.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.5.0..rustypipe/v0.6.0) - 2024-10-28 ### 🚀 Features diff --git a/Cargo.toml b/Cargo.toml index 9b11b43..60213e6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.6.0" +version = "0.7.0" rust-version = "1.67.1" edition.workspace = true authors.workspace = true @@ -73,7 +73,7 @@ path_macro = "1.0.0" tracing-test = "0.2.5" # Included crates -rustypipe = { path = ".", version = "0.6.0", default-features = false } +rustypipe = { path = ".", version = "0.7.0", default-features = false } rustypipe-downloader = { path = "./downloader", version = "0.2.1", default-features = false, features = [ "indicatif", "audiotag", From 5da3887932ee872907b0ea4d2bd6301e1037b63b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 10 Nov 2024 14:53:55 +0100 Subject: [PATCH 031/191] chore(release): release rustypipe-downloader v0.2.4 --- downloader/CHANGELOG.md | 12 ++++++++++++ downloader/Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md index f04f2cc..1e2279c 100644 --- a/downloader/CHANGELOG.md +++ b/downloader/CHANGELOG.md @@ -3,12 +3,24 @@ All notable changes to this project will be documented in this file. +## [v0.2.4](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.3..rustypipe-downloader/v0.2.4) - 2024-11-10 + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate thiserror to v2 (#16) - ([e1e1687](https://codeberg.org/ThetaDev/rustypipe/commit/e1e1687605603686ac5fd5deeb6aa8fecaf92494)) +- *(deps)* Update rustypipe to 0.7.0 + + ## [v0.2.3](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.2..rustypipe-downloader/v0.2.3) - 2024-10-28 ### 🐛 Bug Fixes - Remove unnecessary image.rs dependencies - ([1b08166](https://codeberg.org/ThetaDev/rustypipe/commit/1b08166399cccb8394d2fdd82d54162c1a9e01be)) +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rustypipe to 0.6.0 + ## [v0.2.2](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.1..rustypipe-downloader/v0.2.2) - 2024-10-13 diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index a4e56b3..9369331 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-downloader" -version = "0.2.3" +version = "0.2.4" rust-version = "1.67.1" edition.workspace = true authors.workspace = true From 5d248bd110bf1018867f2177b2b6f179619e1296 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 10 Nov 2024 14:57:35 +0100 Subject: [PATCH 032/191] chore(release): release rustypipe-cli v0.4.0 --- cli/CHANGELOG.md | 12 ++++++++++++ cli/Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 95c3024..1b72936 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. +## [v0.4.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.3.0..rustypipe-cli/v0.4.0) - 2024-11-10 + +### 🚀 Features + +- Allow searching for YTM users - ([50010b7](https://codeberg.org/ThetaDev/rustypipe/commit/50010b7b0856d3ce05fe7a9d5989e526089bc2ef)) +- [**breaking**] Replace `TrackItem::is_video` attr with TrackType enum; serde lowercase AlbumType enum for consistency - ([044094a](https://codeberg.org/ThetaDev/rustypipe/commit/044094a4b70f05c46a459fa1597e23f4224b7b0b)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate thiserror to v2 (#16) - ([e1e1687](https://codeberg.org/ThetaDev/rustypipe/commit/e1e1687605603686ac5fd5deeb6aa8fecaf92494)) + + ## [v0.3.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.2.2..rustypipe-cli/v0.3.0) - 2024-10-28 ### 🚀 Features diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 85c7791..d993126 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-cli" -version = "0.3.0" +version = "0.4.0" rust-version = "1.70.0" edition.workspace = true authors.workspace = true From 706e88134c0e94ce7d880735e9d31b3ff531a4f9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 25 Nov 2024 15:27:33 +0100 Subject: [PATCH 033/191] chore: add docs badge to README --- README.md | 3 ++- cli/README.md | 2 +- downloader/README.md | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5cbfb74..9c22284 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # ![RustyPipe](https://codeberg.org/ThetaDev/rustypipe/raw/branch/main/notes/logo.svg) [![Current crates.io version](https://img.shields.io/crates/v/rustypipe.svg)](https://crates.io/crates/rustypipe) -[![License](https://img.shields.io/badge/License-GPL--3-blue.svg?style=flat)](http://opensource.org/licenses/GPL-3.0) +[![License](https://img.shields.io/badge/License-GPL--3-blue.svg?style=flat)](https://opensource.org/licenses/GPL-3.0) +[![Docs](https://img.shields.io/docsrs/rustypipe/latest?style=flat)](https://docs.rs/rustypipe) [![CI status](https://codeberg.org/ThetaDev/rustypipe/actions/workflows/ci.yaml/badge.svg?style=flat&label=CI)](https://codeberg.org/ThetaDev/rustypipe/actions/?workflow=ci.yaml) RustyPipe is a fully featured Rust client for the public YouTube / YouTube Music API diff --git a/cli/README.md b/cli/README.md index 512e043..bd6c898 100644 --- a/cli/README.md +++ b/cli/README.md @@ -1,7 +1,7 @@ # ![RustyPipe](https://codeberg.org/ThetaDev/rustypipe/raw/branch/main/notes/logo.svg) CLI [![Current crates.io version](https://img.shields.io/crates/v/rustypipe-cli.svg)](https://crates.io/crates/rustypipe-cli) -[![License](https://img.shields.io/badge/License-GPL--3-blue.svg?style=flat)](http://opensource.org/licenses/GPL-3.0) +[![License](https://img.shields.io/badge/License-GPL--3-blue.svg?style=flat)](https://opensource.org/licenses/GPL-3.0) [![CI status](https://codeberg.org/ThetaDev/rustypipe/actions/workflows/ci.yaml/badge.svg?style=flat&label=CI)](https://codeberg.org/ThetaDev/rustypipe/actions/?workflow=ci.yaml) The RustyPipe CLI is a powerful YouTube client for the command line. It allows you to diff --git a/downloader/README.md b/downloader/README.md index d7b8a48..6a7d4ad 100644 --- a/downloader/README.md +++ b/downloader/README.md @@ -1,7 +1,8 @@ # ![RustyPipe](https://codeberg.org/ThetaDev/rustypipe/raw/branch/main/notes/logo.svg) Downloader [![Current crates.io version](https://img.shields.io/crates/v/rustypipe-downloader.svg)](https://crates.io/crates/rustypipe-downloader) -[![License](https://img.shields.io/badge/License-GPL--3-blue.svg?style=flat)](http://opensource.org/licenses/GPL-3.0) +[![License](https://img.shields.io/badge/License-GPL--3-blue.svg?style=flat)](https://opensource.org/licenses/GPL-3.0) +[![Docs](https://img.shields.io/docsrs/rustypipe-downloader/latest?style=flat)](https://docs.rs/rustypipe-downloader) [![CI status](https://codeberg.org/ThetaDev/rustypipe/actions/workflows/ci.yaml/badge.svg?style=flat&label=CI)](https://codeberg.org/ThetaDev/rustypipe/actions/?workflow=ci.yaml) The downloader is a companion crate for RustyPipe that allows for easy and fast From a846b729e3519e3d5e62bdf028d9b48a7f8ea2ce Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 25 Nov 2024 15:48:04 +0100 Subject: [PATCH 034/191] fix: disable Android client --- src/client/mod.rs | 3 +-- src/client/player.rs | 2 +- tests/youtube.rs | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index f1b49b3..fd796d6 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -321,8 +321,7 @@ static VISITOR_DATA_REGEX: Lazy = /// /// The order may change in the future in case YouTube applies changes to their /// platform that disable a client or make it less reliable. -pub const DEFAULT_PLAYER_CLIENT_ORDER: &[ClientType] = - &[ClientType::Tv, ClientType::Android, ClientType::Ios]; +pub const DEFAULT_PLAYER_CLIENT_ORDER: &[ClientType] = &[ClientType::Tv, ClientType::Ios]; /// The RustyPipe client used to access YouTube's API /// diff --git a/src/client/player.rs b/src/client/player.rs index 9d9ee5e..8c0362b 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -198,7 +198,7 @@ impl MapResponse for response::Player { "Premium" => Some(UnavailabilityReason::Premium), "members-only" => Some(UnavailabilityReason::MembersOnly), "country" => Some(UnavailabilityReason::Geoblocked), - "Android" | "websites" => Some(UnavailabilityReason::UnsupportedClient), + "version" | "websites" => Some(UnavailabilityReason::UnsupportedClient), "bot" => Some(UnavailabilityReason::IpBan), _ => None, }) diff --git a/tests/youtube.rs b/tests/youtube.rs index 893ebaf..45f4f85 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -30,7 +30,7 @@ use rustypipe::validate; #[case::desktop(ClientType::Desktop)] #[case::tv(ClientType::Tv)] #[case::mobile(ClientType::Mobile)] -#[case::android(ClientType::Android)] +// #[case::android(ClientType::Android)] #[case::ios(ClientType::Ios)] #[tokio::test] async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) { From 6c8108c94acf9ca2336381bdca7c97b24a809521 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 25 Nov 2024 16:42:00 +0100 Subject: [PATCH 035/191] fix: A/B test 18: music playlist facepile avatar model --- codegen/src/abtest.rs | 17 + notes/AB_Tests.md | 59 +- src/client/music_playlist.rs | 40 +- src/client/response/channel.rs | 14 +- src/client/response/mod.rs | 10 +- src/client/response/music_playlist.rs | 30 +- src/client/response/playlist.rs | 14 +- src/client/response/url_endpoint.rs | 6 + ..._map_music_playlist_20241125_facepile.snap | 1633 ++++ .../playlist_20241125_facepile.json | 7973 +++++++++++++++++ 10 files changed, 9765 insertions(+), 31 deletions(-) create mode 100644 src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_20241125_facepile.snap create mode 100644 testfiles/music_playlist/playlist_20241125_facepile.json diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index ceb99f3..071a400 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -37,6 +37,7 @@ pub enum ABTest { ChannelShortsLockup = 15, PlaylistPageHeader = 16, ChannelPlaylistsLockup = 17, + MusicPlaylistFacepile = 18, } /// List of active A/B tests that are run when none is manually specified @@ -114,6 +115,7 @@ pub async fn run_test( ABTest::ChannelShortsLockup => channel_shorts_lockup(&query).await, ABTest::PlaylistPageHeader => playlist_page_header_renderer(&query).await, ABTest::ChannelPlaylistsLockup => channel_playlists_lockup(&query).await, + ABTest::MusicPlaylistFacepile => music_playlist_facepile(&query).await, } .unwrap(); pb.inc(1); @@ -391,3 +393,18 @@ pub async fn channel_playlists_lockup(rp: &RustyPipeQuery) -> Result { .await?; Ok(res.contains("\"lockupViewModel\"")) } + +pub async fn music_playlist_facepile(rp: &RustyPipeQuery) -> Result { + let id = "VLPL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe"; + let res = rp + .raw( + ClientType::DesktopMusic, + "browse", + &QBrowse { + browse_id: id, + params: None, + }, + ) + .await?; + Ok(res.contains("\"facepile\"")) +} diff --git a/notes/AB_Tests.md b/notes/AB_Tests.md index d754912..0b66ba9 100644 --- a/notes/AB_Tests.md +++ b/notes/AB_Tests.md @@ -793,7 +793,7 @@ YouTube changed the data model for the channel shorts tab - **Encountered on:** 11.10.2024 - **Impact:** 🟢 Low - **Endpoint:** browse -- **Status:** Common (99%) +- **Status:** Stabilized ```json { @@ -905,7 +905,7 @@ YouTube changed the data model for the channel shorts tab - **Encountered on:** 09.11.2024 - **Impact:** 🟢 Low - **Endpoint:** browse -- **Status:** Common (50%) +- **Status:** Stabilized YouTube changed the data model for the channel playlists / podcasts / albums tab @@ -969,3 +969,58 @@ YouTube changed the data model for the channel playlists / podcasts / albums tab } } ``` + +## [18] Music playlists facepile avatar + +- **Encountered on:** 25.11.2024 +- **Impact:** 🟢 Low +- **Endpoint:** browse (YTM) +- **Status:** Stabilized + +YouTube changed the data model for the channel playlist owner avatar into a `facepile` +object. It now also contains the channel avatar. + +The model is also used for playlists owned by YouTube Music (with the avatar and +commandContext missing). + +```json +{ + "facepile": { + "avatarStackViewModel": { + "avatars": [ + { + "avatarViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_n9ALaLETwQH6_2WlXitIaIKV-IqBDWWquvyI2jucNAZaQ=s48-c-k-c0x00000000-no-cc-rj-rp" + } + ] + }, + "avatarImageSize": "AVATAR_SIZE_XS" + } + } + ], + "text": { + "content": "Chaosflo44" + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCQM0bS4_04-Y4JuYrgmnpZQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + } + } + } + } + } + } +} +``` diff --git a/src/client/music_playlist.rs b/src/client/music_playlist.rs index 521d1e4..92233d1 100644 --- a/src/client/music_playlist.rs +++ b/src/client/music_playlist.rs @@ -12,6 +12,8 @@ use crate::{ util::{self, TryRemove, DOT_SEPARATOR}, }; +use self::response::url_endpoint::MusicPageType; + use super::{ response::{ self, @@ -213,13 +215,38 @@ impl MapResponse for response::MusicPlaylist { Some(header) => { let h = header.music_detail_header_renderer; - let st = match h.strapline_text_one { - Some(s) => s, - None => h.subtitle, - }; + let (from_ytm, channel) = match h.facepile { + Some(facepile) => { + let from_ytm = facepile.avatar_stack_view_model.text.starts_with("YouTube"); + let channel = facepile + .avatar_stack_view_model + .renderer_context + .command_context + .and_then(|c| { + c.on_tap + .innertube_command + .music_page() + .filter(|p| p.typ == MusicPageType::User) + .map(|p| p.id) + }) + .map(|id| ChannelId { + id, + name: facepile.avatar_stack_view_model.text, + }); - let from_ytm = st.0.iter().any(util::is_ytm); - let channel = st.0.into_iter().find_map(|c| ChannelId::try_from(c).ok()); + (from_ytm && channel.is_none(), channel) + } + None => { + let st = match h.strapline_text_one { + Some(s) => s, + None => h.subtitle, + }; + + let from_ytm = st.0.iter().any(util::is_ytm); + let channel = st.0.into_iter().find_map(|c| ChannelId::try_from(c).ok()); + (from_ytm, channel) + } + }; ( from_ytm, @@ -484,6 +511,7 @@ mod tests { #[case::nomusic("nomusic", "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe")] #[case::two_columns("20240228_twoColumns", "RDCLAK5uy_kb7EBi6y3GrtJri4_ZH56Ms786DFEimbM")] #[case::n_album("20240228_album", "OLAK5uy_kdSWBZ-9AZDkYkuy0QCc3p0KO9DEHVNH0")] + #[case::facepile("20241125_facepile", "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe")] fn map_music_playlist(#[case] name: &str, #[case] id: &str) { let json_path = path!(*TESTFILES / "music_playlist" / format!("playlist_{name}.json")); let json_file = File::open(json_path).unwrap(); diff --git a/src/client/response/channel.rs b/src/client/response/channel.rs index b602a35..3ed5de5 100644 --- a/src/client/response/channel.rs +++ b/src/client/response/channel.rs @@ -2,9 +2,9 @@ use serde::Deserialize; use serde_with::{rust::deserialize_ignore_any, serde_as, DefaultOnError, VecSkipError}; use super::{ - video_item::YouTubeListRenderer, Alert, AttachmentRun, ChannelBadge, ContentRenderer, - ContentsRenderer, ContinuationActionWrap, ImageView, PageHeaderRendererContent, PhMetadataView, - ResponseContext, Thumbnails, TwoColumnBrowseResults, + video_item::YouTubeListRenderer, Alert, AttachmentRun, AvatarViewModel, ChannelBadge, + ContentRenderer, ContentsRenderer, ContinuationActionWrap, ImageView, + PageHeaderRendererContent, PhMetadataView, ResponseContext, Thumbnails, TwoColumnBrowseResults, }; use crate::{ model::Verification, @@ -162,13 +162,7 @@ pub(crate) struct PhAvatarView { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct PhAvatarView2 { - pub avatar: PhAvatarView3, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct PhAvatarView3 { - pub avatar_view_model: ImageView, + pub avatar: AvatarViewModel, } #[derive(Default, Debug, Deserialize)] diff --git a/src/client/response/mod.rs b/src/client/response/mod.rs index 2bcd6a8..b619e57 100644 --- a/src/client/response/mod.rs +++ b/src/client/response/mod.rs @@ -113,6 +113,12 @@ pub(crate) struct ImageView { pub image: Thumbnails, } +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct AvatarViewModel { + pub avatar_view_model: ImageView, +} + /// List of images in different resolutions. /// Not only used for thumbnails, but also for avatars and banners. #[derive(Default, Debug, Deserialize)] @@ -203,7 +209,7 @@ pub(crate) struct TextBox { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct TextComponentBox { - #[serde_as(deserialize_as = "AttributedText")] + #[serde_as(as = "AttributedText")] pub text: TextComponent, } @@ -591,7 +597,7 @@ pub(crate) struct PhMetadataRow { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) enum MetadataPart { - Text(#[serde_as(deserialize_as = "AttributedText")] TextComponent), + Text(#[serde_as(as = "AttributedText")] TextComponent), #[serde(rename_all = "camelCase")] AvatarStack { avatar_stack_view_model: TextComponentBox, diff --git a/src/client/response/music_playlist.rs b/src/client/response/music_playlist.rs index b97ea13..0cb1a17 100644 --- a/src/client/response/music_playlist.rs +++ b/src/client/response/music_playlist.rs @@ -1,12 +1,13 @@ use serde::Deserialize; use serde_with::{serde_as, DefaultOnError, VecSkipError}; -use crate::serializer::text::{Text, TextComponents}; +use crate::serializer::text::{AttributedText, Text, TextComponents}; use super::{ music_item::{ Button, ItemSection, MusicContentsRenderer, MusicItemMenuEntry, MusicThumbnailRenderer, }, + url_endpoint::OnTapWrap, ContentsRenderer, SectionList, Tab, }; @@ -83,6 +84,10 @@ pub(crate) struct HeaderRenderer { #[serde(default)] #[serde_as(as = "Text")] pub second_subtitle: Vec, + /// Channel (newer data model) + #[serde(default)] + #[serde_as(as = "DefaultOnError")] + pub facepile: Option, #[serde(default)] #[serde_as(as = "DefaultOnError")] pub menu: Option, @@ -135,6 +140,29 @@ impl From for TextComponents { } } +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct AvatarStackViewModelWrap { + pub avatar_stack_view_model: AvatarStackViewModel, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct AvatarStackViewModel { + // #[serde(default)] + // pub avatars: Vec, + #[serde_as(as = "AttributedText")] + pub text: String, + pub renderer_context: AvatarStackRendererContext, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct AvatarStackRendererContext { + pub command_context: Option, +} + #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct Microformat { diff --git a/src/client/response/playlist.rs b/src/client/response/playlist.rs index 24eae36..b4839da 100644 --- a/src/client/response/playlist.rs +++ b/src/client/response/playlist.rs @@ -4,9 +4,9 @@ use serde_with::{serde_as, DefaultOnError, VecSkipError}; use crate::serializer::text::{AttributedText, Text, TextComponent, TextComponents}; use super::{ - url_endpoint::OnTap, video_item::YouTubeListRenderer, Alert, ContentRenderer, ContentsRenderer, - ImageView, PageHeaderRendererContent, PhMetadataView, ResponseContext, SectionList, Tab, - TextBox, ThumbnailsWrap, TwoColumnBrowseResults, + url_endpoint::OnTapWrap, video_item::YouTubeListRenderer, Alert, ContentRenderer, + ContentsRenderer, ImageView, PageHeaderRendererContent, PhMetadataView, ResponseContext, + SectionList, Tab, TextBox, ThumbnailsWrap, TwoColumnBrowseResults, }; #[serde_as] @@ -173,11 +173,5 @@ pub(crate) struct ActionsRow { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct ButtonAction { - pub button_view_model: ButtonViewModel, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct ButtonViewModel { - pub on_tap: OnTap, + pub button_view_model: OnTapWrap, } diff --git a/src/client/response/url_endpoint.rs b/src/client/response/url_endpoint.rs index 46e247a..b2ab055 100644 --- a/src/client/response/url_endpoint.rs +++ b/src/client/response/url_endpoint.rs @@ -163,6 +163,12 @@ pub(crate) struct OnTap { pub innertube_command: NavigationEndpoint, } +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct OnTapWrap { + pub on_tap: OnTap, +} + #[derive(Default, Debug, Clone, Copy, Deserialize, PartialEq, Eq)] pub(crate) enum MusicVideoType { #[default] diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_20241125_facepile.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_20241125_facepile.snap new file mode 100644 index 0000000..68e8b5d --- /dev/null +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_playlist_20241125_facepile.snap @@ -0,0 +1,1633 @@ +--- +source: src/client/music_playlist.rs +expression: map_res.c +--- +MusicPlaylist( + id: "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe", + name: "Minecraft SHINE", + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/X82TrticM4A/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nivzZQqwACPH9pzwQwDy20PgV64Q", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/X82TrticM4A/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3kax3LzLLiNq_qr1z49YRX5LkGrJw", + width: 800, + height: 450, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/X82TrticM4A/hq720.jpg?sqp=-oaymwEXCNUGEOADIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nHfTiuW5xV8GL3wAipEVvM34aUmA", + width: 853, + height: 480, + ), + ], + channel: Some(ChannelId( + id: "UCQM0bS4_04-Y4JuYrgmnpZQ", + name: "Chaosflo44", + )), + description: Some(RichText([ + Text( + text: "SHINE - Survival Hardcore in New Environment: Auf einem Server machen sich tapfere Spieler auf, mystische Welten zu erkunden, magische Technologien zu erforschen und vorallem zu überleben...", + ), + ])), + track_count: Some(66), + from_ytm: false, + tracks: Paginator( + count: Some(66), + items: [ + TrackItem( + id: "X82TrticM4A", + name: "Minecraft SHINE (Trailer)", + duration: Some(80), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/X82TrticM4A/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nivzZQqwACPH9pzwQwDy20PgV64Q", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "RPGLMuxkLCs", + name: "DAS LAGERFEUERLIED - Minecraft SHINE #001 [Deutsch/HD]", + duration: Some(1356), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/RPGLMuxkLCs/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kpG3-WbedUEIN2W58FsKa6UgvVJA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "z-ALpnnQLrk", + name: "MAGISCHES FURZMONSTER - Minecraft SHINE #002 [Deutsch/HD]", + duration: Some(1039), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/z-ALpnnQLrk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mbMsAE6zz4MehUtbjiTFKVHotD0Q", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "_rrbTTv8zcQ", + name: "UNTERIRDISCHE RIESENPILZHÖHLEN - Minecraft SHINE #003 [Deutsch/HD]", + duration: Some(1447), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/_rrbTTv8zcQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k-47cLTpVH32KeqsUQcuDpHxUjQA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "JE16OKTawLw", + name: "BESTE AXT IM SPIEL GEFUNDEN?! - Minecraft SHINE #004 [Deutsch/HD]", + duration: Some(1238), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/JE16OKTawLw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lqhDNUP-QmFKCBgxFv_WgMaCc63Q", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "RQNY0Wzm7DQ", + name: "ERZERAUSCH IM MINENSCHACHT - Minecraft SHINE #005 [Deutsch/HD]", + duration: Some(1405), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/RQNY0Wzm7DQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mOSs7fAPps74cF9lhm7FbRJyeHSA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "uhy24PKBkd0", + name: "FUSIONSOFEN & ERSTER IM NETHER?! - Minecraft SHINE #006 [Deutsch/HD]", + duration: Some(1569), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/uhy24PKBkd0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kJfmS0G07o6nFT9tKKaeX3x_FLaQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "OL1hQadBHfs", + name: "EPISCHER ROGUEDUNGEON - Minecraft SHINE #007 [Deutsch/HD]", + duration: Some(1534), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/OL1hQadBHfs/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lqRJq6PnrJZVq8TeFWK4VIruBxQA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "Zge_SUfk0r8", + name: "DIAMANTZOMBIES auf NETHEREBENE - Minecraft SHINE #008 [Deutsch/HD]", + duration: Some(1726), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Zge_SUfk0r8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n41mnRJl4yWSxOwxupspPqFqekjA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "yFGIeU_IDE4", + name: "HÖLLISCHE SCHLACHT um 2 DIAMANTBLÖCKE - Minecraft SHINE #009 [Deutsch/HD]", + duration: Some(1669), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/yFGIeU_IDE4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lbzdfq9miiP3GhAvBIqiDjeXZzDg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "P6MVqfQzPIg", + name: "MAGISCHER OBSIDIANTOTEM?! - Minecraft SHINE #010 [Deutsch/HD]", + duration: Some(1526), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/P6MVqfQzPIg/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kl1QNMQWUnHSg_K6qiRyIEpN-WQw", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "9n0pLDn8Z_I", + name: "GRÜNER FEUEROGER & WITHERWARZEN - Minecraft SHINE #011 [Deutsch/HD]", + duration: Some(1482), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/9n0pLDn8Z_I/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nzp4un-py3mdKGnq43cu_B7GWCvQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "oXbx2YtIkeQ", + name: "MYSTERIÖSES Grab & ONYX ohne ENDE!! - Minecraft SHINE #012 [Deutsch/HD]", + duration: Some(1518), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/oXbx2YtIkeQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lQ0JdJSCDuaRqNCcbjpjohG4tmwg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "pfBBTTwxo8Q", + name: "ATLANTIS ENTDECKT!! - Minecraft SHINE #013 [Deutsch/HD]", + duration: Some(1479), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/pfBBTTwxo8Q/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lTpGAZOMN6khRpFIiu9VbgLwsauw", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "WxtRqzxSAh0", + name: "ZUSAMMENFASSUNG & Nodop\'s ANGRIFF - Minecraft SHINE #014 [Deutsch/HD]", + duration: Some(1902), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/WxtRqzxSAh0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mj2sEe61_ri9Qi2bOKKmpxXazdfg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "ianUckvxtLw", + name: "FRIEDHOFDUNGEON mit NODÖPCHEN - Minecraft SHINE #016 [Deutsch/HD]", + duration: Some(1766), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ianUckvxtLw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nAAEYhQfE5_Ph_he5nM9_HmU9wWQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "eb2Ghj1g1ic", + name: "Die BESTE FALLE aller ZEITEN!! - Minecraft SHINE #015 [Deutsch/HD]", + duration: Some(1324), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/eb2Ghj1g1ic/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mW-rtF12OP3BjTqHUlRj55SCh91A", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "8TpEsyVtCog", + name: "MEGAGEMETZEL zu FÜNFT - Minecraft SHINE #017 [Deutsch/HD]", + duration: Some(1629), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/8TpEsyVtCog/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3moI9jIudWeH7AMj4nsHxG4USDhOA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "KD_WAei4LMg", + name: "WITHER BOSSFIGHT - Minecraft SHINE #018 [Deutsch/HD]", + duration: Some(1645), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/KD_WAei4LMg/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nxeyexNK6QTi3VcRYTFpNhzGnluw", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "qfpOCrtweKk", + name: "LABERSTUNDE mit ArazhulHD - Minecraft SHINE #019 [Deutsch/HD]", + duration: Some(1052), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/qfpOCrtweKk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kQCZL4AJPY0TiZixnWrZhs3zX3jA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "6gv3nrOA_bQ", + name: "BUSRITUALE & Seltsame LEHRER - Minecraft SHINE #021 [Deutsch/HD]", + duration: Some(1769), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/6gv3nrOA_bQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lxB3GOzVouBoQjUGjF-xg2sPCyIQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "waaic6UnkU8", + name: "LEHM, LEHM und mehr LEEEHM!! - Minecraft SHINE #022 [Deutsch/HD]", + duration: Some(1081), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/waaic6UnkU8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k2SAgNNjiG5NcOZTojVe4zjHkF2Q", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "lSy4MLC_uV4", + name: "Neue DIMENSIONEN?? - Minecraft SHINE #023 [Deutsch/HD]", + duration: Some(1682), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/lSy4MLC_uV4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nZHeRK2vfO3nEE3YhoSZviQvrk1A", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "BuN8-U_quok", + name: "DUNGEONSTATUEN - Minecraft SHINE #024 [Deutsch/HD]", + duration: Some(1597), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/BuN8-U_quok/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lWh9-QydZXiZwInLdePVuuXJ_Z2Q", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "g_UTG10nzaQ", + name: "THYRIUMBOGEN & Dimensional DOORS - Minecraft SHINE #025 [Deutsch/HD]", + duration: Some(1852), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/g_UTG10nzaQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nNF-xrE9X4dGACkT_v9NPX9oiDuA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "kNykFWaDbGw", + name: "MEIN ERSTER PVP KILL?! - Minecraft SHINE #026 [Deutsch/HD]", + duration: Some(1869), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/kNykFWaDbGw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nDffGijVSy58PFzp0NB-XsuHS8pg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "gJF7vxCYTgY", + name: "SPELLBOUND FARM - Minecraft SHINE #027 [Deutsch/HD]", + duration: Some(2161), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/gJF7vxCYTgY/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lMbARI9FgF0nPjZ7rsShWLgroSlA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "CodZMQ_Anc0", + name: "VIEEELE bunte ZAUBERPILZE - Minecraft SHINE #028 [Deutsch/HD]", + duration: Some(1768), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/CodZMQ_Anc0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nkR6qDHsqGbsILeExY7BgZexQSkQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "oKHMTKJdZ_M", + name: "STREAMUPDATE & BIOMREISE - Minecraft SHINE #029 [Deutsch/HD]", + duration: Some(1771), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/oKHMTKJdZ_M/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mjXhxLdgQqHHdv8lA0YrDv59G84A", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "--O_Eyok_eE", + name: "AUF NACH TROPICRAFT - Minecraft SHINE #030 [Deutsch/HD]", + duration: Some(1661), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/--O_Eyok_eE/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kQBqjgoM1MT3MusDWdkYIgmTKL9w", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "2bT3ljKMSo8", + name: "SCHATZTRUHE GEFUNDEN!! - Minecraft SHINE #031 [Deutsch/HD]", + duration: Some(1429), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/2bT3ljKMSo8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lyc2WBq364Ax9gHHZfJ1Ew2_20uA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "YRAX_slrbsI", + name: "ZAUBERWALD und TROPISCHER DSCHUNGEL - Minecraft SHINE #032 [Deutsch/HD]", + duration: Some(1257), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/YRAX_slrbsI/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kxCCJPbkTdrB9BH01YmwLYv8OMZA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "aRRbCEwUSuw", + name: "MESABIOM & JOUSTS - Minecraft SHINE #033 [Deutsch/HD]", + duration: Some(1131), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/aRRbCEwUSuw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kYqyi6vO9kSl-zTUBNHXDI-p9xAQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "5sV8SzTbJS8", + name: "Komplette SMELTERY GEFUNDEN!! - Minecraft SHINE #034 [Deutsch/HD]", + duration: Some(1405), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/5sV8SzTbJS8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3m5NRhG_o7_Ci-AxCaMID0wZbByoA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "ZxxZlU2o1TE", + name: "ROGUEDUNGEON EXTREME - Minecraft SHINE #035 [Deutsch/HD]", + duration: Some(1555), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ZxxZlU2o1TE/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3le1mFnc_5-gTK1Ow51Yg4NTBhrvA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "gIjo5at4AxE", + name: "LEGENDÄRER LOOT - Minecraft SHINE #036 [Deutsch/HD]", + duration: Some(1405), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/gIjo5at4AxE/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3krl-qwkZnRmYMJIKaVxVTOIUU8kA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "NSGk7-kyeEU", + name: "I BELIEVE I CAN FLY - Minecraft SHINE #037 [Deutsch/HD]", + duration: Some(829), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/NSGk7-kyeEU/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nHEjckBWee5umayWXmHNxTCoUaKg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "cgJtZ7Otc4Y", + name: "ROGUEFRIEDHOF mit WITHERBOSS - Minecraft SHINE #038 [Deutsch/HD]", + duration: Some(1392), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/cgJtZ7Otc4Y/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mLD7V-7FqftQmyXf7muAZpNDvupQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "l5LQu3Q0nWY", + name: "MONSTERCALYPSE & RETTUNGSAKTION - Minecraft SHINE #039 [Deutsch/HD]", + duration: Some(1580), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/l5LQu3Q0nWY/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l6gXW1BZoRBII58tl47HW-V1UT8w", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "YX4Z3ZlWUFc", + name: "HINTERHALT von GEGNERN!! - Minecraft SHINE #040 [Deutsch/HD]", + duration: Some(1847), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/YX4Z3ZlWUFc/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kPFPkgNfAr6nkTfcWvxawCIzDu2w", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "LoyvqR41lKw", + name: "CARPENTER\'s BLOCKS - Minecraft SHINE #041 [Deutsch/HD]", + duration: Some(1524), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/LoyvqR41lKw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l3jZd5n7Myg0_Ii_Ifltvqp-R4AA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "HbQtMZbtx_Q", + name: "DER ETERNAL FROST!! - Minecraft SHINE #043 [Deutsch/HD]", + duration: Some(1514), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/HbQtMZbtx_Q/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mWss1o7iQ67zHFEitZtetz5GoGEg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "0DHRbP9ecgw", + name: "FROSTDUNGEONS in der OVERWORLD!! - Minecraft SHINE #044 [Deutsch/HD]", + duration: Some(1567), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/0DHRbP9ecgw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n_QE05w3itQ1TRyc9E9y6L_06GLg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "rFOFkvk-xus", + name: "BOSSRÜSTUNG XXL - Minecraft SHINE #045 [Deutsch/HD]", + duration: Some(2050), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/rFOFkvk-xus/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lj9ceijuhmYChED05kLBRpc9p_SQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "P8zxnSihJ_8", + name: "ZAUBERN & TROLLEN mit Nodop - Minecraft SHINE #046 [Deutsch/HD]", + duration: Some(1828), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/P8zxnSihJ_8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nbaYtnTCvIRa8SW36iucASQIguPg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "RWgeHl9XkCY", + name: "NACHHILFE für BALUI - Minecraft SHINE #047 [Deutsch/HD]", + duration: Some(1926), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/RWgeHl9XkCY/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mrWtRCoS4SgY5L-ny8nQglQrjdPA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "I1n539enNNY", + name: "SPIELER GETÖTET!! - Minecraft SHINE #048 [Deutsch/HD]", + duration: Some(1836), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/I1n539enNNY/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mcPWzeMscfdUZhr6h5BsZI78177A", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "70VKekyZz5g", + name: "VORBEREITUNG auf den DRACHEN - Minecraft SHINE #049 [Deutsch/HD]", + duration: Some(1916), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/70VKekyZz5g/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l5yRZbsMfTSLEfK1dNLuWILeDsEg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "2OWJ1bwFu6Y", + name: "Donnernder ENDERDRACHENKAMPF - Minecraft SHINE #050 [Deutsch/HD]", + duration: Some(1718), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/2OWJ1bwFu6Y/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lugfNC-Zh8G5uQLHoAxhnS0G9sZg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "zLiSA2i-niw", + name: "Superspitzhacke & Necrotic Bones - Minecraft SHINE #051 [Deutsch/HD]", + duration: Some(1253), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/zLiSA2i-niw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mb20op3gDkg9U4NklTIOQe7kUaNA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "wyXlw7nMpko", + name: "TREMEP, das ENDERAUGE!! - Minecraft SHINE #052 [Deutsch/HD]", + duration: Some(1924), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/wyXlw7nMpko/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l00tU-IXggLeXkPJRJGsJ8BPhA1A", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "NrU4fhzvFpA", + name: "TORNADO & ENDERPOKALYPSE!! - Minecraft SHINE #053 [Deutsch/HD]", + duration: Some(1654), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/NrU4fhzvFpA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kM1EYWvcRpgJl_Mw7Zg2TasKcBSg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "1xhKegaA1hQ", + name: "RIESIGE SMELTERY - Minecraft SHINE #054 [Deutsch/HD]", + duration: Some(1796), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/1xhKegaA1hQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n2elhSKG8zA0QWoox-GJVSFhaBoA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "9F4lZ8psBtg", + name: "TINKER\'s CONSTRUCT - Minecraft SHINE #055 [Deutsch/HD]", + duration: Some(1514), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/9F4lZ8psBtg/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nRO-KNuojQya_YJdI5dfrk_LLgPg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "G3uUtejX9to", + name: "CUTLASS und HAMMERACTION - Minecraft SHINE #056 [Deutsch/HD]", + duration: Some(1615), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/G3uUtejX9to/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3laFrg1g0Y-9XlpbBEDfXAttnRIZQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "-0Xn5pViCss", + name: "QUARZFESTIVAL - Minecraft SHINE #057 [Deutsch/HD]", + duration: Some(1353), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/-0Xn5pViCss/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mepxuqMea2FGk6pkCfYsixfLaocg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "a7u71Fco99I", + name: "DUALWITHERKAMPF & EXOSUIT - Minecraft SHINE #058 [Deutsch/HD]", + duration: Some(1377), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/a7u71Fco99I/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n7aMGHQ6L6e6ujUrmSoSgboj5osg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "H6uUbvcgKdk", + name: "ALLE GETROLLT?! 1. APRIL!! - Minecraft SHINE #060 [Deutsch/HD]", + duration: Some(1751), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/H6uUbvcgKdk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lL6wDfDt_wTa4HsOcZ3fql-nlBCQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "tPRTCauHtkw", + name: "THAUMELONE - Minecraft SHINE #061 [Deutsch/HD]", + duration: Some(1604), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/tPRTCauHtkw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k-Hw3vpTUncppf7Xg3kcBKxKSrlA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "pMKAQExcarM", + name: "ICH BIN EIN MAGIER!! - Minecraft SHINE #062 [Deutsch/HD]", + duration: Some(1202), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/pMKAQExcarM/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lhlWXYhK63IksNVSBOrbP8hHudpg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "7E-z-7KCdBI", + name: "ENDER PORTER und SPELLBOUND - Minecraft SHINE #063 [Deutsch/HD]", + duration: Some(1715), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/7E-z-7KCdBI/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mYEE8T0T-5udk6CLh3SVx2AjMMvQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "EPtbC0ZVddo", + name: "PORTABLE HOLE & Melonenstatuen - Minecraft SHINE #064 [Deutsch/HD]", + duration: Some(1696), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/EPtbC0ZVddo/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n23Y37oDfphp8kX6iep55VJGVrsA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "TpPHng0eGJs", + name: "ZUKUNFT des PROJEKTS - Minecraft SHINE #065 [Deutsch/HD]", + duration: Some(1215), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/TpPHng0eGJs/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lnejqxwmupyk33UTgHgFWh1AYX2w", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "rt2QFQwJYcs", + name: "GIGANTISCHER METEOR!! - Minecraft SHINE #066 [Deutsch/HD]", + duration: Some(1593), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/rt2QFQwJYcs/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kH8Y_MMEhrqwPxuMlXLPxqZM7XCg", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "WPyfaztFDQ4", + name: "Der EREBUS und die GHAST QUEEN - Minecraft SHINE #067 [Deutsch/HD]", + duration: Some(1687), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/WPyfaztFDQ4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mA90SjZqQTOFCyanCBkyGSeOkcXA", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "5lmumP0DaUw", + name: "MINI-BEST OF und KABOOM!! - Minecraft SHINE #069 (Finale) [Deutsch/HD]", + duration: Some(1044), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/5lmumP0DaUw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3m_3yQx4232OWXHorx5wWMuPeqwqQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Chaosflo44", + ), + ], + artist_id: None, + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + ], + ctoken: None, + endpoint: music_browse, + ), + related_playlists: Paginator( + count: None, + items: [], + ctoken: Some("4qmFsgI0EiRWTFBMMUotNkpPY2tadEVfUDlYeDhEM2IyTzZ3MGlkaHVLQmUaDGtnRURDTTBHOEFFQQ%3D%3D"), + endpoint: music_browse, + ), +) diff --git a/testfiles/music_playlist/playlist_20241125_facepile.json b/testfiles/music_playlist/playlist_20241125_facepile.json new file mode 100644 index 0000000..1ce47ca --- /dev/null +++ b/testfiles/music_playlist/playlist_20241125_facepile.json @@ -0,0 +1,7973 @@ +{ + "responseContext": { + "visitorData": "CgtQaWpRQUhiMXdRWCiD6PG5BjIKCgJVUxIEEgAgUA%3D%3D", + "serviceTrackingParams": [ + { + "service": "GFEEDBACK", + "params": [ + { + "key": "has_unlimited_entitlement", + "value": "False" + }, + { + "key": "browse_id", + "value": "VLPL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "0" + }, + { + "key": "e", + "value": "23804281,24004644,24077241,24108448,24181174,24241378,24439361,24499532,24542367,24543668,24548629,24566687,24690006,51009781,51010235,51017346,51020570,51025415,51030103,51037344,51037349,51050361,51053689,51057848,51057857,51063643,51065188,51089007,51098299,51111738,51115184,51117319,51124104,51134506,51135269,51144925,51151423,51152050,51157411,51158514,51160545,51169118,51176511,51177817,51178320,51178335,51178344,51178351,51178982,51182850,51183910,51204329,51204615,51217504,51221146,51222382,51222973,51226858,51227037,51227292,51227778,51228850,51230241,51230478,51231814,51237842,51239093,51241028,51242448,51242767,51243005,51243940,51248255,51248734,51249751,51251836,51255676,51255680,51255743,51256074,51256084,51258066,51259135,51260454,51264009,51274583,51275785,51276557,51276565,51281227,51282075,51282080,51285421,51285717,51287196,51287500,51289926,51289933,51289938,51289954,51289976,51290036,51291889,51294322,51294583,51295576,51296439,51298020,51299235,51299627,51299710,51299724,51299971,51299999,51300008,51301686,51302680,51303666,51303667,51303669,51303789,51304155,51304558,51305839,51306557,51307502,51308045,51308060,51309486,51311027,51311038,51312144,51313109,51313149,51313767,51314677,51314690,51314703,51314714,51314729,51315041,51315912,51315921,51315926,51315935,51315942,51315947,51315956,51315963,51315968,51315977,51316844,51317749,51318845,51320165,51320246,51321622,51321893,51322669,51324024,51324941,51326281,51326641,51326932,51327140,51327167,51327186,51327613,51327616,51328144,51329458,51330194,51330475,51331487,51331502,51331522,51331533,51331538,51331547,51331552,51331563,51333563,51333879,51334432,51335364,51335392,51335594,51335646,51335927,51335975,51336633,51336756,51337186,51337349,51337850,51339127,51339163,51339747,51340611,51340662,51340953,51341226,51341730,51341975,51342298,51342856,51343110,51343244,51343368,51343687,51343829,51344022,51345125,51345295,51345629,51345763,51346046,51346803,51346816,51346827,51346844,51346849,51346872,51346885,51346904,51347325,51347584,51347986,51348208,51348349,51348672,51349288,51350656,51350678,51350682,51350968,51351367,51353052,51353303,51353497,51353752,51354569,51355268,51355273,51355287,51355294,51355303,51355312,51355339,51355344,51357497,51358769" + } + ] + }, + { + "service": "CSI", + "params": [ + { + "key": "c", + "value": "WEB_REMIX" + }, + { + "key": "cver", + "value": "1.20241118.01.00" + }, + { + "key": "yt_li", + "value": "0" + }, + { + "key": "GetBrowsePlaylistDetailPage_rid", + "value": "0x87dcdd24e2b0da76" + } + ] + }, + { + "service": "ECATCHER", + "params": [ + { + "key": "client.version", + "value": "1.20000101" + }, + { + "key": "client.name", + "value": "WEB_REMIX" + } + ] + } + ] + }, + "contents": { + "twoColumnBrowseResultsRenderer": { + "secondaryContents": { + "sectionListRenderer": { + "contents": [ + { + "musicPlaylistShelfRenderer": { + "playlistId": "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe", + "header": { + "musicSideAlignedItemRenderer": { + "trackingParams": "CN8BEMb-AyITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CNwBENjyAxgAIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/X82TrticM4A/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nivzZQqwACPH9pzwQwDy20PgV64Q", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CN4BEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CN0BEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Minecraft SHINE (Trailer)" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "1:20" + } + ], + "accessibility": { + "accessibilityData": { + "label": "1 minute, 20 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CNkBENjyAxgBIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/RPGLMuxkLCs/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kpG3-WbedUEIN2W58FsKa6UgvVJA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CNsBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CNoBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "DAS LAGERFEUERLIED - Minecraft SHINE #001 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "22:36" + } + ], + "accessibility": { + "accessibilityData": { + "label": "22 minutes, 36 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CNYBENjyAxgCIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/z-ALpnnQLrk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mbMsAE6zz4MehUtbjiTFKVHotD0Q", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CNgBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CNcBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "MAGISCHES FURZMONSTER - Minecraft SHINE #002 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "17:19" + } + ], + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 19 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CNMBENjyAxgDIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/_rrbTTv8zcQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k-47cLTpVH32KeqsUQcuDpHxUjQA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CNUBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CNQBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "UNTERIRDISCHE RIESENPILZHÖHLEN - Minecraft SHINE #003 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "24:07" + } + ], + "accessibility": { + "accessibilityData": { + "label": "24 minutes, 7 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CNABENjyAxgEIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/JE16OKTawLw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lqhDNUP-QmFKCBgxFv_WgMaCc63Q", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CNIBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CNEBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "BESTE AXT IM SPIEL GEFUNDEN?! - Minecraft SHINE #004 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "20:38" + } + ], + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 38 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CM0BENjyAxgFIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/RQNY0Wzm7DQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mOSs7fAPps74cF9lhm7FbRJyeHSA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CM8BEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CM4BEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "ERZERAUSCH IM MINENSCHACHT - Minecraft SHINE #005 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "23:25" + } + ], + "accessibility": { + "accessibilityData": { + "label": "23 minutes, 25 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CMoBENjyAxgGIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/uhy24PKBkd0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kJfmS0G07o6nFT9tKKaeX3x_FLaQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CMwBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CMsBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "FUSIONSOFEN & ERSTER IM NETHER?! - Minecraft SHINE #006 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "26:09" + } + ], + "accessibility": { + "accessibilityData": { + "label": "26 minutes, 9 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CMcBENjyAxgHIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/OL1hQadBHfs/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lqRJq6PnrJZVq8TeFWK4VIruBxQA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CMkBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CMgBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "EPISCHER ROGUEDUNGEON - Minecraft SHINE #007 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "25:34" + } + ], + "accessibility": { + "accessibilityData": { + "label": "25 minutes, 34 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CMQBENjyAxgIIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/Zge_SUfk0r8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n41mnRJl4yWSxOwxupspPqFqekjA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CMYBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CMUBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "DIAMANTZOMBIES auf NETHEREBENE - Minecraft SHINE #008 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "28:46" + } + ], + "accessibility": { + "accessibilityData": { + "label": "28 minutes, 46 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CMEBENjyAxgJIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/yFGIeU_IDE4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lbzdfq9miiP3GhAvBIqiDjeXZzDg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CMMBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CMIBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "HÖLLISCHE SCHLACHT um 2 DIAMANTBLÖCKE - Minecraft SHINE #009 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "27:49" + } + ], + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 49 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CL4BENjyAxgKIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/P6MVqfQzPIg/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kl1QNMQWUnHSg_K6qiRyIEpN-WQw", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CMABEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CL8BEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "MAGISCHER OBSIDIANTOTEM?! - Minecraft SHINE #010 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "25:26" + } + ], + "accessibility": { + "accessibilityData": { + "label": "25 minutes, 26 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CLsBENjyAxgLIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/9n0pLDn8Z_I/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nzp4un-py3mdKGnq43cu_B7GWCvQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CL0BEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CLwBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "GRÜNER FEUEROGER & WITHERWARZEN - Minecraft SHINE #011 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "24:42" + } + ], + "accessibility": { + "accessibilityData": { + "label": "24 minutes, 42 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CLgBENjyAxgMIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/oXbx2YtIkeQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lQ0JdJSCDuaRqNCcbjpjohG4tmwg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CLoBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CLkBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "MYSTERIÖSES Grab & ONYX ohne ENDE!! - Minecraft SHINE #012 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "25:18" + } + ], + "accessibility": { + "accessibilityData": { + "label": "25 minutes, 18 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CLUBENjyAxgNIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/pfBBTTwxo8Q/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lTpGAZOMN6khRpFIiu9VbgLwsauw", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CLcBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CLYBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "ATLANTIS ENTDECKT!! - Minecraft SHINE #013 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "24:39" + } + ], + "accessibility": { + "accessibilityData": { + "label": "24 minutes, 39 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CLIBENjyAxgOIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/WxtRqzxSAh0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mj2sEe61_ri9Qi2bOKKmpxXazdfg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CLQBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CLMBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "ZUSAMMENFASSUNG & Nodop's ANGRIFF - Minecraft SHINE #014 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "31:42" + } + ], + "accessibility": { + "accessibilityData": { + "label": "31 minutes, 42 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CK8BENjyAxgPIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/ianUckvxtLw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nAAEYhQfE5_Ph_he5nM9_HmU9wWQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CLEBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CLABEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "FRIEDHOFDUNGEON mit NODÖPCHEN - Minecraft SHINE #016 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "29:26" + } + ], + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 26 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CKwBENjyAxgQIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/eb2Ghj1g1ic/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mW-rtF12OP3BjTqHUlRj55SCh91A", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CK4BEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CK0BEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Die BESTE FALLE aller ZEITEN!! - Minecraft SHINE #015 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "22:04" + } + ], + "accessibility": { + "accessibilityData": { + "label": "22 minutes, 4 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CKkBENjyAxgRIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/8TpEsyVtCog/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3moI9jIudWeH7AMj4nsHxG4USDhOA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKsBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CKoBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "MEGAGEMETZEL zu FÜNFT - Minecraft SHINE #017 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "27:09" + } + ], + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 9 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CKYBENjyAxgSIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/KD_WAei4LMg/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nxeyexNK6QTi3VcRYTFpNhzGnluw", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKgBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CKcBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "WITHER BOSSFIGHT - Minecraft SHINE #018 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "27:25" + } + ], + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 25 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CKMBENjyAxgTIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/qfpOCrtweKk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kQCZL4AJPY0TiZixnWrZhs3zX3jA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKUBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CKQBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "LABERSTUNDE mit ArazhulHD - Minecraft SHINE #019 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "17:32" + } + ], + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 32 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CKABENjyAxgUIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/6gv3nrOA_bQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lxB3GOzVouBoQjUGjF-xg2sPCyIQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKIBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CKEBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "BUSRITUALE & Seltsame LEHRER - Minecraft SHINE #021 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "29:29" + } + ], + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 29 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CJ0BENjyAxgVIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/waaic6UnkU8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k2SAgNNjiG5NcOZTojVe4zjHkF2Q", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJ8BEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CJ4BEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "LEHM, LEHM und mehr LEEEHM!! - Minecraft SHINE #022 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "18:01" + } + ], + "accessibility": { + "accessibilityData": { + "label": "18 minutes, 1 second" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CJoBENjyAxgWIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/lSy4MLC_uV4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nZHeRK2vfO3nEE3YhoSZviQvrk1A", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJwBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CJsBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Neue DIMENSIONEN?? - Minecraft SHINE #023 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "28:02" + } + ], + "accessibility": { + "accessibilityData": { + "label": "28 minutes, 2 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CJcBENjyAxgXIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/BuN8-U_quok/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lWh9-QydZXiZwInLdePVuuXJ_Z2Q", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJkBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CJgBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "DUNGEONSTATUEN - Minecraft SHINE #024 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "26:37" + } + ], + "accessibility": { + "accessibilityData": { + "label": "26 minutes, 37 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CJQBENjyAxgYIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/g_UTG10nzaQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nNF-xrE9X4dGACkT_v9NPX9oiDuA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJYBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CJUBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "THYRIUMBOGEN & Dimensional DOORS - Minecraft SHINE #025 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "30:52" + } + ], + "accessibility": { + "accessibilityData": { + "label": "30 minutes, 52 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CJEBENjyAxgZIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/kNykFWaDbGw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nDffGijVSy58PFzp0NB-XsuHS8pg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJMBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CJIBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "MEIN ERSTER PVP KILL?! - Minecraft SHINE #026 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "31:09" + } + ], + "accessibility": { + "accessibilityData": { + "label": "31 minutes, 9 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CI4BENjyAxgaIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/gJF7vxCYTgY/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lMbARI9FgF0nPjZ7rsShWLgroSlA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJABEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CI8BEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "SPELLBOUND FARM - Minecraft SHINE #027 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "36:01" + } + ], + "accessibility": { + "accessibilityData": { + "label": "36 minutes, 1 second" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CIsBENjyAxgbIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/CodZMQ_Anc0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nkR6qDHsqGbsILeExY7BgZexQSkQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CI0BEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CIwBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "VIEEELE bunte ZAUBERPILZE - Minecraft SHINE #028 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "29:28" + } + ], + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 28 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CIgBENjyAxgcIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/oKHMTKJdZ_M/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mjXhxLdgQqHHdv8lA0YrDv59G84A", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIoBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CIkBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "STREAMUPDATE & BIOMREISE - Minecraft SHINE #029 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "29:31" + } + ], + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 31 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CIUBENjyAxgdIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/--O_Eyok_eE/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kQBqjgoM1MT3MusDWdkYIgmTKL9w", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIcBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CIYBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "AUF NACH TROPICRAFT - Minecraft SHINE #030 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "27:41" + } + ], + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 41 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CIIBENjyAxgeIhMIwp7x0973iQMVaONCBR2XfDZd", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/2bT3ljKMSo8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lyc2WBq364Ax9gHHZfJ1Ew2_20uA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIQBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CIMBEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "SCHATZTRUHE GEFUNDEN!! - Minecraft SHINE #031 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "23:49" + } + ], + "accessibility": { + "accessibilityData": { + "label": "23 minutes, 49 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CH8Q2PIDGB8iEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/YRAX_slrbsI/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kxCCJPbkTdrB9BH01YmwLYv8OMZA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIEBEIS_AiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CIABEMjeAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "ZAUBERWALD und TROPISCHER DSCHUNGEL - Minecraft SHINE #032 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "20:57" + } + ], + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 57 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CHwQ2PIDGCAiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/aRRbCEwUSuw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kYqyi6vO9kSl-zTUBNHXDI-p9xAQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CH4QhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CH0QyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "MESABIOM & JOUSTS - Minecraft SHINE #033 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "18:51" + } + ], + "accessibility": { + "accessibilityData": { + "label": "18 minutes, 51 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CHkQ2PIDGCEiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/5sV8SzTbJS8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3m5NRhG_o7_Ci-AxCaMID0wZbByoA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CHsQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CHoQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Komplette SMELTERY GEFUNDEN!! - Minecraft SHINE #034 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "23:25" + } + ], + "accessibility": { + "accessibilityData": { + "label": "23 minutes, 25 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CHYQ2PIDGCIiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/ZxxZlU2o1TE/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3le1mFnc_5-gTK1Ow51Yg4NTBhrvA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CHgQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CHcQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "ROGUEDUNGEON EXTREME - Minecraft SHINE #035 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "25:55" + } + ], + "accessibility": { + "accessibilityData": { + "label": "25 minutes, 55 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CHMQ2PIDGCMiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/gIjo5at4AxE/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3krl-qwkZnRmYMJIKaVxVTOIUU8kA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CHUQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CHQQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "LEGENDÄRER LOOT - Minecraft SHINE #036 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "23:25" + } + ], + "accessibility": { + "accessibilityData": { + "label": "23 minutes, 25 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CHAQ2PIDGCQiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/NSGk7-kyeEU/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nHEjckBWee5umayWXmHNxTCoUaKg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CHIQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CHEQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "I BELIEVE I CAN FLY - Minecraft SHINE #037 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "13:49" + } + ], + "accessibility": { + "accessibilityData": { + "label": "13 minutes, 49 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CG0Q2PIDGCUiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/cgJtZ7Otc4Y/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mLD7V-7FqftQmyXf7muAZpNDvupQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CG8QhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CG4QyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "ROGUEFRIEDHOF mit WITHERBOSS - Minecraft SHINE #038 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "23:12" + } + ], + "accessibility": { + "accessibilityData": { + "label": "23 minutes, 12 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CGoQ2PIDGCYiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/l5LQu3Q0nWY/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l6gXW1BZoRBII58tl47HW-V1UT8w", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CGwQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CGsQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "MONSTERCALYPSE & RETTUNGSAKTION - Minecraft SHINE #039 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "26:20" + } + ], + "accessibility": { + "accessibilityData": { + "label": "26 minutes, 20 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CGcQ2PIDGCciEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/YX4Z3ZlWUFc/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kPFPkgNfAr6nkTfcWvxawCIzDu2w", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CGkQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CGgQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "HINTERHALT von GEGNERN!! - Minecraft SHINE #040 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "30:47" + } + ], + "accessibility": { + "accessibilityData": { + "label": "30 minutes, 47 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CGQQ2PIDGCgiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/LoyvqR41lKw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l3jZd5n7Myg0_Ii_Ifltvqp-R4AA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CGYQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CGUQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "CARPENTER's BLOCKS - Minecraft SHINE #041 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "25:24" + } + ], + "accessibility": { + "accessibilityData": { + "label": "25 minutes, 24 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CGEQ2PIDGCkiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/HbQtMZbtx_Q/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mWss1o7iQ67zHFEitZtetz5GoGEg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CGMQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CGIQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "DER ETERNAL FROST!! - Minecraft SHINE #043 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "25:14" + } + ], + "accessibility": { + "accessibilityData": { + "label": "25 minutes, 14 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CF4Q2PIDGCoiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/0DHRbP9ecgw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n_QE05w3itQ1TRyc9E9y6L_06GLg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CGAQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CF8QyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "FROSTDUNGEONS in der OVERWORLD!! - Minecraft SHINE #044 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "26:07" + } + ], + "accessibility": { + "accessibilityData": { + "label": "26 minutes, 7 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CFsQ2PIDGCsiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/rFOFkvk-xus/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lj9ceijuhmYChED05kLBRpc9p_SQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CF0QhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CFwQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "BOSSRÜSTUNG XXL - Minecraft SHINE #045 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "34:10" + } + ], + "accessibility": { + "accessibilityData": { + "label": "34 minutes, 10 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CFgQ2PIDGCwiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/P8zxnSihJ_8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nbaYtnTCvIRa8SW36iucASQIguPg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CFoQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CFkQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "ZAUBERN & TROLLEN mit Nodop - Minecraft SHINE #046 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "30:28" + } + ], + "accessibility": { + "accessibilityData": { + "label": "30 minutes, 28 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CFUQ2PIDGC0iEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/RWgeHl9XkCY/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mrWtRCoS4SgY5L-ny8nQglQrjdPA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CFcQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CFYQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "NACHHILFE für BALUI - Minecraft SHINE #047 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "32:06" + } + ], + "accessibility": { + "accessibilityData": { + "label": "32 minutes, 6 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CFIQ2PIDGC4iEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/I1n539enNNY/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mcPWzeMscfdUZhr6h5BsZI78177A", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CFQQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CFMQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "SPIELER GETÖTET!! - Minecraft SHINE #048 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "30:36" + } + ], + "accessibility": { + "accessibilityData": { + "label": "30 minutes, 36 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CE8Q2PIDGC8iEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/70VKekyZz5g/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l5yRZbsMfTSLEfK1dNLuWILeDsEg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CFEQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CFAQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "VORBEREITUNG auf den DRACHEN - Minecraft SHINE #049 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "31:56" + } + ], + "accessibility": { + "accessibilityData": { + "label": "31 minutes, 56 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CEwQ2PIDGDAiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/2OWJ1bwFu6Y/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lugfNC-Zh8G5uQLHoAxhnS0G9sZg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CE4QhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CE0QyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Donnernder ENDERDRACHENKAMPF - Minecraft SHINE #050 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "28:38" + } + ], + "accessibility": { + "accessibilityData": { + "label": "28 minutes, 38 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CEkQ2PIDGDEiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/zLiSA2i-niw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mb20op3gDkg9U4NklTIOQe7kUaNA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CEsQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CEoQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Superspitzhacke & Necrotic Bones - Minecraft SHINE #051 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "20:53" + } + ], + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 53 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CEYQ2PIDGDIiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/wyXlw7nMpko/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l00tU-IXggLeXkPJRJGsJ8BPhA1A", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CEgQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CEcQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "TREMEP, das ENDERAUGE!! - Minecraft SHINE #052 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "32:04" + } + ], + "accessibility": { + "accessibilityData": { + "label": "32 minutes, 4 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CEMQ2PIDGDMiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/NrU4fhzvFpA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kM1EYWvcRpgJl_Mw7Zg2TasKcBSg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CEUQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CEQQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "TORNADO & ENDERPOKALYPSE!! - Minecraft SHINE #053 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "27:34" + } + ], + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 34 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CEAQ2PIDGDQiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/1xhKegaA1hQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n2elhSKG8zA0QWoox-GJVSFhaBoA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CEIQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CEEQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "RIESIGE SMELTERY - Minecraft SHINE #054 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "29:56" + } + ], + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 56 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CD0Q2PIDGDUiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/9F4lZ8psBtg/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nRO-KNuojQya_YJdI5dfrk_LLgPg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CD8QhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CD4QyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "TINKER's CONSTRUCT - Minecraft SHINE #055 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "25:14" + } + ], + "accessibility": { + "accessibilityData": { + "label": "25 minutes, 14 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CDoQ2PIDGDYiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/G3uUtejX9to/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3laFrg1g0Y-9XlpbBEDfXAttnRIZQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CDwQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CDsQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "CUTLASS und HAMMERACTION - Minecraft SHINE #056 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "26:55" + } + ], + "accessibility": { + "accessibilityData": { + "label": "26 minutes, 55 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CDcQ2PIDGDciEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/-0Xn5pViCss/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mepxuqMea2FGk6pkCfYsixfLaocg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CDkQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CDgQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "QUARZFESTIVAL - Minecraft SHINE #057 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "22:33" + } + ], + "accessibility": { + "accessibilityData": { + "label": "22 minutes, 33 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CDQQ2PIDGDgiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/a7u71Fco99I/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n7aMGHQ6L6e6ujUrmSoSgboj5osg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CDYQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CDUQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "DUALWITHERKAMPF & EXOSUIT - Minecraft SHINE #058 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "22:57" + } + ], + "accessibility": { + "accessibilityData": { + "label": "22 minutes, 57 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CDEQ2PIDGDkiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/H6uUbvcgKdk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lL6wDfDt_wTa4HsOcZ3fql-nlBCQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CDMQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CDIQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "ALLE GETROLLT?! 1. APRIL!! - Minecraft SHINE #060 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "29:11" + } + ], + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 11 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CC4Q2PIDGDoiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/tPRTCauHtkw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k-Hw3vpTUncppf7Xg3kcBKxKSrlA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CDAQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CC8QyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "THAUMELONE - Minecraft SHINE #061 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "26:44" + } + ], + "accessibility": { + "accessibilityData": { + "label": "26 minutes, 44 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CCsQ2PIDGDsiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/pMKAQExcarM/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lhlWXYhK63IksNVSBOrbP8hHudpg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CC0QhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CCwQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "ICH BIN EIN MAGIER!! - Minecraft SHINE #062 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "20:02" + } + ], + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 2 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CCgQ2PIDGDwiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/7E-z-7KCdBI/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mYEE8T0T-5udk6CLh3SVx2AjMMvQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CCoQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CCkQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "ENDER PORTER und SPELLBOUND - Minecraft SHINE #063 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "28:35" + } + ], + "accessibility": { + "accessibilityData": { + "label": "28 minutes, 35 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CCUQ2PIDGD0iEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/EPtbC0ZVddo/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n23Y37oDfphp8kX6iep55VJGVrsA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CCcQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CCYQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "PORTABLE HOLE & Melonenstatuen - Minecraft SHINE #064 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "28:16" + } + ], + "accessibility": { + "accessibilityData": { + "label": "28 minutes, 16 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CCIQ2PIDGD4iEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/TpPHng0eGJs/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lnejqxwmupyk33UTgHgFWh1AYX2w", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CCQQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CCMQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "ZUKUNFT des PROJEKTS - Minecraft SHINE #065 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "20:15" + } + ], + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 15 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CB8Q2PIDGD8iEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/rt2QFQwJYcs/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kH8Y_MMEhrqwPxuMlXLPxqZM7XCg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CCEQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CCAQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "GIGANTISCHER METEOR!! - Minecraft SHINE #066 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "26:33" + } + ], + "accessibility": { + "accessibilityData": { + "label": "26 minutes, 33 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CBwQ2PIDGEAiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/WPyfaztFDQ4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mA90SjZqQTOFCyanCBkyGSeOkcXA", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CB4QhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CB0QyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Der EREBUS und die GHAST QUEEN - Minecraft SHINE #067 [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "28:07" + } + ], + "accessibility": { + "accessibilityData": { + "label": "28 minutes, 7 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CBkQ2PIDGEEiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/5lmumP0DaUw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3m_3yQx4232OWXHorx5wWMuPeqwqQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CBsQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "trackingParams": "CBoQyN4CIhMIwp7x0973iQMVaONCBR2XfDZd", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "MINI-BEST OF und KABOOM!! - Minecraft SHINE #069 (Finale) [Deutsch/HD]" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Chaosflo44" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "17:24" + } + ], + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 24 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "musicItemRendererDisplayPolicy": "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT" + } + } + ], + "collapsedItemCount": 66, + "trackingParams": "CBgQ9-MCGAAiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "contentsMultiSelectable": true + } + } + ], + "continuations": [ + { + "nextContinuationData": { + "continuation": "4qmFsgI0EiRWTFBMMUotNkpPY2tadEVfUDlYeDhEM2IyTzZ3MGlkaHVLQmUaDGtnRURDTTBHOEFFQQ%3D%3D", + "clickTrackingParams": "CBcQybcCIhMIwp7x0973iQMVaONCBR2XfDZd" + } + } + ], + "trackingParams": "CBYQui8iEwjCnvHT3veJAxVo40IFHZd8Nl0=" + } + }, + "tabs": [ + { + "tabRenderer": { + "content": { + "sectionListRenderer": { + "contents": [ + { + "musicResponsiveHeaderRenderer": { + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/X82TrticM4A/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nivzZQqwACPH9pzwQwDy20PgV64Q", + "width": 400, + "height": 225 + }, + { + "url": "https://i.ytimg.com/vi/X82TrticM4A/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3kax3LzLLiNq_qr1z49YRX5LkGrJw", + "width": 800, + "height": 450 + }, + { + "url": "https://i.ytimg.com/vi/X82TrticM4A/hq720.jpg?sqp=-oaymwEXCNUGEOADIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nHfTiuW5xV8GL3wAipEVvM34aUmA", + "width": 853, + "height": 480 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_UNSPECIFIED", + "trackingParams": "CBUQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + }, + "buttons": [ + { + "toggleButtonRenderer": { + "isToggled": false, + "isDisabled": false, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "trackingParams": "CBMQmE0YACITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "defaultNavigationEndpoint": { + "clickTrackingParams": "CBMQmE0YACITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CBQQ8FsiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CBQQ8FsiEwjCnvHT3veJAxVo40IFHZd8Nl0=" + } + } + } + } + } + }, + "accessibilityData": { + "accessibilityData": { + "label": "Save to library" + } + }, + "toggledAccessibilityData": { + "accessibilityData": { + "label": "Remove from library" + } + } + } + }, + { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CBIQyN4CGAEiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "watchPlaylistEndpoint": { + "playlistId": "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe", + "params": "wAEB" + } + }, + "trackingParams": "CBIQyN4CGAEiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "PAUSE" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Minecraft SHINE" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Minecraft SHINE" + } + } + } + }, + { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAcQpzsYAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "watchPlaylistEndpoint": { + "playlistId": "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CAcQpzsYAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBEQm_MFGAEiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLPL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe", + "params": "wAEB" + } + }, + "trackingParams": "CBEQm_MFGAEiEwjCnvHT3veJAxVo40IFHZd8Nl0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CA8Qvu4FGAIiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe", + "onEmptyQueue": { + "clickTrackingParams": "CA8Qvu4FGAIiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "watchEndpoint": { + "playlistId": "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CA8Qvu4FGAIiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CBAQyscDIhMIwp7x0973iQMVaONCBR2XfDZd" + } + } + } + } + ] + } + }, + "trackingParams": "CA8Qvu4FGAIiEwjCnvHT3veJAxVo40IFHZd8Nl0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CA0Q--8FGAMiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe", + "onEmptyQueue": { + "clickTrackingParams": "CA0Q--8FGAMiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "watchEndpoint": { + "playlistId": "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CA0Q--8FGAMiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CA4QyscDIhMIwp7x0973iQMVaONCBR2XfDZd" + } + } + } + } + ] + } + }, + "trackingParams": "CA0Q--8FGAMiEwjCnvHT3veJAxVo40IFHZd8Nl0=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save playlist to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CAsQhP8FGAQiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAwQ8FsiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CAwQ8FsiEwjCnvHT3veJAxVo40IFHZd8Nl0=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CAsQhP8FGAQiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe" + } + } + }, + "trackingParams": "CAsQhP8FGAQiEwjCnvHT3veJAxVo40IFHZd8Nl0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAkQw5QGGAUiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAoQ8FsiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CAoQ8FsiEwjCnvHT3veJAxVo40IFHZd8Nl0=" + } + } + } + } + } + }, + "trackingParams": "CAkQw5QGGAUiEwjCnvHT3veJAxVo40IFHZd8Nl0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAgQkfsFGAYiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "shareEntityEndpoint": { + "serializedShareEntity": "EiJQTDFKLTZKT2NrWnRFX1A5WHg4RDNiMk82dzBpZGh1S0Jl", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CAgQkfsFGAYiEwjCnvHT3veJAxVo40IFHZd8Nl0=" + } + } + ], + "trackingParams": "CAcQpzsYAiITCMKe8dPe94kDFWjjQgUdl3w2XQ==", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + ], + "title": { + "runs": [ + { + "text": "Minecraft SHINE" + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Playlist" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "trackingParams": "CAQQneEIGAAiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "description": { + "musicDescriptionShelfRenderer": { + "description": { + "runs": [ + { + "text": "SHINE - Survival Hardcore in New Environment: Auf einem Server machen sich tapfere Spieler auf, mystische Welten zu erkunden, magische Technologien zu erforschen und vorallem zu überleben..." + } + ] + }, + "moreButton": { + "toggleButtonRenderer": { + "isToggled": false, + "isDisabled": false, + "defaultIcon": { + "iconType": "EXPAND" + }, + "defaultText": { + "runs": [ + { + "text": "More" + } + ] + }, + "toggledIcon": { + "iconType": "COLLAPSE" + }, + "toggledText": { + "runs": [ + { + "text": "Less" + } + ] + }, + "trackingParams": "CAYQmE0iEwjCnvHT3veJAxVo40IFHZd8Nl0=" + } + }, + "trackingParams": "CAUQiPgDIhMIwp7x0973iQMVaONCBR2XfDZd", + "shelfStyle": "MUSIC_SHELF_STYLE_OPEN_DIALOG_ON_CLICK" + } + }, + "secondSubtitle": { + "runs": [ + { + "text": "2.1M views" + }, + { + "text": " • " + }, + { + "text": "66 tracks" + }, + { + "text": " • " + }, + { + "text": "28 hours" + } + ] + }, + "facepile": { + "avatarStackViewModel": { + "avatars": [ + { + "avatarViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_n9ALaLETwQH6_2WlXitIaIKV-IqBDWWquvyI2jucNAZaQ=s48-c-k-c0x00000000-no-cc-rj-rp" + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "avatarImageSize": "AVATAR_SIZE_XS" + } + } + ], + "text": { + "content": "Chaosflo44" + }, + "rendererContext": { + "accessibilityContext": { + "label": "Chaosflo44" + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CAQQneEIGAAiEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "browseEndpoint": { + "browseId": "UCQM0bS4_04-Y4JuYrgmnpZQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + } + } + } + } + } + } + } + } + ], + "trackingParams": "CAMQui8iEwjCnvHT3veJAxVo40IFHZd8Nl0=" + } + }, + "trackingParams": "CAIQ8JMBGAAiEwjCnvHT3veJAxVo40IFHZd8Nl0=" + } + } + ] + } + }, + "trackingParams": "CAAQhGciEwjCnvHT3veJAxVo40IFHZd8Nl0=", + "background": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/X82TrticM4A/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nivzZQqwACPH9pzwQwDy20PgV64Q", + "width": 400, + "height": 225 + }, + { + "url": "https://i.ytimg.com/vi/X82TrticM4A/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3kax3LzLLiNq_qr1z49YRX5LkGrJw", + "width": 800, + "height": 450 + }, + { + "url": "https://i.ytimg.com/vi/X82TrticM4A/hq720.jpg?sqp=-oaymwEXCNUGEOADIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nHfTiuW5xV8GL3wAipEVvM34aUmA", + "width": 853, + "height": 480 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_UNSPECIFIED", + "trackingParams": "CAEQhL8CIhMIwp7x0973iQMVaONCBR2XfDZd" + } + } +} From e6ec5ed255e1ec48b62019329dd1a4167110f6f1 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 25 Nov 2024 16:47:29 +0100 Subject: [PATCH 036/191] chore(release): release rustypipe v0.7.1 --- CHANGELOG.md | 12 ++++++++++++ Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7fc439..cedd5f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. +## [v0.7.1](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.7.0..rustypipe/v0.7.1) - 2024-11-25 + +### 🐛 Bug Fixes + +- Disable Android client - ([a846b72](https://codeberg.org/ThetaDev/rustypipe/commit/a846b729e3519e3d5e62bdf028d9b48a7f8ea2ce)) +- A/B test 18: music playlist facepile avatar model - ([6c8108c](https://codeberg.org/ThetaDev/rustypipe/commit/6c8108c94acf9ca2336381bdca7c97b24a809521)) + +### ⚙️ Miscellaneous Tasks + +- Add docs badge to README - ([706e881](https://codeberg.org/ThetaDev/rustypipe/commit/706e88134c0e94ce7d880735e9d31b3ff531a4f9)) + + ## [v0.7.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.6.0..rustypipe/v0.7.0) - 2024-11-10 ### 🚀 Features diff --git a/Cargo.toml b/Cargo.toml index 60213e6..788ceee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.7.0" +version = "0.7.1" rust-version = "1.67.1" edition.workspace = true authors.workspace = true From 72d46ee45b5601b8f5b5992f5f753572dd6ccfa0 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 25 Nov 2024 16:56:55 +0100 Subject: [PATCH 037/191] ci: fix setting YT_AUTHENTICATED variable --- .forgejo/workflows/ci.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index d83d2c0..7e55c5c 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -30,11 +30,12 @@ jobs: - name: 🧪 Test run: | printf "$RUSTYPIPE_CACHE" > rustypipe_cache.json + echo "authenticated=$YT_AUTHENTICATED" cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace env: ALL_PROXY: "http://warpproxy:8124" RUSTYPIPE_CACHE: "${{ secrets.RUSTYPIPE_CACHE }}" - YT_AUTHENTICATED: "${{ github.event_name != 'pull_request' }}" # no access to secrets for PRs + YT_AUTHENTICATED: "${{ secrets.RUSTYPIPE_CACHE != '' }}" - name: Move test report if: always() From 5c39bf4842b13d37a4277ea5506e15c179892ce5 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 1 Dec 2024 22:24:00 +0100 Subject: [PATCH 038/191] fix: replace futures dependency with futures-util --- Cargo.toml | 2 +- cli/Cargo.toml | 2 +- cli/src/main.rs | 2 +- codegen/Cargo.toml | 2 +- codegen/src/abtest.rs | 2 +- codegen/src/collect_album_types.rs | 2 +- codegen/src/collect_large_numbers.rs | 2 +- codegen/src/collect_playlist_dates.rs | 2 +- codegen/src/collect_video_dates.rs | 2 +- codegen/src/collect_video_durations.rs | 2 +- downloader/Cargo.toml | 2 +- downloader/src/lib.rs | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 788ceee..baa1305 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,7 +47,7 @@ time = { version = "0.3.10", features = [ "serde-human-readable", "serde-well-known", ] } -futures = "0.3.21" +futures-util = "0.3.31" ress = "0.11.0" phf = "0.11.0" phf_codegen = "0.11.0" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index d993126..3fb1441 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -45,7 +45,7 @@ rustypipe = { workspace = true, features = ["rss"] } rustypipe-downloader.workspace = true reqwest.workspace = true tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } -futures.workspace = true +futures-util.workspace = true serde.workspace = true serde_json.workspace = true diff --git a/cli/src/main.rs b/cli/src/main.rs index 7517568..99eb039 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -10,7 +10,7 @@ use std::{ use clap::{Parser, Subcommand, ValueEnum}; use const_format::formatcp; -use futures::stream::{self, StreamExt}; +use futures_util::stream::{self, StreamExt}; use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; use owo_colors::OwoColorize; use rustypipe::{ diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml index 7a0e5d1..024d8e5 100644 --- a/codegen/Cargo.toml +++ b/codegen/Cargo.toml @@ -12,7 +12,7 @@ publish = false rustypipe = { path = "../" } reqwest.workspace = true tokio = { workspace = true, features = ["rt-multi-thread"] } -futures.workspace = true +futures-util.workspace = true serde.workspace = true serde_json.workspace = true serde_with.workspace = true diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index 071a400..c50db7d 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -1,7 +1,7 @@ use std::collections::BTreeMap; use anyhow::{bail, Result}; -use futures::{stream, StreamExt}; +use futures_util::{stream, StreamExt}; use indicatif::{ProgressBar, ProgressStyle}; use num_enum::TryFromPrimitive; use once_cell::sync::Lazy; diff --git a/codegen/src/collect_album_types.rs b/codegen/src/collect_album_types.rs index 965f37d..b245ba9 100644 --- a/codegen/src/collect_album_types.rs +++ b/codegen/src/collect_album_types.rs @@ -1,6 +1,6 @@ use std::{collections::BTreeMap, fs::File, io::BufReader}; -use futures::stream::{self, StreamExt}; +use futures_util::stream::{self, StreamExt}; use path_macro::path; use rustypipe::{ client::{ClientType, RustyPipe, RustyPipeQuery}, diff --git a/codegen/src/collect_large_numbers.rs b/codegen/src/collect_large_numbers.rs index e9ebbb7..b8bb08e 100644 --- a/codegen/src/collect_large_numbers.rs +++ b/codegen/src/collect_large_numbers.rs @@ -6,7 +6,7 @@ use std::{ }; use anyhow::{Context, Result}; -use futures::{stream, StreamExt}; +use futures_util::{stream, StreamExt}; use once_cell::sync::Lazy; use path_macro::path; use regex::Regex; diff --git a/codegen/src/collect_playlist_dates.rs b/codegen/src/collect_playlist_dates.rs index 12279cf..4dbc782 100644 --- a/codegen/src/collect_playlist_dates.rs +++ b/codegen/src/collect_playlist_dates.rs @@ -5,7 +5,7 @@ use std::{ io::BufReader, }; -use futures::{stream, StreamExt}; +use futures_util::{stream, StreamExt}; use ordered_hash_map::OrderedHashMap; use path_macro::path; use rustypipe::{ diff --git a/codegen/src/collect_video_dates.rs b/codegen/src/collect_video_dates.rs index 472df8c..38a157a 100644 --- a/codegen/src/collect_video_dates.rs +++ b/codegen/src/collect_video_dates.rs @@ -3,7 +3,7 @@ use std::{ fs::File, }; -use futures::{stream, StreamExt}; +use futures_util::{stream, StreamExt}; use path_macro::path; use rustypipe::{ client::{RustyPipe, RustyPipeQuery}, diff --git a/codegen/src/collect_video_durations.rs b/codegen/src/collect_video_durations.rs index fd097e9..9ee06df 100644 --- a/codegen/src/collect_video_durations.rs +++ b/codegen/src/collect_video_durations.rs @@ -5,7 +5,7 @@ use std::{ }; use anyhow::Result; -use futures::{stream, StreamExt}; +use futures_util::{stream, StreamExt}; use path_macro::path; use rustypipe::{ client::{ClientType, RustyPipe, RustyPipeQuery}, diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 9369331..0f4ba5d 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -37,7 +37,7 @@ rustypipe.workspace = true once_cell.workspace = true regex.workspace = true thiserror.workspace = true -futures.workspace = true +futures-util.workspace = true reqwest = { workspace = true, features = ["stream"] } rand.workspace = true tokio = { workspace = true, features = ["macros", "fs", "process"] } diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 97a51c4..f30af85 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -15,7 +15,7 @@ use std::{ time::Duration, }; -use futures::stream::{self, StreamExt}; +use futures_util::stream::{self, StreamExt}; use once_cell::sync::Lazy; use rand::Rng; use regex::Regex; From c4feff37a5989097b575c43d89c26427d92d77b9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 1 Dec 2024 22:29:24 +0100 Subject: [PATCH 039/191] fix: lifetime-related lints --- src/client/mod.rs | 3 ++- src/util/timeago.rs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index fd796d6..dce1592 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1503,7 +1503,7 @@ impl RustyPipeQuery { ctype: ClientType, localized: bool, visitor_data: &'a str, - ) -> YTContext { + ) -> YTContext<'a> { let (hl, gl) = if localized { (self.opts.lang, self.opts.country) } else { @@ -2008,6 +2008,7 @@ struct MapRespOptions<'a> { unlocalized: bool, } +#[allow(clippy::needless_lifetimes)] impl<'a> MapRespCtx<'a> { /// Create a [`MapRespCtx`] for testing #[cfg(test)] diff --git a/src/util/timeago.rs b/src/util/timeago.rs index bcd25f0..7e1913f 100644 --- a/src/util/timeago.rs +++ b/src/util/timeago.rs @@ -169,7 +169,7 @@ impl<'a> TaTokenParser<'a> { } } -impl<'a> Iterator for TaTokenParser<'a> { +impl Iterator for TaTokenParser<'_> { type Item = TimeAgo; fn next(&mut self) -> Option { From 5262becca1e9e3e8262833764ef18c23bc401172 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 12 Dec 2024 23:47:03 +0100 Subject: [PATCH 040/191] fix: remove empty tempfile after unsuccessful download --- downloader/src/lib.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index f30af85..6107235 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -10,6 +10,7 @@ use std::{ cmp::Ordering, ffi::OsString, ops::Range, + os::unix::fs::MetadataExt, path::{Path, PathBuf}, sync::Arc, time::Duration, @@ -1214,7 +1215,7 @@ async fn download_single_file( .open(&output_path_tmp) .await?; - if is_gvideo && size.is_some() { + let res = if is_gvideo && size.is_some() { download_chunks_by_param( http, &mut file, @@ -1226,7 +1227,7 @@ async fn download_single_file( #[cfg(feature = "indicatif")] pb, ) - .await?; + .await } else { download_chunks_by_header( http, @@ -1238,7 +1239,19 @@ async fn download_single_file( #[cfg(feature = "indicatif")] pb, ) - .await?; + .await + }; + + drop(file); + if let Err(e) = res { + // Remove temporary file if nothing was downloaded (e.g. 403 error) + if std::fs::metadata(&output_path_tmp) + .map(|md| md.size() == 0) + .unwrap_or_default() + { + _ = std::fs::remove_file(&output_path_tmp); + } + return Err(e); } fs::rename(&output_path_tmp, &output_path).await?; From 44ae456d2c654679837da8ec44932c44b1b01195 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 13 Dec 2024 03:47:37 +0100 Subject: [PATCH 041/191] fix: limit retry attempts to fetch client versions and deobf data --- src/client/mod.rs | 168 ++++++++++++++++++++++++++++------------------ tests/youtube.rs | 17 +++-- 2 files changed, 112 insertions(+), 73 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index dce1592..6c693be 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -470,7 +470,7 @@ impl Default for RustyPipeOpts { } } -#[derive(Default, Debug)] +#[derive(Debug)] struct CacheHolder { clients: HashMap>>, deobf: AsyncRwLock>, @@ -488,15 +488,20 @@ struct CacheData { } #[derive(Default, Debug, Clone, Serialize, Deserialize)] -#[serde(untagged)] -enum CacheEntry { - #[default] - None, - Some { - #[serde(with = "time::serde::rfc3339")] - last_update: OffsetDateTime, - data: T, - }, +#[serde(default)] +struct CacheEntry { + #[serde( + with = "time::serde::rfc3339::option", + skip_serializing_if = "Option::is_none" + )] + last_update: Option, + /// If the entry failed to update, wait until this time before retrying + #[serde( + with = "time::serde::rfc3339::option", + skip_serializing_if = "Option::is_none" + )] + retry_at: Option, + data: Option, } #[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq)] @@ -515,36 +520,34 @@ struct RequestResult { impl CacheEntry { /// Get the content of the cache if it is still fresh fn get(&self) -> Option<&T> { - match self { - CacheEntry::Some { last_update, data } => { - if last_update < &(OffsetDateTime::now_utc() - time::Duration::hours(24)) { - None - } else { - Some(data) - } - } - CacheEntry::None => None, - } + self.data.as_ref().filter(|_| { + self.last_update.unwrap_or(OffsetDateTime::UNIX_EPOCH) + > (OffsetDateTime::now_utc() - time::Duration::days(1)) + }) } /// Get the content of the cache, even if it is expired fn get_expired(&self) -> Option<&T> { - match self { - CacheEntry::Some { data, .. } => Some(data), - CacheEntry::None => None, - } + self.data.as_ref() } fn is_none(&self) -> bool { - matches!(self, Self::None) + self.data.is_none() + } + + fn should_retry(&self) -> bool { + self.retry_at + .map(|d| OffsetDateTime::now_utc() > d) + .unwrap_or(true) } } impl From for CacheEntry { fn from(f: T) -> Self { - Self::Some { - last_update: util::now_sec(), - data: f, + Self { + last_update: Some(util::now_sec()), + retry_at: None, + data: Some(f), } } } @@ -1004,30 +1007,38 @@ impl RustyPipe { match client.get() { Some(cdata) => cdata.version.clone().into(), None => { - tracing::debug!("getting {client_type:?} client version"); - match self.extract_client_version(client_type).await { - Ok(version) => { - *client = CacheEntry::from(ClientData { - version: version.clone(), - }); - drop(client); - self.store_cache().await; - version.into() - } - Err(e) => { - tracing::warn!( - "{e}, falling back to hardcoded {client_type:?} client version" - ); - match client_type { - ClientType::Desktop => DESKTOP_CLIENT_VERSION, - ClientType::DesktopMusic => DESKTOP_MUSIC_CLIENT_VERSION, - ClientType::Mobile => MOBILE_CLIENT_VERSION, - ClientType::Tv => TV_CLIENT_VERSION, - _ => unreachable!(), + if client.should_retry() { + tracing::debug!("getting {client_type:?} client version"); + match self.extract_client_version(client_type).await { + Ok(version) => { + *client = CacheEntry::from(ClientData { + version: version.clone(), + }); + drop(client); + self.store_cache().await; + return version.into(); + } + Err(e) => { + client.retry_at = Some(util::now_sec() + time::Duration::hours(1)); + drop(client); + self.store_cache().await; + tracing::warn!( + "{e}, falling back to hardcoded {client_type:?} client version" + ); } - .into() } + } else { + tracing::warn!("falling back to hardcoded {client_type:?} client version") } + + match client_type { + ClientType::Desktop => DESKTOP_CLIENT_VERSION, + ClientType::DesktopMusic => DESKTOP_MUSIC_CLIENT_VERSION, + ClientType::Mobile => MOBILE_CLIENT_VERSION, + ClientType::Tv => TV_CLIENT_VERSION, + _ => unreachable!(), + } + .into() } } } @@ -1040,27 +1051,50 @@ impl RustyPipe { match deobf_data.get() { Some(deobf_data) => Ok(deobf_data.clone()), None => { - tracing::debug!("getting deobf data"); + // Only attempt to fetch deobf data every 24 hours to avoid a flood of error reports + // if the client JS cannot be parsed + if deobf_data.should_retry() { + tracing::debug!("getting deobf data"); - match DeobfData::extract(self.inner.http.clone(), self.inner.reporter.as_deref()) + match DeobfData::extract( + self.inner.http.clone(), + self.inner.reporter.as_deref(), + ) .await - { - Ok(new_data) => { - // Write new data to the cache - *deobf_data = CacheEntry::from(new_data.clone()); - drop(deobf_data); - self.store_cache().await; - Ok(new_data) - } - Err(e) => { - // Try to fall back to expired cache data if available, otherwise return error - match deobf_data.get_expired() { - Some(d) => { - tracing::warn!("could not get new deobf data ({e}), falling back to expired cache"); - Ok(d.clone()) - } - None => Err(e), + { + Ok(new_data) => { + // Write new data to the cache + *deobf_data = CacheEntry::from(new_data.clone()); + drop(deobf_data); + self.store_cache().await; + Ok(new_data) } + Err(e) => { + // Try to fall back to expired cache data if available, otherwise return error + deobf_data.retry_at = Some(util::now_sec() + time::Duration::days(1)); + let res = match deobf_data.get_expired() { + Some(d) => { + tracing::warn!("could not get new deobf data ({e}), falling back to expired cache"); + Ok(d.clone()) + } + None => Err(e), + }; + drop(deobf_data); + self.store_cache().await; + res + } + } + } else { + match deobf_data.get_expired() { + Some(d) => { + tracing::warn!( + "could not get new deobf data, falling back to expired cache" + ); + Ok(d.clone()) + } + None => Err(Error::Extraction(ExtractionError::Deobfuscation( + "could not get deobf data".into(), + ))), } } } diff --git a/tests/youtube.rs b/tests/youtube.rs index 45f4f85..5b663f4 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -140,7 +140,7 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) assert_eq!(audio.codec, AudioCodec::Opus); // Desktop client now requires pot token so the streams cannot be tested here - if client_type != ClientType::Desktop { + if !matches!(client_type, ClientType::Desktop | ClientType::Mobile) { check_video_stream(video).await; check_video_stream(audio).await; } @@ -2673,6 +2673,7 @@ async fn music_genre(#[case] id: &str, #[case] name: &str, rp: RustyPipe, unloca #[rstest] #[tokio::test] +#[ignore] async fn music_genre_not_found(rp: RustyPipe) { let err = rp .query() @@ -2710,10 +2711,18 @@ async fn invalid_ctoken(#[case] ep: ContinuationEndpoint, rp: RustyPipe) { } } +/// YouTube Music allows searching for ISRC codes +/// This feature does not seem to work with all languages and it has changed in the past. +/// This test is used to check which languages are working #[rstest] #[tokio::test] async fn isrc_search_languages(rp: RustyPipe) { for lang in LANGUAGES { + // flaky for English, skipping for now + if matches!(lang, Language::EnIn) { + continue; + } + let tracks = rp .query() .lang(lang) @@ -2721,11 +2730,7 @@ async fn isrc_search_languages(rp: RustyPipe) { .await .unwrap(); let working = tracks.items.items.iter().any(|t| t.id == "g0iRiJ_ck48"); - assert_eq!( - working, - !matches!(lang, Language::En | Language::EnGb | Language::EnIn), - "lang: {lang}" - ); + assert!(working, "lang: {lang}"); } } From f5437aa127b2b7c5a08839643e30ea1ec989d30b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 13 Dec 2024 03:55:06 +0100 Subject: [PATCH 042/191] fix: deobfuscation function extraction --- src/deobfuscate.rs | 150 +++++++++++++++++++++++++++++++++++++-------- src/util/mod.rs | 18 +++--- 2 files changed, 135 insertions(+), 33 deletions(-) diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index cbcaf50..b767302 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -1,7 +1,9 @@ -use fancy_regex::Regex as FancyRegex; +use std::collections::HashMap; + use once_cell::sync::Lazy; use regex::Regex; use reqwest::Client; +use ress::tokens::Token; use serde::{Deserialize, Serialize}; use crate::{ @@ -93,10 +95,14 @@ impl Deobfuscator { /// Deobfuscate the `n` stream URL parameter to circumvent throttling pub fn deobfuscate_nsig(&self, nsig: &str) -> Result { let res = self.ctx.call_function(DEOBF_NSIG_FUNC_NAME, [nsig])?; - - res.into_string().ok_or(DeobfError::Other( + let res = res.into_string().ok_or(DeobfError::Other( "nsig deobfuscation fn returned no string", - )) + ))?; + tracing::debug!("deobf nsig: {nsig} -> {res}"); + if res.starts_with("enhanced_except_") || res.ends_with(nsig) { + return Err(DeobfError::Other("nsig fn returned an exception")); + } + Ok(res) } } @@ -104,18 +110,16 @@ const DEOBF_SIG_FUNC_NAME: &str = "deobf_sig"; const DEOBF_NSIG_FUNC_NAME: &str = "deobf_nsig"; fn get_sig_fn_name(player_js: &str) -> Result { - static FUNCTION_REGEXES: Lazy<[FancyRegex; 6]> = Lazy::new(|| { - [ - FancyRegex::new(r#"(?:\b|[^a-zA-Z0-9$])([a-zA-Z0-9$]{2,})\s*=\s*function\(\s*a\s*\)\s*\{\s*a\s*=\s*a\.split\(\s*""\s*\)"#).unwrap(), - FancyRegex::new(r"\bm=([a-zA-Z0-9$]{2,})\(decodeURIComponent\(h\.s\)\)").unwrap(), - FancyRegex::new(r"\bc&&\(c=([a-zA-Z0-9$]{2,})\(decodeURIComponent\(c\)\)").unwrap(), - FancyRegex::new(r#"([\w$]+)\s*=\s*function\((\w+)\)\{\s*\2=\s*\2\.split\(""\)\s*;"#).unwrap(), - FancyRegex::new(r#"\b([\w$]{2,})\s*=\s*function\((\w+)\)\{\s*\2=\s*\2\.split\(""\)\s*;"#).unwrap(), - FancyRegex::new(r"\bc\s*&&\s*d\.set\([^,]+\s*,\s*(:encodeURIComponent\s*\()([a-zA-Z0-9$]+)\(").unwrap(), - ] - }); + let pattern = [ + r#"\b(?P[a-zA-Z0-9$]+)&&\((?P=var)=(?P[a-zA-Z0-9$]{2,})\(decodeURIComponent\((?P=var)\)\)"#, + r#"(?P[a-zA-Z0-9$]+)\s*=\s*function\(\s*(?P[a-zA-Z0-9$]+)\s*\)\s*{\s*(?P=arg)\s*=\s*(?P=arg)\.split\(\s*""\s*\)\s*;\s*[^}]+;\s*return\s+(?P=arg)\.join\(\s*""\s*\)"#, + r#"(?:\b|[^a-zA-Z0-9$])(?P[a-zA-Z0-9$]{2,})\s*=\s*function\(\s*a\s*\)\s*{\s*a\s*=\s*a\.split\(\s*""\s*\)(?:;[a-zA-Z0-9$]{2}\.[a-zA-Z0-9$]{2}\(a,\d+\))?"#, + r#"\b[cs]\s*&&\s*[adf]\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P[a-zA-Z0-9$]+)\("#, + r#"\b[a-zA-Z0-9]+\s*&&\s*[a-zA-Z0-9]+\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P[a-zA-Z0-9$]+)\("#, + r#"\bm=(?P[a-zA-Z0-9$]{2,})\(decodeURIComponent\(h\.s\)\)"#, + ]; - util::get_cg_from_fancy_regexes(FUNCTION_REGEXES.iter(), player_js, 1) + util::get_cg_from_fancy_regexes(&pattern, player_js, "sig") .ok_or(DeobfError::Extraction("deobf function name")) } @@ -190,14 +194,18 @@ fn get_nsig_fn_names(player_js: &str) -> impl Iterator + '_ { }) } -fn extract_js_fn(js: &str, name: &str) -> Result { - let scan = ress::Scanner::new(js); +fn extract_js_fn(js: &str, offset: usize, name: &str) -> Result { + let scan = ress::Scanner::new(&js[offset..]); let mut state = 0; let mut level = 0; let mut start = 0; let mut end = 0; + let mut period_before = false; + let mut last_ident = None; + let mut idents: HashMap = HashMap::new(); + for item in scan { let it = item?; let token = it.token; @@ -217,8 +225,8 @@ fn extract_js_fn(js: &str, name: &str) -> Result { state = 0; } } - // Looking for begin/end braces 2 => { + // Looking for begin/end braces if token.matches_punct(ress::tokens::Punct::OpenBrace) { level += 1; } else if token.matches_punct(ress::tokens::Punct::CloseBrace) { @@ -230,29 +238,106 @@ fn extract_js_fn(js: &str, name: &str) -> Result { break; } } + + if let Token::Ident(id) = &token { + if !period_before && *id != "NaN".into() { + last_ident = Some(id.to_string()); + } + } else if last_ident.is_some() + && !token.matches_punct(ress::tokens::Punct::OpenParen) + && !token.matches_punct(ress::tokens::Punct::Period) + { + let n = idents.entry(last_ident.unwrap()).or_default(); + *n += 1; + last_ident = None; + } else { + last_ident = None; + } } _ => break, }; + period_before = token.matches_punct(ress::tokens::Punct::Period); } if state != 3 { return Err(DeobfError::Extraction("javascript function")); } - Ok(js[start..end].to_owned()) + let fn_range = (offset + start)..(offset + end); + let mut code = format!("var {};", &js[fn_range.clone()]); + + for (ident, _) in idents.into_iter().filter(|(_, v)| *v == 1) { + let var_pattern_str = format!(r#"\b{}\b\s*=[^=]"#, regex::escape(&ident)); + let re = Regex::new(&var_pattern_str).unwrap(); + let found_variable = re + .find_iter(js) + .filter(|m| !fn_range.contains(&m.start()) && !fn_range.contains(&m.end())) + .find_map(|m| extract_js_var(&js[m.start()..])); + if let Some(var_code) = found_variable { + code = format!("var {var_code}; {code}"); + } + } + Ok(code) +} + +fn extract_js_var(js: &str) -> Option { + let scan = ress::Scanner::new(js); + let mut braces: Vec = Vec::new(); + let mut end = 0; + + let close_brace = |braces: &mut Vec, c: u8| -> Option<()> { + if let Some(brace) = braces.last() { + if *brace == c { + braces.pop(); + Some(()) + } else { + None + } + } else { + None + } + }; + + for item in scan { + let it = item.ok()?; + let token = it.token; + + if let Token::Punct(p) = &token { + match p { + ress::tokens::Punct::OpenBrace => braces.push(b'}'), + ress::tokens::Punct::OpenBracket => braces.push(b'['), + ress::tokens::Punct::OpenParen => braces.push(b'('), + ress::tokens::Punct::CloseBrace => close_brace(&mut braces, b'}')?, + ress::tokens::Punct::CloseBracket => close_brace(&mut braces, b']')?, + ress::tokens::Punct::CloseParen => close_brace(&mut braces, b')')?, + ress::tokens::Punct::Comma | ress::tokens::Punct::SemiColon => { + if braces.is_empty() { + end = it.span.start; + break; + } + } + _ => {} + } + } + } + Some(js[0..end].to_owned()) } /// Verify if the deobfuscation function successfully processes a random input string fn verify_fn(js_fn: &str, fn_name: &str) -> Result<(), DeobfError> { let ctx = quick_js::Context::new().or(Err(DeobfError::Other("could not create QuickJS rt")))?; ctx.eval(js_fn)?; + let testinp = util::generate_content_playback_nonce(); let res = ctx - .call_function(fn_name, [util::generate_content_playback_nonce()])? + .call_function(fn_name, [testinp.to_owned()])? .into_string() .ok_or(DeobfError::Other("deobfuscation fn returned no string"))?; if res.is_empty() { return Err(DeobfError::Other("deobfuscation fn returned empty string")); } + if res.starts_with("enhanced_except_") || res.ends_with(&testinp) { + return Err(DeobfError::Other("nsig fn returned an exception")); + } Ok(()) } @@ -263,8 +348,9 @@ fn get_nsig_fn(player_js: &str) -> Result { .find(&function_base) .ok_or(DeobfError::Extraction("could not find function base"))?; - let js_fn = extract_js_fn(&player_js[offset..], name) - .map(|s| format!("var {};{}", s, caller_function(DEOBF_NSIG_FUNC_NAME, name)))?; + let code = extract_js_fn(player_js, offset, name)?; + + let js_fn = format!("{}{}", code, caller_function(DEOBF_NSIG_FUNC_NAME, name)); verify_fn(&js_fn, DEOBF_NSIG_FUNC_NAME)?; tracing::debug!("successfully extracted nsig fn `{name}`"); Ok(js_fn) @@ -383,10 +469,10 @@ c[36](c[8],c[32]),c[20](c[25],c[10]),c[2](c[22],c[8]),c[32](c[20],c[16]),c[32](c #[test] fn t_extract_js_fn() { let base_js = "Wka = function(d){let x=10/2;return /,,[/,913,/](,)}/}let a = 42;"; - let res = extract_js_fn(base_js, "Wka").unwrap(); + let res = extract_js_fn(base_js, 0, "Wka").unwrap(); assert_eq!( res, - "Wka = function(d){let x=10/2;return /,,[/,913,/](,)}/}" + "var Wka = function(d){let x=10/2;return /,,[/,913,/](,)}/};" ); } @@ -394,10 +480,22 @@ c[36](c[8],c[32]),c[20](c[25],c[10]),c[2](c[22],c[8]),c[32](c[20],c[16]),c[32](c fn t_extract_js_fn_eviljs() { // Evil JavaScript code containing braces within strings and regular expressions let base_js = "Wka = function(d){var x = [/,,/,913,/(,)}/,\"abcdef}\\\"\",];var y = 10/2/1;return x[1][y];}//some={}random-padding+;"; - let res = extract_js_fn(base_js, "Wka").unwrap(); + let res = extract_js_fn(base_js, 0, "Wka").unwrap(); assert_eq!( res, - "Wka = function(d){var x = [/,,/,913,/(,)}/,\"abcdef}\\\"\",];var y = 10/2/1;return x[1][y];}" + "var Wka = function(d){var x = [/,,/,913,/(,)}/,\"abcdef}\\\"\",];var y = 10/2/1;return x[1][y];};" + ); + } + + #[test] + fn t_extract_js_fn_outside_vars() { + // Function depending on outside variables + let base_js = "let a = 42;foo();var b=11;bar();Wka = function(d){var x=1+2+a*b;return x;}"; + let res = extract_js_fn(base_js, 0, "Wka").unwrap(); + assert!( + res == "var a = 42; var b=11; var Wka = function(d){var x=1+2+a*b;return x;};" + || res == "var b=11; var a = 42; var Wka = function(d){var x=1+2+a*b;return x;};", + "got {res}" ); } diff --git a/src/util/mod.rs b/src/util/mod.rs index 0d36425..9349e07 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -13,7 +13,7 @@ use std::{ }; use base64::Engine; -use fancy_regex::Regex as FancyRegex; +use fancy_regex::RegexBuilder; use once_cell::sync::Lazy; use rand::Rng; use regex::Regex; @@ -56,13 +56,17 @@ pub fn get_cg_from_regex(regex: &Regex, text: &str, cg: usize) -> Option } /// Return the given capture group that matches first in a list of fancy regexes -pub fn get_cg_from_fancy_regexes<'a, I>(mut regexes: I, text: &str, cg: usize) -> Option -where - I: Iterator, -{ +pub fn get_cg_from_fancy_regexes(regexes: &[&str], text: &str, cg_name: &str) -> Option { regexes - .find_map(|pattern| pattern.captures(text).ok().flatten()) - .and_then(|c| c.get(cg).map(|c| c.as_str().to_owned())) + .iter() + .find_map(|pattern| { + let re = RegexBuilder::new(pattern) + .backtrack_limit(10_000_000) + .build() + .unwrap(); + re.captures(text).ok().flatten() + }) + .and_then(|c| c.name(cg_name).map(|c| c.as_str().to_owned())) } /// Generate a random string with given length and byte charset. From 51b6ab3780b581829d468e5d4687dabd73e93d8c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 13 Dec 2024 03:56:58 +0100 Subject: [PATCH 043/191] chore(release): release rustypipe v0.7.2 --- CHANGELOG.md | 10 ++++++++++ Cargo.toml | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cedd5f2..67c0d8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. +## [v0.7.2](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.7.1..rustypipe/v0.7.2) - 2024-12-13 + +### 🐛 Bug Fixes + +- Replace futures dependency with futures-util - ([5c39bf4](https://codeberg.org/ThetaDev/rustypipe/commit/5c39bf4842b13d37a4277ea5506e15c179892ce5)) +- Lifetime-related lints - ([c4feff3](https://codeberg.org/ThetaDev/rustypipe/commit/c4feff37a5989097b575c43d89c26427d92d77b9)) +- Limit retry attempts to fetch client versions and deobf data - ([44ae456](https://codeberg.org/ThetaDev/rustypipe/commit/44ae456d2c654679837da8ec44932c44b1b01195)) +- Deobfuscation function extraction - ([f5437aa](https://codeberg.org/ThetaDev/rustypipe/commit/f5437aa127b2b7c5a08839643e30ea1ec989d30b)) + + ## [v0.7.1](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.7.0..rustypipe/v0.7.1) - 2024-11-25 ### 🐛 Bug Fixes diff --git a/Cargo.toml b/Cargo.toml index baa1305..5300698 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.7.1" +version = "0.7.2" rust-version = "1.67.1" edition.workspace = true authors.workspace = true From 69ef6ae51e9b09a9b9c06057e717bf6f054c9803 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 13 Dec 2024 04:04:43 +0100 Subject: [PATCH 044/191] fix: replace deprecated call to time::util::days_in_year_month --- src/util/date.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/date.rs b/src/util/date.rs index 25af51c..afa07e9 100644 --- a/src/util/date.rs +++ b/src/util/date.rs @@ -13,7 +13,7 @@ pub fn shift_months(date: Date, months: i32) -> Date { } let month = Month::try_from(month as u8).unwrap(); - let month_days = time::util::days_in_year_month(year, month); + let month_days = month.length(year); day = day.min(month_days); Date::from_calendar_date(year, month, day).unwrap() From d536704b9c90f23282fabb2197e921c1cac7ac98 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 13 Dec 2024 04:12:45 +0100 Subject: [PATCH 045/191] chore(release): release rustypipe-downloader v0.2.5 --- downloader/CHANGELOG.md | 12 ++++++++++++ downloader/Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md index 1e2279c..32ec018 100644 --- a/downloader/CHANGELOG.md +++ b/downloader/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. +## [v0.2.5](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.4..rustypipe-downloader/v0.2.5) - 2024-12-13 + +### 🐛 Bug Fixes + +- Replace futures dependency with futures-util - ([5c39bf4](https://codeberg.org/ThetaDev/rustypipe/commit/5c39bf4842b13d37a4277ea5506e15c179892ce5)) +- Remove empty tempfile after unsuccessful download - ([5262bec](https://codeberg.org/ThetaDev/rustypipe/commit/5262becca1e9e3e8262833764ef18c23bc401172)) + +### ⚙️ Miscellaneous Tasks + +- Add docs badge to README - ([706e881](https://codeberg.org/ThetaDev/rustypipe/commit/706e88134c0e94ce7d880735e9d31b3ff531a4f9)) + + ## [v0.2.4](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.3..rustypipe-downloader/v0.2.4) - 2024-11-10 ### ⚙️ Miscellaneous Tasks diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 0f4ba5d..b37b268 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-downloader" -version = "0.2.4" +version = "0.2.5" rust-version = "1.67.1" edition.workspace = true authors.workspace = true From 80147413ee3190bb530f8f6b02738bcc787a6444 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 13 Dec 2024 22:36:01 +0100 Subject: [PATCH 046/191] fix: nsig fn extra variable extraction --- src/deobfuscate.rs | 76 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 65 insertions(+), 11 deletions(-) diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index b767302..c4d8ca1 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -206,6 +206,11 @@ fn extract_js_fn(js: &str, offset: usize, name: &str) -> Result = HashMap::new(); + let global_objects = [ + "NaN", "Infinity", "Object", "Function", "Boolean", "Symbol", "Error", "Number", "BigInt", + "Math", "Date", "String", "RegExp", "Array", "Map", "Set", + ]; + for item in scan { let it = item?; let token = it.token; @@ -240,12 +245,14 @@ fn extract_js_fn(js: &str, offset: usize, name: &str) -> Result Result Option { +fn extract_js_var(js: &str) -> Option<&str> { let scan = ress::Scanner::new(js); let mut braces: Vec = Vec::new(); let mut end = 0; @@ -299,17 +313,29 @@ fn extract_js_var(js: &str) -> Option { }; for item in scan { - let it = item.ok()?; + let it = match item { + Ok(it) => it, + Err(e) => { + // If the variable definition is the last statement in a closure and followed by a } + // the scanner thinks the code is invalid + if e.msg == "unmatched close brace" && braces.is_empty() { + end = e.idx; + break; + } else { + return None; + } + } + }; let token = it.token; if let Token::Punct(p) = &token { match p { - ress::tokens::Punct::OpenBrace => braces.push(b'}'), + ress::tokens::Punct::OpenBrace => braces.push(b'{'), ress::tokens::Punct::OpenBracket => braces.push(b'['), ress::tokens::Punct::OpenParen => braces.push(b'('), - ress::tokens::Punct::CloseBrace => close_brace(&mut braces, b'}')?, - ress::tokens::Punct::CloseBracket => close_brace(&mut braces, b']')?, - ress::tokens::Punct::CloseParen => close_brace(&mut braces, b')')?, + ress::tokens::Punct::CloseBrace => close_brace(&mut braces, b'{')?, + ress::tokens::Punct::CloseBracket => close_brace(&mut braces, b'[')?, + ress::tokens::Punct::CloseParen => close_brace(&mut braces, b'(')?, ress::tokens::Punct::Comma | ress::tokens::Punct::SemiColon => { if braces.is_empty() { end = it.span.start; @@ -320,7 +346,13 @@ fn extract_js_var(js: &str) -> Option { } } } - Some(js[0..end].to_owned()) + if end > 0 { + Some(&js[0..end]) + } else if braces.is_empty() { + Some(js) + } else { + None + } } /// Verify if the deobfuscation function successfully processes a random input string @@ -499,6 +531,28 @@ c[36](c[8],c[32]),c[20](c[25],c[10]),c[2](c[22],c[8]),c[32](c[20],c[16]),c[32](c ); } + #[test] + fn t_extract_js_fn_outside_vars2() { + // Function depending on outside variables + let base_js = "{let a = {v1:1,v2:2}}foo();Wka = function(d){var x=1+2+a.v1;return x;}"; + let res = extract_js_fn(base_js, 0, "Wka").unwrap(); + assert_eq!( + res, + "var a = {v1:1,v2:2}; var Wka = function(d){var x=1+2+a.v1;return x;};" + ); + } + + #[test] + fn t_extract_js_fn_outside_vars3() { + // Function depending on outside variables + let base_js = "Wka = function(d){var x=1+2+a[0];return x;};let a=[1,2,3]"; + let res = extract_js_fn(base_js, 0, "Wka").unwrap(); + assert_eq!( + res, + "var a=[1,2,3]; var Wka = function(d){var x=1+2+a[0];return x;};" + ); + } + #[test] fn t_get_nsig_fn() { let res = get_nsig_fn(&TEST_JS).unwrap(); From 53e5846286e8db920622152c2a0a57ddc7c41d25 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 15 Dec 2024 17:49:51 +0100 Subject: [PATCH 047/191] chore: update user agent --- src/client/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 6c693be..a4dfeec 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -280,7 +280,7 @@ impl OauthToken { } } -const DEFAULT_UA: &str = "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0"; +const DEFAULT_UA: &str = "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0"; const MOBILE_UA: &str = "Mozilla/5.0 (Android 14; Mobile; rv:129.0) Gecko/129.0 Firefox/129.0"; const TV_UA: &str = "Mozilla/5.0 (SMART-TV; Linux; Tizen 5.0) AppleWebKit/538.1 (KHTML, like Gecko) Version/5.0 NativeTVAds Safari/538.1"; From 8cadbc1a4c865d085e30249dba0f353472456a32 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 16 Dec 2024 01:31:04 +0100 Subject: [PATCH 048/191] fix: deobf function extraction, allow $ in variable names --- src/deobfuscate.rs | 147 ++++++++++++++++++++++++++++++------- testfiles/deobf/.gitignore | 1 + 2 files changed, 120 insertions(+), 28 deletions(-) create mode 100644 testfiles/deobf/.gitignore diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index c4d8ca1..c948887 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -111,16 +111,16 @@ const DEOBF_NSIG_FUNC_NAME: &str = "deobf_nsig"; fn get_sig_fn_name(player_js: &str) -> Result { let pattern = [ - r#"\b(?P[a-zA-Z0-9$]+)&&\((?P=var)=(?P[a-zA-Z0-9$]{2,})\(decodeURIComponent\((?P=var)\)\)"#, - r#"(?P[a-zA-Z0-9$]+)\s*=\s*function\(\s*(?P[a-zA-Z0-9$]+)\s*\)\s*{\s*(?P=arg)\s*=\s*(?P=arg)\.split\(\s*""\s*\)\s*;\s*[^}]+;\s*return\s+(?P=arg)\.join\(\s*""\s*\)"#, - r#"(?:\b|[^a-zA-Z0-9$])(?P[a-zA-Z0-9$]{2,})\s*=\s*function\(\s*a\s*\)\s*{\s*a\s*=\s*a\.split\(\s*""\s*\)(?:;[a-zA-Z0-9$]{2}\.[a-zA-Z0-9$]{2}\(a,\d+\))?"#, - r#"\b[cs]\s*&&\s*[adf]\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P[a-zA-Z0-9$]+)\("#, - r#"\b[a-zA-Z0-9]+\s*&&\s*[a-zA-Z0-9]+\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P[a-zA-Z0-9$]+)\("#, - r#"\bm=(?P[a-zA-Z0-9$]{2,})\(decodeURIComponent\(h\.s\)\)"#, + r#"\b(?P[a-zA-Z0-9_$]+)&&\((?P=var)=(?P[a-zA-Z0-9_$]{2,})\(decodeURIComponent\((?P=var)\)\)"#, + r#"(?P[a-zA-Z0-9_$]+)\s*=\s*function\(\s*(?P[a-zA-Z0-9_$]+)\s*\)\s*{\s*(?P=arg)\s*=\s*(?P=arg)\.split\(\s*""\s*\)\s*;\s*[^}]+;\s*return\s+(?P=arg)\.join\(\s*""\s*\)"#, + r#"(?:\b|[^a-zA-Z0-9_$])(?P[a-zA-Z0-9_$]{2,})\s*=\s*function\(\s*a\s*\)\s*{\s*a\s*=\s*a\.split\(\s*""\s*\)(?:;[a-zA-Z0-9_$]{2}\.[a-zA-Z0-9_$]{2}\(a,\d+\))?"#, + r#"\b[cs]\s*&&\s*[adf]\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P[a-zA-Z0-9_$]+)\("#, + r#"\b[a-zA-Z0-9]+\s*&&\s*[a-zA-Z0-9]+\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P[a-zA-Z0-9_$]+)\("#, + r#"\bm=(?P[a-zA-Z0-9_$]{2,})\(decodeURIComponent\(h\.s\)\)"#, ]; util::get_cg_from_fancy_regexes(&pattern, player_js, "sig") - .ok_or(DeobfError::Extraction("deobf function name")) + .ok_or(DeobfError::Extraction("sig fn name")) } fn caller_function(mapped_name: &str, fn_name: &str) -> String { @@ -135,20 +135,19 @@ fn get_sig_fn(player_js: &str) -> Result { dfunc_name.replace('$', "\\$") ); let function_pattern = Regex::new(&function_pattern_str) - .map_err(|_| DeobfError::Other("could not parse function pattern regex"))?; + .map_err(|_| DeobfError::Other("could not parse sig fn pattern regex"))?; let deobfuscate_function = format!( "var {};", &function_pattern .captures(player_js) - .ok_or(DeobfError::Extraction("deobf function"))?[1] + .ok_or(DeobfError::Extraction("sig fn"))?[1] ); - static HELPER_OBJECT_NAME_REGEX: Lazy = - Lazy::new(|| Regex::new(r";([A-Za-z0-9_\$]{2,3})\...\(").unwrap()); - let helper_object_name = HELPER_OBJECT_NAME_REGEX + let helper_object_name_pattern = Regex::new(r";([A-Za-z0-9_\$]{2,3})\...\(").unwrap(); + let helper_object_name = helper_object_name_pattern .captures(&deobfuscate_function) - .ok_or(DeobfError::Extraction("helper object name"))? + .ok_or(DeobfError::Extraction("sig fn helper object name"))? .get(1) .unwrap() .as_str(); @@ -162,11 +161,12 @@ fn get_sig_fn(player_js: &str) -> Result { let player_js_nonl = player_js.replace('\n', ""); let helper_object = &helper_pattern .captures(&player_js_nonl) - .ok_or(DeobfError::Extraction("helper object"))?[1]; + .ok_or(DeobfError::Extraction("sig fn helper object"))?[1]; let js_fn = helper_object.to_owned() + &deobfuscate_function + &caller_function(DEOBF_SIG_FUNC_NAME, &dfunc_name); + tracing::trace!("sig_fn: {js_fn}"); verify_fn(&js_fn, DEOBF_SIG_FUNC_NAME)?; tracing::debug!("successfully extracted sig fn `{dfunc_name}`"); @@ -176,7 +176,8 @@ fn get_sig_fn(player_js: &str) -> Result { fn get_nsig_fn_names(player_js: &str) -> impl Iterator + '_ { static FUNCTION_NAME_REGEX: Lazy = Lazy::new(|| { // x.get( .. y=functionName[array_num](z) .. x.set( - Regex::new(r#"(?:\w\.get\(|index\.m3u8).+\w=(\w{2,})\[(\d+)\]\(\w\).+\w\.set\("#).unwrap() + Regex::new(r#"(?:[a-zA-Z0-9_$]\.get\(|index\.m3u8).+[a-zA-Z]=([a-zA-Z0-9_$]{2,})(?:\[(\d+)\])?\([a-zA-Z0-9]\).+[a-zA-Z0-9]\.set\("#) + .unwrap() }); FUNCTION_NAME_REGEX @@ -184,13 +185,18 @@ fn get_nsig_fn_names(player_js: &str) -> impl Iterator + '_ { .filter_map(|fname_match| { let function_name = &fname_match[1]; - let array_num = fname_match[2].parse::().ok()?; - let array_pattern_str = - format!(r#"var {}\s*=\s*\[(.+?)]"#, regex::escape(function_name)); - let array_pattern = Regex::new(&array_pattern_str).ok()?; + match fname_match.get(2) { + Some(array_num) => { + let array_num = array_num.as_str().parse::().ok()?; + let array_pattern_str = + format!(r#"var {}\s*=\s*\[(.+?)]"#, regex::escape(function_name)); + let array_pattern = Regex::new(&array_pattern_str).ok()?; - let array_str = &array_pattern.captures(player_js)?[1]; - array_str.split(',').nth(array_num).map(str::to_owned) + let array_str = &array_pattern.captures(player_js)?[1]; + array_str.split(',').nth(array_num).map(str::to_owned) + } + None => Some(function_name.to_owned()), + } }) } @@ -383,6 +389,7 @@ fn get_nsig_fn(player_js: &str) -> Result { let code = extract_js_fn(player_js, offset, name)?; let js_fn = format!("{}{}", code, caller_function(DEOBF_NSIG_FUNC_NAME, name)); + tracing::trace!("sig_fn: {js_fn}"); verify_fn(&js_fn, DEOBF_NSIG_FUNC_NAME)?; tracing::debug!("successfully extracted nsig fn `{name}`"); Ok(js_fn) @@ -408,10 +415,9 @@ async fn get_player_js_url(http: &Client) -> Result { .error_for_status()?; let text = resp.text().await?; - static PLAYER_HASH_PATTERN: Lazy = Lazy::new(|| { - Regex::new(r"https:\\/\\/www\.youtube\.com\\/s\\/player\\/([a-z0-9]{8})\\/").unwrap() - }); - let player_hash = &PLAYER_HASH_PATTERN + let player_hash_pattern = + Regex::new(r"https:\\/\\/www\.youtube\.com\\/s\\/player\\/([a-z0-9]{8})\\/").unwrap(); + let player_hash = &player_hash_pattern .captures(&text) .ok_or(DeobfError::Extraction("player hash"))?[1]; @@ -426,10 +432,9 @@ async fn get_response(http: &Client, url: &str) -> Result { } fn get_sts(player_js: &str) -> Result { - static STS_PATTERN: Lazy = - Lazy::new(|| Regex::new("signatureTimestamp[=:](\\d+)").unwrap()); + let sts_pattern = Regex::new("signatureTimestamp[=:](\\d+)").unwrap(); - Ok(STS_PATTERN + Ok(sts_pattern .captures(player_js) .ok_or(DeobfError::Extraction("sts"))?[1] .to_owned()) @@ -437,6 +442,8 @@ fn get_sts(player_js: &str) -> Result { #[cfg(test)] mod tests { + use std::path::PathBuf; + use super::*; use crate::util::tests::TESTFILES; use path_macro::path; @@ -579,6 +586,90 @@ c[36](c[8],c[32]),c[20](c[25],c[10]),c[2](c[22],c[8]),c[32](c[20],c[16]),c[32](c assert_eq!(url.len(), 73); } + async fn player_js_file(js_hash: &str) -> (String, PathBuf) { + let url = + format!("https://www.youtube.com/s/player/{js_hash}/player_ias.vflset/en_US/base.js"); + let mut js_path = path!(*TESTFILES / "deobf" / "player_js"); + std::fs::create_dir_all(&js_path).unwrap(); + js_path.push(format!("{js_hash}.js")); + if !js_path.is_file() { + let http = reqwest::Client::new(); + let res = http + .get(&url) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + let content = res.text().await.unwrap(); + let js_path_tmp = js_path.with_extension("tmp"); + std::fs::write(&js_path_tmp, &content).unwrap(); + std::fs::rename(&js_path_tmp, &js_path).unwrap(); + } + (url, js_path) + } + + // Test cases from https://github.com/yt-dlp/yt-dlp/blob/master/test/test_youtube_signature.py + + #[rstest] + #[case("6ed0d907", "AOq0QJ8wRAIgXmPlOPSBkkUs1bYFYlJCfe29xx8j7v1pDL2QwbdV96sCIEzpWqMGkFR20CFOg51Tp-7vj_EMu-m37KtXJoOySqa0")] + #[case("3bb1f723", "MyOSJXtKI3m-uME_jv7-pT12gOFC02RFkGoqWpzE0Cs69VdbwQ0LDp1v7j8xx92efCJlYFYb1sUkkBSPOlPmXgIARw8JQ0qOAOAA")] + #[case("2f1832d2", "0QJ8wRAIgXmPlOPSBkkUs1bYFYlJCfe29xxAj7v1pDL0QwbdV96sCIEzpWqMGkFR20CFOg51Tp-7vj_EMu-m37KtXJ2OySqa0q")] + #[tokio::test] + #[traced_test] + async fn sig_tests(#[case] js_hash: &str, #[case] exp_sig: &str) { + let (js_url, js_path) = player_js_file(js_hash).await; + let player_js = std::fs::read_to_string(js_path).unwrap(); + let deobf_data = DeobfData::extract_fns(&js_url, &player_js).unwrap(); + let deobf = Deobfuscator::new(&deobf_data).unwrap(); + + let deobf_sig = deobf.deobfuscate_sig("2aq0aqSyOoJXtK73m-uME_jv7-pT15gOFC02RFkGMqWpzEICs69VdbwQ0LDp1v7j8xx92efCJlYFYb1sUkkBSPOlPmXgIARw8JQ0qOAOAA").unwrap(); + assert_eq!(deobf_sig, exp_sig, "js: {js_hash}"); + } + + #[rstest] + #[case("7862ca1f", "X_LCxVDjAavgE5t", "yxJ1dM6iz5ogUg")] + #[case("9216d1f7", "SLp9F5bwjAdhE9F-", "gWnb9IK2DJ8Q1w")] + #[case("f8cb7a3b", "oBo2h5euWy6osrUt", "ivXHpm7qJjJN")] + #[case("2dfe380c", "oBo2h5euWy6osrUt", "3DIBbn3qdQ")] + #[case("f1ca6900", "cu3wyu6LQn2hse", "jvxetvmlI9AN9Q")] + #[case("8040e515", "wvOFaY-yjgDuIEg5", "HkfBFDHmgw4rsw")] + #[case("e06dea74", "AiuodmaDDYw8d3y4bf", "ankd8eza2T6Qmw")] + #[case("5dd88d1d", "kSxKFLeqzv_ZyHSAt", "n8gS8oRlHOxPFA")] + #[case("324f67b9", "xdftNy7dh9QGnhW", "22qLGxrmX8F1rA")] + #[case("4c3f79c5", "TDCstCG66tEAO5pR9o", "dbxNtZ14c-yWyw")] + #[case("c81bbb4a", "gre3EcLurNY2vqp94", "Z9DfGxWP115WTg")] + #[case("1f7d5369", "batNX7sYqIJdkJ", "IhOkL_zxbkOZBw")] + #[case("009f1d77", "5dwFHw8aFWQUQtffRq", "audescmLUzI3jw")] + #[case("dc0c6770", "5EHDMgYLV6HPGk_Mu-kk", "n9lUJLHbxUI0GQ")] + #[case("113ca41c", "cgYl-tlYkhjT7A", "hI7BBr2zUgcmMg")] + #[case("c57c113c", "M92UUMHa8PdvPd3wyM", "3hPqLJsiNZx7yA")] + #[case("5a3b6271", "B2j7f_UPT4rfje85Lu_e", "m5DmNymaGQ5RdQ")] + #[case("7a062b77", "NRcE3y3mVtm_cV-W", "VbsCYUATvqlt5w")] + #[case("dac945fd", "o8BkRxXhuYsBCWi6RplPdP", "3Lx32v_hmzTm6A")] + #[case("6f20102c", "lE8DhoDmKqnmJJ", "pJTTX6XyJP2BYw")] + #[case("cfa9e7cb", "aCi3iElgd2kq0bxVbQ", "QX1y8jGb2IbZ0w")] + #[case("8c7583ff", "1wWCVpRR96eAmMI87L", "KSkWAVv1ZQxC3A")] + #[case("b7910ca8", "_hXMCwMt9qE310D", "LoZMgkkofRMCZQ")] + #[case("590f65a6", "1tm7-g_A9zsI8_Lay_", "xI4Vem4Put_rOg")] + #[case("b22ef6e7", "b6HcntHGkvBLk_FRf", "kNPW6A7FyP2l8A")] + #[case("3400486c", "lL46g3XifCKUZn1Xfw", "z767lhet6V2Skl")] + #[case("20dfca59", "-fLCxedkAk4LUTK2", "O8kfRq1y1eyHGw")] + #[case("b12cc44b", "keLa5R2U00sR9SQK", "N1OGyujjEwMnLw")] + #[case("3bb1f723", "gK15nzVyaXE9RsMP3z", "ZFFWFLPWx9DEgQ")] + #[case("2f1832d2", "YWt1qdbe8SAfkoPHW5d", "RrRjWQOJmBiP")] + #[tokio::test] + #[traced_test] + async fn nsig_tests(#[case] js_hash: &str, #[case] nsig_in: &str, #[case] expect: &str) { + let (js_url, js_path) = player_js_file(js_hash).await; + let player_js = std::fs::read_to_string(js_path).unwrap(); + let deobf_data = DeobfData::extract_fns(&js_url, &player_js).unwrap(); + let deobf = Deobfuscator::new(&deobf_data).unwrap(); + + let deobf_nsig = deobf.deobfuscate_nsig(nsig_in).unwrap(); + assert_eq!(deobf_nsig, expect, "js: {js_hash}"); + } + #[tokio::test] #[traced_test] async fn t_update() { diff --git a/testfiles/deobf/.gitignore b/testfiles/deobf/.gitignore new file mode 100644 index 0000000..d0f09fa --- /dev/null +++ b/testfiles/deobf/.gitignore @@ -0,0 +1 @@ +/player_js From 162959ca4513a03496776fae905b4bf20c79899c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 18 Dec 2024 19:31:24 +0100 Subject: [PATCH 049/191] fix: remove leading zero-width-space from comments, ensure space after links --- src/deobfuscate.rs | 1 + src/serializer/text.rs | 43 ++++++++++++++++++++++++++++++++++++++---- tests/youtube.rs | 2 +- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index c948887..dc1c2c8 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -250,6 +250,7 @@ fn extract_js_fn(js: &str, offset: usize, name: &str) -> Result DeserializeAs<'de, TextComponents> for AttributedText { .next() .map(Verification::from) .unwrap_or_default(); + let mut components: Vec = Vec::with_capacity(runs.len() + 1); + + fn process_txt_before(components: &[TextComponent], txt_before: Cow<'_, str>) -> String { + // YouTube sometimes inserts zero-width spaces at the start of comments + let txt_before = match txt_before.strip_prefix('\u{200b}') { + Some(t) => Cow::Borrowed(t), + None => txt_before, + }; + // Ensure that text after link components always begins with a space + if !txt_before + .chars() + .next() + .map(|c| c.is_whitespace()) + .unwrap_or_default() + && components + .last() + .map(|c| { + !matches!(c, TextComponent::Text { .. }) + && !c + .as_str() + .chars() + .last() + .map(|c| c.is_whitespace()) + .unwrap_or_default() + }) + .unwrap_or_default() + { + format!(" {txt_before}") + } else { + txt_before.into_owned() + } + } - let mut components = Vec::with_capacity(runs.len() + 1); for run in runs { - let txt_before = take_chars(run.start_index); + let txt_before = process_txt_before(&components, take_chars(run.start_index).into()); let txt_run = take_chars(run.start_index + run.length); if !txt_before.is_empty() { @@ -461,7 +492,7 @@ impl<'de> DeserializeAs<'de, TextComponents> for AttributedText { }) } - let end = chars.as_str(); + let end = process_txt_before(&components, chars.as_str().into()); if !end.is_empty() { components.push(TextComponent::new(end)); } @@ -683,6 +714,10 @@ impl From for String { } impl TextComponents { + pub fn is_empty(&self) -> bool { + self.0.iter().all(|c| c.as_str().is_empty()) + } + /// Return the string representation of the first text component pub fn first_str(&self) -> &str { self.0 diff --git a/tests/youtube.rs b/tests/youtube.rs index 5b663f4..b531cd7 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -30,7 +30,7 @@ use rustypipe::validate; #[case::desktop(ClientType::Desktop)] #[case::tv(ClientType::Tv)] #[case::mobile(ClientType::Mobile)] -// #[case::android(ClientType::Android)] +#[case::android(ClientType::Android)] #[case::ios(ClientType::Ios)] #[tokio::test] async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) { From 258f18a99d848ae7e6808beddad054037a3b3799 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 18 Dec 2024 19:33:43 +0100 Subject: [PATCH 050/191] feat: log warning when generating report --- src/report.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/report.rs b/src/report.rs index a0a793c..85477fa 100644 --- a/src/report.rs +++ b/src/report.rs @@ -137,8 +137,12 @@ impl FileReporter { fn _report(&self, report: &Report) -> Result<(), String> { let report_path = get_report_path(&self.path, report, "json").map_err(|e| e.to_string())?; - let file = File::create(report_path).map_err(|e| e.to_string())?; + let file = File::create(&report_path).map_err(|e| e.to_string())?; serde_json::to_writer_pretty(&file, &report).map_err(|e| e.to_string())?; + tracing::warn!( + "created report: {}", + report_path.to_str().unwrap_or_default() + ); Ok(()) } } From dceba442fe1a1d5d8d2a6d9422ff699593131f6d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 18 Dec 2024 19:35:31 +0100 Subject: [PATCH 051/191] feat: get comment replies, rich text formatting --- cli/src/main.rs | 107 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 77 insertions(+), 30 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index 99eb039..a1793e0 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -16,8 +16,10 @@ use owo_colors::OwoColorize; use rustypipe::{ client::{ClientType, RustyPipe}, model::{ - richtext::ToPlaintext, traits::YtEntity, ArtistId, MusicSearchResult, TrackItem, TrackType, - UrlTarget, Verification, YouTubeItem, + richtext::{RichText, ToPlaintext}, + traits::YtEntity, + ArtistId, Comment, MusicSearchResult, TrackItem, TrackType, UrlTarget, Verification, + YouTubeItem, }, param::{search_filter, ChannelVideoTab, Country, Language, StreamFilter}, report::FileReporter, @@ -439,6 +441,67 @@ fn print_verification(verification: Verification) { } } +fn print_comments(comments: &[Comment]) { + print_h2("Comments"); + for c in comments { + if let Some(author) = &c.author { + anstream::print!("{} [{}]", author.name.cyan(), author.id); + print_verification(author.verification); + } else { + anstream::print!("{}", "Unknown author".magenta()); + } + if c.by_owner { + print!(" (Owner)"); + } + println!(); + print_richtext(&c.text); + anstream::print!("{} {}", "Likes:".blue(), c.like_count.unwrap_or_default()); + if c.hearted { + anstream::print!(" {}", "♥".red()); + } + println!(); + if let Some(ctoken) = &c.replies.ctoken { + println!("replies:{ctoken}"); + } + println!(); + } +} + +fn print_richtext(text: &RichText) { + for c in &text.0 { + match c { + rustypipe::model::richtext::TextComponent::Text { text, style } => { + if !text.is_empty() { + let mut tstyle = owo_colors::Style::new(); + + if style.bold { + tstyle = tstyle.bold(); + } + if style.italic { + tstyle = tstyle.italic(); + } + if style.strikethrough { + tstyle = tstyle.strikethrough(); + } + anstream::print!("{}", text.style(tstyle)); + } + } + rustypipe::model::richtext::TextComponent::Web { url, .. } => { + anstream::print!("{}", url.underline()); + } + rustypipe::model::richtext::TextComponent::YouTube { text, target } => { + if matches!(target, UrlTarget::Channel { .. }) { + anstream::print!("{}", text.cyan()); + } else { + anstream::print!("{}", target.to_url().underline()); + } + } + _ => {} + } + } + println!(); +} + async fn download_video( dl: &Downloader, id: &str, @@ -679,6 +742,16 @@ async fn run() -> anyhow::Result<()> { player, client_type, } => { + if let Some(ctoken) = id.strip_prefix("replies:") { + let mut replies = rp.query().video_comments(ctoken, None).await?; + replies.extend_limit(&rp.query(), limit).await?; + match format { + Some(format) => print_data(&replies.items, format, pretty), + None => print_comments(&replies.items), + } + return Ok(()); + } + let target = rp.query().resolve_string(&id, false).await?; match target { @@ -793,7 +866,7 @@ async fn run() -> anyhow::Result<()> { if details.is_live { anstream::println!("{}", "Livestream".red()); } - print_description(Some(details.description.to_plaintext())); + print_richtext(&details.description); if !details.recommended.is_empty() { print_h2("Recommended"); print_entities(&details.recommended.items, false); @@ -803,33 +876,7 @@ async fn run() -> anyhow::Result<()> { CommentsOrder::Latest => &details.latest_comments.items, }); if let Some(comment_list) = comment_list { - print_h2("Comments"); - for c in comment_list { - if let Some(author) = &c.author { - anstream::print!( - "{} [{}]", - author.name.cyan(), - author.id - ); - print_verification(author.verification); - } else { - anstream::print!("{}", "Unknown author".magenta()); - } - if c.by_owner { - print!(" (Owner)"); - } - println!(); - println!("{}", c.text.to_plaintext()); - anstream::print!( - "{} {}", - "Likes:".blue(), - c.like_count.unwrap_or_default() - ); - if c.hearted { - anstream::print!(" {}", "♥".red()); - } - println!("\n"); - } + print_comments(comment_list) } } } From 1b60c97a183b9d74b92df14b5b113c61aba1be7f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 18 Dec 2024 19:44:42 +0100 Subject: [PATCH 052/191] fix: update client versions, enable Opus audio with iOS client --- src/client/mod.rs | 81 +++++++++++++++++++++++++------------------- src/client/player.rs | 48 +++++++++++++------------- 2 files changed, 72 insertions(+), 57 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index a4dfeec..cef5916 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -83,14 +83,8 @@ pub enum ClientType { } impl ClientType { - fn is_web(self) -> bool { - match self { - ClientType::Desktop - | ClientType::DesktopMusic - | ClientType::Mobile - | ClientType::Tv => true, - ClientType::Android | ClientType::Ios => false, - } + fn needs_deobf(self) -> bool { + !matches!(self, ClientType::Ios) } } @@ -113,13 +107,19 @@ struct YTContext<'a> { struct ClientInfo<'a> { client_name: &'a str, client_version: Cow<'a, str>, + #[serde(skip_serializing_if = "str::is_empty")] + client_screen: &'a str, + #[serde(skip_serializing_if = "str::is_empty")] + device_model: &'a str, + #[serde(skip_serializing_if = "str::is_empty")] + os_name: &'a str, + #[serde(skip_serializing_if = "str::is_empty")] + os_version: &'a str, #[serde(skip_serializing_if = "Option::is_none")] - client_screen: Option<&'a str>, - #[serde(skip_serializing_if = "Option::is_none")] - device_model: Option<&'a str>, + android_sdk_version: Option, platform: &'a str, - #[serde(skip_serializing_if = "Option::is_none")] - original_url: Option<&'a str>, + #[serde(skip_serializing_if = "str::is_empty")] + original_url: &'a str, visitor_data: &'a str, hl: Language, gl: Country, @@ -132,10 +132,13 @@ impl Default for ClientInfo<'_> { Self { client_name: "", client_version: Cow::default(), - client_screen: None, - device_model: None, + client_screen: "", + device_model: "", + os_name: "", + os_version: "", + android_sdk_version: None, platform: "", - original_url: None, + original_url: "", visitor_data: "", hl: Language::En, gl: Country::Us, @@ -298,14 +301,14 @@ const YOUTUBE_TV_URL: &str = "https://www.youtube.com/tv"; const DISABLE_PRETTY_PRINT_PARAMETER: &str = "prettyPrint=false"; // Web client -const DESKTOP_CLIENT_VERSION: &str = "2.20241010.09.00"; -const DESKTOP_MUSIC_CLIENT_VERSION: &str = "1.20241007.00.00"; -const MOBILE_CLIENT_VERSION: &str = "2.20241011.01.00"; -const TV_CLIENT_VERSION: &str = "7.20241008.14.02"; +const DESKTOP_CLIENT_VERSION: &str = "2.20241216.05.00"; +const DESKTOP_MUSIC_CLIENT_VERSION: &str = "1.20241216.01.00"; +const MOBILE_CLIENT_VERSION: &str = "2.20241217.07.00"; +const TV_CLIENT_VERSION: &str = "7.20241211.14.00"; // Mobile app client -const APP_CLIENT_VERSION: &str = "18.03.33"; -const IOS_DEVICE_MODEL: &str = "iPhone14,5"; +const APP_CLIENT_VERSION: &str = "19.44.38"; +const IOS_DEVICE_MODEL: &str = "iPhone16,2"; const OAUTH_CLIENT_ID: &str = "861556708454-d6dlm3lh05idd8npek18k6be8ba3oc68.apps.googleusercontent.com"; @@ -321,7 +324,8 @@ static VISITOR_DATA_REGEX: Lazy = /// /// The order may change in the future in case YouTube applies changes to their /// platform that disable a client or make it less reliable. -pub const DEFAULT_PLAYER_CLIENT_ORDER: &[ClientType] = &[ClientType::Tv, ClientType::Ios]; +pub const DEFAULT_PLAYER_CLIENT_ORDER: &[ClientType] = + &[ClientType::Ios, ClientType::Tv, ClientType::Android]; /// The RustyPipe client used to access YouTube's API /// @@ -1505,13 +1509,13 @@ impl RustyPipeQuery { ClientType::Mobile => MOBILE_UA.into(), ClientType::Tv => TV_UA.into(), ClientType::Android => format!( - "com.google.android.youtube/{} (Linux; U; Android 12; {}) gzip", - APP_CLIENT_VERSION, self.opts.country + "com.google.android.youtube/{} (Linux; U; Android 11) gzip", + APP_CLIENT_VERSION ) .into(), ClientType::Ios => format!( - "com.google.ios.youtube/{} ({}; U; CPU iOS 15_4 like Mac OS X; {})", - APP_CLIENT_VERSION, IOS_DEVICE_MODEL, self.opts.country + "com.google.ios.youtube/{} ({}; U; CPU iOS 18_1_0 like Mac OS X)", + APP_CLIENT_VERSION, IOS_DEVICE_MODEL ) .into(), } @@ -1550,7 +1554,7 @@ impl RustyPipeQuery { client_name: "WEB", client_version: self.client.get_client_version(ctype).await, platform: "DESKTOP", - original_url: Some(YOUTUBE_HOME_URL), + original_url: YOUTUBE_HOME_URL, visitor_data, hl, gl, @@ -1565,7 +1569,7 @@ impl RustyPipeQuery { client_name: "WEB_REMIX", client_version: self.client.get_client_version(ctype).await, platform: "DESKTOP", - original_url: Some(YOUTUBE_MUSIC_HOME_URL), + original_url: YOUTUBE_MUSIC_HOME_URL, visitor_data, hl, gl, @@ -1580,7 +1584,7 @@ impl RustyPipeQuery { client_name: "MWEB", client_version: self.client.get_client_version(ctype).await, platform: "MOBILE", - original_url: Some(YOUTUBE_MOBILE_HOME_URL), + original_url: YOUTUBE_MOBILE_HOME_URL, visitor_data, hl, gl, @@ -1594,9 +1598,9 @@ impl RustyPipeQuery { client: ClientInfo { client_name: "TVHTML5", client_version: self.client.get_client_version(ctype).await, - client_screen: Some("WATCH"), + client_screen: "WATCH", platform: "TV", - device_model: Some("SmartTV"), + device_model: "SmartTV", visitor_data, hl, gl, @@ -1612,6 +1616,9 @@ impl RustyPipeQuery { client: ClientInfo { client_name: "ANDROID", client_version: APP_CLIENT_VERSION.into(), + os_name: "Android", + os_version: "11", + android_sdk_version: Some(30), platform: "MOBILE", visitor_data, hl, @@ -1626,7 +1633,9 @@ impl RustyPipeQuery { client: ClientInfo { client_name: "IOS", client_version: APP_CLIENT_VERSION.into(), - device_model: Some(IOS_DEVICE_MODEL), + device_model: IOS_DEVICE_MODEL, + os_name: "iPhone", + os_version: "18.1.0.22B83", platform: "MOBILE", visitor_data, hl, @@ -1721,6 +1730,7 @@ impl RustyPipeQuery { .post(format!( "{YOUTUBEI_V1_GAPIS_URL}{endpoint}?{DISABLE_PRETTY_PRINT_PARAMETER}" )) + .header("X-YouTube-Client-Name", "3") .header("X-Goog-Api-Format-Version", "2"), ClientType::Ios => self .client @@ -1729,9 +1739,12 @@ impl RustyPipeQuery { .post(format!( "{YOUTUBEI_V1_GAPIS_URL}{endpoint}?{DISABLE_PRETTY_PRINT_PARAMETER}" )) + .header("X-YouTube-Client-Name", "5") .header("X-Goog-Api-Format-Version", "2"), }; - r = r.header(header::USER_AGENT, self.user_agent(ctype).as_ref()); + r = r + .header(header::CONTENT_TYPE, "application/json") + .header(header::USER_AGENT, self.user_agent(ctype).as_ref()); if let Some(vdata) = self.opts.visitor_data.as_deref().or(visitor_data) { r = r.header("X-Goog-EOM-Visitor-Id", vdata); } diff --git a/src/client/player.rs b/src/client/player.rs index 8c0362b..47fb7a0 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -10,7 +10,7 @@ use serde::Serialize; use url::Url; use crate::{ - deobfuscate::Deobfuscator, + deobfuscate::{DeobfData, Deobfuscator}, error::{internal::DeobfError, Error, ExtractionError, UnavailabilityReason}, model::{ traits::QualityOrd, AudioCodec, AudioFormat, AudioStream, AudioTrack, Frameset, Subtitle, @@ -34,17 +34,12 @@ struct QPlayer<'a> { /// Website playback context #[serde(skip_serializing_if = "Option::is_none")] playback_context: Option>, - /// Content playback nonce (mobile only, 16 random chars) - #[serde(skip_serializing_if = "Option::is_none")] - cpn: Option, /// YouTube video ID video_id: &'a str, /// Set to true to allow extraction of streams with sensitive content content_check_ok: bool, /// Probably refers to allowing sensitive content, too racy_check_ok: bool, - #[serde(skip_serializing_if = "Option::is_none")] - params: Option<&'a str>, } #[derive(Debug, Serialize)] @@ -125,31 +120,27 @@ impl RustyPipeQuery { client_type: ClientType, ) -> Result { let video_id = video_id.as_ref(); - let deobf = self.client.get_deobf_data().await?; + let mut deobf = None; - let request_body = if client_type.is_web() { + let request_body = if client_type.needs_deobf() { + deobf = Some(self.client.get_deobf_data().await?); QPlayer { playback_context: Some(QPlaybackContext { content_playback_context: QContentPlaybackContext { - signature_timestamp: &deobf.sts, + signature_timestamp: &deobf.as_ref().unwrap().sts, referer: format!("https://www.youtube.com/watch?v={video_id}"), }, }), - cpn: None, video_id, content_check_ok: true, racy_check_ok: true, - params: None, } } else { QPlayer { playback_context: None, - cpn: Some(util::generate_content_playback_nonce()), video_id, content_check_ok: true, racy_check_ok: true, - // Source: https://github.com/TeamNewPipe/NewPipeExtractor/pull/1168 - params: Some("CgIIAQ%3D%3D").filter(|_| client_type == ClientType::Android), } }; @@ -160,7 +151,7 @@ impl RustyPipeQuery { "player", &request_body, MapRespOptions { - deobf: Some(&deobf), + deobf: deobf.as_ref(), unlocalized: true, ..Default::default() }, @@ -277,7 +268,7 @@ impl MapResponse for response::Player { }; let streams = if !is_live { - let mut mapper = StreamsMapper::new(Deobfuscator::new(ctx.deobf.unwrap())?); + let mut mapper = StreamsMapper::new(ctx.deobf)?; mapper.map_streams(streaming_data.formats); mapper.map_streams(streaming_data.adaptive_formats); let mut res = mapper.output()?; @@ -374,7 +365,7 @@ impl MapResponse for response::Player { } struct StreamsMapper { - deobf: Deobfuscator, + deobf: Option, streams: Streams, warnings: Vec, /// First stream mapping error @@ -393,15 +384,20 @@ struct Streams { } impl StreamsMapper { - fn new(deobf: Deobfuscator) -> Self { - Self { + fn new(deobf_data: Option<&DeobfData>) -> Result { + let deobf = match deobf_data { + Some(deobf_data) => Some(Deobfuscator::new(deobf_data)?), + None => None, + }; + + Ok(Self { deobf, streams: Streams::default(), warnings: Vec::new(), first_err: None, last_nsig: String::new(), last_nsig_deobf: String::new(), - } + }) } fn map_streams(&mut self, mut streams: MapResult>) { @@ -461,6 +457,12 @@ impl StreamsMapper { }) } + fn deobf(&self) -> Result<&Deobfuscator, DeobfError> { + self.deobf + .as_ref() + .ok_or(DeobfError::Other("no deobfuscator")) + } + fn cipher_to_url_params( &self, signature_cipher: &str, @@ -481,7 +483,7 @@ impl StreamsMapper { let (url_base, mut url_params) = util::url_to_params(raw_url).or(Err(DeobfError::Extraction("url params")))?; - let deobf_sig = self.deobf.deobfuscate_sig(sig)?; + let deobf_sig = self.deobf()?.deobfuscate_sig(sig)?; url_params.insert(sp.to_string(), deobf_sig); Ok((url_base, url_params)) @@ -492,7 +494,7 @@ impl StreamsMapper { let nsig = if n == &self.last_nsig { self.last_nsig_deobf.to_owned() } else { - let nsig = self.deobf.deobfuscate_nsig(n)?; + let nsig = self.deobf()?.deobfuscate_nsig(n)?; self.last_nsig.clone_from(n); self.last_nsig_deobf.clone_from(&nsig); nsig @@ -782,7 +784,7 @@ mod tests { #[test] fn cipher_to_url() { let signature_cipher = "s=w%3DAe%3DA6aDNQLkViKS7LOm9QtxZJHKwb53riq9qEFw-ecBWJCAiA%3DcEg0tn3dty9jEHszfzh4Ud__bg9CEHVx4ix-7dKsIPAhIQRw8JQ0qOA&sp=sig&url=https://rr5---sn-h0jelnez.googlevideo.com/videoplayback%3Fexpire%3D1659376413%26ei%3Dvb7nYvH5BMK8gAfBj7ToBQ%26ip%3D2003%253Ade%253Aaf06%253A6300%253Ac750%253A1b77%253Ac74a%253A80e3%26id%3Do-AB_BABwrXZJN428ZwDxq5ScPn2AbcGODnRlTVhCQ3mj2%26itag%3D251%26source%3Dyoutube%26requiressl%3Dyes%26mh%3DhH%26mm%3D31%252C26%26mn%3Dsn-h0jelnez%252Csn-4g5ednsl%26ms%3Dau%252Conr%26mv%3Dm%26mvi%3D5%26pl%3D37%26initcwndbps%3D1588750%26spc%3DlT-Khi831z8dTejFIRCvCEwx_6romtM%26vprv%3D1%26mime%3Daudio%252Fwebm%26ns%3Db_Mq_qlTFcSGlG9RpwpM9xQH%26gir%3Dyes%26clen%3D3781277%26dur%3D229.301%26lmt%3D1655510291473933%26mt%3D1659354538%26fvip%3D5%26keepalive%3Dyes%26fexp%3D24001373%252C24007246%26c%3DWEB%26rbqsm%3Dfr%26txp%3D4532434%26n%3Dd2g6G2hVqWIXxedQ%26sparams%3Dexpire%252Cei%252Cip%252Cid%252Citag%252Csource%252Crequiressl%252Cspc%252Cvprv%252Cmime%252Cns%252Cgir%252Cclen%252Cdur%252Clmt%26lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%26lsig%3DAG3C_xAwRQIgCKCGJ1iu4wlaGXy3jcJyU3inh9dr1FIfqYOZEG_MdmACIQCbungkQYFk7EhD6K2YvLaHFMjKOFWjw001_tLb0lPDtg%253D%253D"; - let mut mapper = StreamsMapper::new(Deobfuscator::new(&DEOBF_DATA).unwrap()); + let mut mapper = StreamsMapper::new(Some(&DEOBF_DATA)).unwrap(); let url = mapper .map_url(&None, &Some(signature_cipher.to_owned())) .unwrap() From 1d1ae17ffc16724667d43142aa57abda2e6468e4 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 19 Dec 2024 01:30:35 +0100 Subject: [PATCH 053/191] feat: add auto-dubbed audio tracks, improved StreamFilter --- src/model/mod.rs | 9 +- src/param/stream_filter.rs | 336 ++++++++++++++++++------------------- 2 files changed, 172 insertions(+), 173 deletions(-) diff --git a/src/model/mod.rs b/src/model/mod.rs index c7047bf..7e24ed0 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -332,7 +332,10 @@ pub struct AudioTrack { pub lang: Option, /// Language name (e.g. "English") pub lang_name: String, - /// True if this is the default audio track + /// True if this is the default audio track chosen by YouTube + /// + /// Note that YouTube's selection depends on the client type used to fetch the player. + /// Some players pub is_default: bool, /// Audio track type (e.g. *Original*, *Dubbed*) pub track_type: Option, @@ -351,13 +354,15 @@ pub enum AudioFormat { /// Audio track type #[derive(Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] -#[serde(rename_all = "snake_case")] +#[serde(rename_all = "kebab-case")] #[non_exhaustive] pub enum AudioTrackType { /// An original audio track of the video Original, /// An audio track with the original voices replaced, typically in a different language Dubbed, + /// An audio track dubbed using YouTube's AI powered AutoDub feature + DubbedAuto, /// A descriptive audio track /// /// A descriptive audio track is an audio track in which descriptions of visual elements of diff --git a/src/param/stream_filter.rs b/src/param/stream_filter.rs index 401f494..aeddeb7 100644 --- a/src/param/stream_filter.rs +++ b/src/param/stream_filter.rs @@ -3,8 +3,8 @@ use std::cmp::Ordering; use crate::model::{ - traits::QualityOrd, AudioCodec, AudioFormat, AudioStream, VideoCodec, VideoFormat, VideoPlayer, - VideoStream, + traits::QualityOrd, AudioCodec, AudioFormat, AudioStream, AudioTrackType, VideoCodec, + VideoFormat, VideoPlayer, VideoStream, }; /// The StreamFilter is used for selecting audio/video streams from an extracted video @@ -13,7 +13,9 @@ pub struct StreamFilter { audio_max_bitrate: Option, audio_formats: Option>, audio_codecs: Option>, - audio_language: Option, + audio_languages: Vec, + audio_autodub: bool, + audio_descriptive: bool, video_max_res: Option, video_max_fps: Option, video_formats: Option>, @@ -22,47 +24,10 @@ pub struct StreamFilter { video_none: bool, } -#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)] -enum FilterResult { - Deny, - AllowLowest, - Allow, - Match, -} - -impl FilterResult { - fn hard(val: bool) -> Self { - if val { - Self::Match - } else { - Self::Deny - } - } - - fn soft(val: bool) -> Self { - if val { - Self::Match - } else { - Self::AllowLowest - } - } - - fn allow(val: bool) -> Self { - if val { - Self::Allow - } else { - Self::Deny - } - } - - fn join(self, other: Self) -> Self { - if self == Self::Deny { - Self::Deny - } else { - self.min(other) - } - } -} +const N_RES_AUDIO: usize = 4; +const N_RES_VIDEO: usize = 5; +type AudioRes = Option<[i64; N_RES_AUDIO]>; +type VideoRes = Option<[i64; N_RES_VIDEO]>; impl StreamFilter { /// Create a new [`StreamFilter`] @@ -81,13 +46,6 @@ impl StreamFilter { self } - fn apply_audio_max_bitrate(&self, stream: &AudioStream) -> FilterResult { - match self.audio_max_bitrate { - Some(max_bitrate) => FilterResult::soft(stream.average_bitrate <= max_bitrate), - None => FilterResult::Match, - } - } - /// Set the supported audio container formats #[must_use] pub fn audio_formats>>(mut self, formats: F) -> Self { @@ -95,13 +53,6 @@ impl StreamFilter { self } - fn apply_audio_formats(&self, stream: &AudioStream) -> FilterResult { - match &self.audio_formats { - Some(formats) => FilterResult::hard(formats.contains(&stream.format)), - None => FilterResult::Match, - } - } - /// Set the supported audio codecs #[must_use] pub fn audio_codecs>>(mut self, codecs: C) -> Self { @@ -109,14 +60,18 @@ impl StreamFilter { self } - fn apply_audio_codecs(&self, stream: &AudioStream) -> FilterResult { - match &self.audio_codecs { - Some(codecs) => FilterResult::hard(codecs.contains(&stream.codec)), - None => FilterResult::Match, - } + /// Set the preferred audio languages + /// Some YouTube videos feature multiple audio streams in + /// different languages (e.g. ). + /// + /// If this filter is unset or no stream matches, + /// the filter returns the default audio stream. + #[must_use] + pub fn audio_languages>>(mut self, languages: S) -> Self { + self.audio_languages = languages.into(); + self } - - /// Set the preferred audio language (2 letter ISO 639-1 code, e.g. `en`, `fr`). + /// Set the preferred audio language /// Some YouTube videos feature multiple audio streams in /// different languages (e.g. ). /// @@ -124,27 +79,24 @@ impl StreamFilter { /// the filter returns the default audio stream. #[must_use] pub fn audio_language>(mut self, language: S) -> Self { - self.audio_language = Some(language.into()); + self.audio_languages = vec![language.into()]; self } - fn apply_audio_language(&self, stream: &AudioStream) -> FilterResult { - match &self.audio_language { - Some(language) => match &stream.track { - Some(track) => match &track.lang { - Some(track_lang) => { - if track_lang == language { - FilterResult::Match - } else { - FilterResult::allow(track.is_default) - } - } - None => FilterResult::allow(track.is_default), - }, - None => FilterResult::Match, - }, - None => FilterResult::hard(stream.track.as_ref().map_or(true, |t| t.is_default)), - } + /// Select the descriptive audio track for visually impaired people if available + #[must_use] + pub fn audio_descriptive(mut self) -> Self { + self.audio_descriptive = true; + self + } + + /// Allow audio tracks that are AI-dubbed by YouTube + /// + /// By default these are never selected. + #[must_use] + pub fn audio_autodub(mut self) -> Self { + self.audio_autodub = true; + self } /// Set the maximum video resolution. Resolution is determined by the @@ -158,13 +110,6 @@ impl StreamFilter { self } - fn apply_video_max_res(&self, stream: &VideoStream) -> FilterResult { - match self.video_max_res { - Some(max_res) => FilterResult::soft(stream.height.min(stream.width) <= max_res), - None => FilterResult::Match, - } - } - /// Set the maximum video framerate. /// /// This is a soft filter, so if there is no stream with a framerate @@ -175,13 +120,6 @@ impl StreamFilter { self } - fn apply_video_max_fps(&self, stream: &VideoStream) -> FilterResult { - match self.video_max_fps { - Some(max_fps) => FilterResult::soft(stream.fps <= max_fps), - None => FilterResult::Match, - } - } - /// Set the supported video container formats #[must_use] pub fn video_formats>>(mut self, formats: F) -> Self { @@ -189,13 +127,6 @@ impl StreamFilter { self } - fn apply_video_formats(&self, stream: &VideoStream) -> FilterResult { - match &self.video_formats { - Some(formats) => FilterResult::hard(formats.contains(&stream.format)), - None => FilterResult::Match, - } - } - /// Set the supported video codecs #[must_use] pub fn video_codecs>>(mut self, codecs: C) -> Self { @@ -203,13 +134,6 @@ impl StreamFilter { self } - fn apply_video_codecs(&self, stream: &VideoStream) -> FilterResult { - match &self.video_codecs { - Some(codecs) => FilterResult::hard(codecs.contains(&stream.codec)), - None => FilterResult::Match, - } - } - /// Allow HDR videos #[must_use] pub fn video_hdr(mut self) -> Self { @@ -217,13 +141,6 @@ impl StreamFilter { self } - fn apply_video_hdr(&self, stream: &VideoStream) -> FilterResult { - match &self.video_hdr { - true => FilterResult::Match, - false => FilterResult::hard(!&stream.hdr), - } - } - /// Output no video stream (audio only) #[must_use] pub fn no_video(mut self) -> Self { @@ -231,24 +148,123 @@ impl StreamFilter { self } - fn apply_audio(&self, stream: &AudioStream) -> FilterResult { - self.apply_audio_max_bitrate(stream).join( - self.apply_audio_formats(stream).join( - self.apply_audio_codecs(stream) - .join(self.apply_audio_language(stream)), - ), - ) + fn apply_audio(&self, stream: &AudioStream) -> AudioRes { + let bitrate = match self.audio_max_bitrate { + Some(max) => filter_max(stream.average_bitrate, max), + None => stream.average_bitrate.into(), + }; + + if let Some(formats) = &self.audio_formats { + if !formats.contains(&stream.format) { + return None; + } + } + + if let Some(codecs) = &self.audio_codecs { + if !codecs.contains(&stream.codec) { + return None; + } + } + let codecs = match stream.codec { + AudioCodec::Unknown => -10, + AudioCodec::Mp4a => 0, + AudioCodec::Opus => 10, + }; + + let language = if self.audio_languages.is_empty() { + 0 + } else { + match &stream.track { + Some(track) => match &track.lang { + Some(lang) => { + if self.audio_languages.contains(lang) { + 10 + } else if let Some((lang, _)) = lang.split_once('-') { + if self.audio_languages.contains(&lang.to_owned()) { + 5 + } else { + -1 + } + } else { + -10 + } + } + None => 0, + }, + None => 0, + } + }; + + let track_type = match &stream.track { + Some(track) => match track.track_type { + Some(AudioTrackType::Original) => 5, + Some(AudioTrackType::Descriptive) => { + if self.audio_descriptive { + 10 + } else { + return None; + } + } + Some(AudioTrackType::Dubbed) => 0, + Some(AudioTrackType::DubbedAuto) => { + if self.audio_autodub { + -1 + } else { + return None; + } + } + None => 0, + }, + None => 0, + }; + + Some([language, track_type, codecs, bitrate]) } - fn apply_video(&self, stream: &VideoStream) -> FilterResult { - self.apply_video_max_res(stream).join( - self.apply_video_formats(stream).join( - self.apply_video_codecs(stream).join( - self.apply_video_hdr(stream) - .join(self.apply_video_max_fps(stream)), - ), - ), - ) + fn apply_video(&self, stream: &VideoStream) -> VideoRes { + let vres = stream.height.min(stream.width); + let res = match self.video_max_res { + Some(max) => filter_max(vres, max), + None => vres.into(), + }; + + let fps = match self.video_max_fps { + Some(max) => filter_max(stream.fps.into(), max.into()), + None => i64::from(stream.fps), + }; + + if let Some(formats) = &self.video_formats { + if !formats.contains(&stream.format) { + return None; + } + } + + if let Some(codecs) = &self.video_codecs { + if !codecs.contains(&stream.codec) { + return None; + } + } + let codecs = match stream.codec { + VideoCodec::Unknown => -1, + VideoCodec::Mp4v => 1, + VideoCodec::Avc1 => 2, + VideoCodec::Vp9 => 3, + VideoCodec::Av01 => 4, + }; + + let hdr = if self.video_hdr { + if stream.hdr { + 10 + } else { + 0 + } + } else if stream.hdr { + return None; + } else { + 0 + }; + + Some([hdr, res, fps, codecs, stream.average_bitrate.into()]) } /// Return true if no video stream should be selected @@ -257,30 +273,23 @@ impl StreamFilter { } } +fn filter_max(val: u32, max: u32) -> i64 { + if val > max { + i64::from(max).wrapping_sub(val.into()) + } else { + val.into() + } +} + impl VideoPlayer { /// Select the audio stream which is the best match for the given [`StreamFilter`] #[must_use] pub fn select_audio_stream(&self, filter: &StreamFilter) -> Option<&AudioStream> { - let mut fallback: Option<&AudioStream> = None; - self.audio_streams .iter() - .rev() - .find(|s| match filter.apply_audio(s) { - FilterResult::Deny => false, - FilterResult::AllowLowest => { - fallback = Some(s); - false - } - FilterResult::Allow => { - if fallback.is_none() { - fallback = Some(s); - } - false - } - FilterResult::Match => true, - }) - .or(fallback) + .filter_map(|s| filter.apply_audio(s).map(|r| (s, r))) + .max_by_key(|(_, r)| *r) + .map(|(s, _)| s) } fn _select_video_stream<'a>( @@ -291,26 +300,11 @@ impl VideoPlayer { return None; } - let mut fallback: Option<&VideoStream> = None; - streams .iter() - .rev() - .find(|s| match filter.apply_video(s) { - FilterResult::Deny => false, - FilterResult::AllowLowest => { - fallback = Some(s); - false - } - FilterResult::Allow => { - if fallback.is_none() { - fallback = Some(s); - } - false - } - FilterResult::Match => true, - }) - .or(fallback) + .filter_map(|s| filter.apply_video(s).map(|r| (s, r))) + .max_by_key(|(_, r)| *r) + .map(|(s, _)| s) } /// Select the video stream which is the best match for the given [`StreamFilter`] @@ -399,7 +393,7 @@ mod tests { #[case::hdr(StreamFilter::default().video_hdr().clone(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=976824147&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=701&keepalive=yes&lmt=1647469891607029&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAOax_lAWCW5ENOYxe3gZfBHgHA5oZJPyMlYQFy73t7-pAiEA46J7dsT-1pv9smuoP3Kx5T7c_IJ6cEZN4U9UkSNuT7o%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] #[case::resolution(StreamFilter::default().video_max_res(720).clone(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=76313586&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=302&keepalive=yes&lmt=1647455155369524&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgW0H1434eh9Axw6zw95qezJB0D2aVd2bxEIs4T5bcfFACIDOjha9WLycp0L188FZyFGa1RBkLPoGrrJOppsaXqwDR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] #[case::resolution_fps(StreamFilter::default().video_max_res(720).video_max_fps(30).clone(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=47531179&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=247&keepalive=yes&lmt=1647458657499381&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAMUsmcl1zgbr3YQranPWNV1kcxT5IdEoLL7FTFEDdHHPAiEAhQnrfYMU0A9xZ69MfBujWA4pXtCOQCg2Jn6ve9J_vBQ%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] - #[case::res_fallback(StreamFilter::default().video_max_res(100).clone(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=2763284&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=160&keepalive=yes&lmt=1647456833049253&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgLPNxzLxppSSpnDEHxVblrQ38890NMbGnLXlmxljprfQCIQDn4Ir_sjYh7S3ms-Rynm-K0nJpHpQGYsz1nv4TiqeELQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] + #[case::res_fallback(StreamFilter::default().video_max_res(100).clone(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=3182932&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=278&keepalive=yes&lmt=1647458650479323&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAKcXzSIMQGA4R_rvoVg3ONpXOjpbaNZ5y9WJHLiQDTTVAiA6ePO9vuh5_zYE3Dw-QoRfqhT0CBDkg6w4dIo0MEfWnA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] #[case::webm_format(StreamFilter::default().video_formats([VideoFormat::Webm]).clone(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=998696577&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=315&keepalive=yes&lmt=1647476955807851&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIfP4IVSo-00_kq_JIkuh032hcLoJzNEhYjvwgLiDpEzQIhALPVrvDBjRwiFddXiAyADmRtYygte4HvlJ3XOrkOf_TR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] #[case::vp9_codec(StreamFilter::default().video_codecs([VideoCodec::Vp9]).clone(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=998696577&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=315&keepalive=yes&lmt=1647476955807851&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIfP4IVSo-00_kq_JIkuh032hcLoJzNEhYjvwgLiDpEzQIhALPVrvDBjRwiFddXiAyADmRtYygte4HvlJ3XOrkOf_TR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] #[case::noformat(StreamFilter::default().video_formats([]).clone(), None)] From 30f60c30f9d87d39585db93c1c9e274f48d688ba Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 19 Dec 2024 01:32:15 +0100 Subject: [PATCH 054/191] fix: extract transcript from comment voice replies --- src/client/response/video_details.rs | 23 + ...ts__map_comments_20241218_voice_reply.snap | 356 ++ src/client/video_details.rs | 14 +- .../comments_20241218_voice_reply.json | 3433 +++++++++++++++++ 4 files changed, 3825 insertions(+), 1 deletion(-) create mode 100644 src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20241218_voice_reply.snap create mode 100644 testfiles/video_details/comments_20241218_voice_reply.json diff --git a/src/client/response/video_details.rs b/src/client/response/video_details.rs index 126a540..51d6ce4 100644 --- a/src/client/response/video_details.rs +++ b/src/client/response/video_details.rs @@ -624,6 +624,7 @@ pub(crate) struct CommentViewModelWrap { pub(crate) struct CommentViewModel { pub comment_id: String, pub comment_key: String, + pub comment_surface_key: String, pub toolbar_state_key: String, } @@ -695,6 +696,7 @@ pub(crate) struct AuthorCommentBadgeRenderer { #[serde(rename_all = "camelCase")] pub(crate) enum Payload { CommentEntityPayload(CommentEntityPayload), + CommentSurfaceEntityPayload(CommentSurfaceEntityPayload), #[serde(rename_all = "camelCase")] EngagementToolbarStateEntityPayload { heart_state: HeartState, @@ -716,6 +718,13 @@ pub(crate) struct CommentEntityPayload { pub avatar: ImageView, } +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct CommentSurfaceEntityPayload { + pub voice_reply_container_view_model: Option, +} + #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] @@ -772,3 +781,17 @@ pub(crate) struct ContinuationButton { pub(crate) struct ContinuationButtonRenderer { pub command: ContinuationEndpoint, } + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct VoiceReplyContainer { + pub voice_reply_container_view_model: VoiceReplyContainer2, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct VoiceReplyContainer2 { + #[serde_as(as = "AttributedText")] + pub transcript_text: TextComponents, +} diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20241218_voice_reply.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20241218_voice_reply.snap new file mode 100644 index 0000000..b551947 --- /dev/null +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20241218_voice_reply.snap @@ -0,0 +1,356 @@ +--- +source: src/client/video_details.rs +expression: map_res.c +--- +Paginator( + count: None, + items: [ + Comment( + id: "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rR-OMlS-", + text: RichText([ + Text( + text: "Transcribed voice reply:", + style: Style( + bold: true, + ), + ), + Text( + text: " \"oh you\'re right I made a mistake whoops\"", + ), + ]), + author: Some(ChannelTag( + id: "UCQSpnDG3YsFNf5-qHocF-WQ", + name: "@ThioJoe", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 days ago", + like_count: Some(2100), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: true, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rXfHrZv_", + text: RichText([ + Text( + text: "that was a K like the old windows which represents Kilobytes not Megabytes", + ), + ]), + author: Some(ChannelTag( + id: "UCWSUHd0FSYNF6cjkMCC8Y9w", + name: "@Pls2M", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/A493Oz1QwDx8Fa93HfAieUdYe-HFKlvzQimUpCySjCbOAPcgHQQgQ3PM-MNjxdmdk9ogpOTZ_Y0=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 days ago", + like_count: Some(41), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rZObfQ9y", + text: RichText([ + Text( + text: "so yes", + ), + ]), + author: Some(ChannelTag( + id: "UCWSUHd0FSYNF6cjkMCC8Y9w", + name: "@Pls2M", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/A493Oz1QwDx8Fa93HfAieUdYe-HFKlvzQimUpCySjCbOAPcgHQQgQ3PM-MNjxdmdk9ogpOTZ_Y0=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 days ago", + like_count: Some(18), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rnkWZoH7", + text: RichText([ + YouTube( + text: "@ThioJoe", + target: Channel( + id: "UCQSpnDG3YsFNf5-qHocF-WQ", + ), + ), + Text( + text: " wow voice note reply. since when was that a thing", + ), + ]), + author: Some(ChannelTag( + id: "UCSNxfsFLRzIZ-99aIGZ_dIg", + name: "@N1r4", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/gpEcInEquxyAqzFxVmv6m83DSI3OHXXbQr1HgTZaySg-sbpdj6nOp-W-NYdmq8jDa2-Pf8nk134=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 days ago", + like_count: Some(569), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1sTNcHMYN", + text: RichText([ + YouTube( + text: "@N1r4", + target: Channel( + id: "UCSNxfsFLRzIZ-99aIGZ_dIg", + ), + ), + Text( + text: " is it supported for you? for me it has a transcription and says voice reply is not supported", + ), + ]), + author: Some(ChannelTag( + id: "UCCCvp1-zqEQetYuZduIdd7A", + name: "@xapplezapple3453", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_lfpjOSUn38QauvP05T14pFJ2vGX_wDkuh0E9M6_qOO=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 days ago", + like_count: Some(141), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1tu_pIsg4", + text: RichText([ + Text( + text: "\u{200b}", + ), + YouTube( + text: "@ThioJoe", + target: Channel( + id: "UCQSpnDG3YsFNf5-qHocF-WQ", + ), + ), + Text( + text: " since when can you reply with audio\nnever seen this", + ), + ]), + author: Some(ChannelTag( + id: "UCTR5xEDXSi92_GQPONLU_vw", + name: "@Moshiur_Rahman", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/NLBULvx76jIqiPmRaJD0OWYXs644vyEahh6S4TsMRRSG_PsM3B0rYMsctP8jNMHM7iWTBRz2Sw=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 days ago (edited)", + like_count: Some(106), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1virGMTo7", + text: RichText([ + YouTube( + text: "@xapplezapple3453", + target: Channel( + id: "UCCCvp1-zqEQetYuZduIdd7A", + ), + ), + Text( + text: " I believe you have to view it in the YouTube iOS or Android app, not desktop", + ), + ]), + author: Some(ChannelTag( + id: "UCQSpnDG3YsFNf5-qHocF-WQ", + name: "@ThioJoe", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 days ago (edited)", + like_count: Some(236), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: true, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC27uYKqxUy", + text: RichText([ + YouTube( + text: "@ThioJoe", + target: Channel( + id: "UCQSpnDG3YsFNf5-qHocF-WQ", + ), + ), + Text( + text: " Insane new YouTube feature spotted", + ), + ]), + author: Some(ChannelTag( + id: "UC8TLX4SSKMpXl3yuZeQbLDQ", + name: "@RippleXRPcorp-2024", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/2FTo9EkfZUvYfpxs-kzbjmKl8SG0pesUxVkUMQAc4yejxPt0qbCU2Bwway6gWR3syeXDmUN7dw=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 days ago", + like_count: Some(136), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC28KAyUNVu", + text: RichText([ + Text( + text: "Voice Replies?? Seems a lil unnecessary imo but i dont mind", + ), + ]), + author: Some(ChannelTag( + id: "UC3ODAuviniQtvaq47mTZyVA", + name: "@RealZerenaFan", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Lzs-ycGJPuNL2Ag7oB-z0FGWup5yfv76Y2AnPxdjrDbREAmX44029LhobUkwTkZ5MDudvSVJgg=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 days ago", + like_count: Some(84), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + ], + ctoken: Some("Eg0SC04yWElmX1RVbU1ZGAYy0wEKTGdldF9jb21tZW50X3dpdGhfcmVwbGllc19zdHJlYW0tLUNnZ0lnQVFWRjdmUk9CSUZDS0FnR0FFaURRb0xDUGZYOTdvR0VQaWVfRDQaUBIaVWd3NHdkUTI1bTRsTjMwMVJvbDRBYUFCQWciAggAKhhVQ1FTcG5ERzNZc0ZOZjUtcUhvY0YtV1EyC04yWElmX1RVbU1ZQAFIMoIBAggBKAlCL2NvbW1lbnQtcmVwbGllcy1pdGVtLVVndzR3ZFEyNW00bE4zMDFSb2w0QWFBQkFn"), + endpoint: browse, +) diff --git a/src/client/video_details.rs b/src/client/video_details.rs index 6324bb0..2c81e69 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -593,6 +593,14 @@ fn map_comment_vm( } else { false }; + let voice_reply = if let Some(Payload::CommentSurfaceEntityPayload(sf)) = + mutations.remove(&vm.comment_surface_key) + { + sf.voice_reply_container_view_model + .map(|vr| vr.voice_reply_container_view_model.transcript_text) + } else { + None + }; let mut parse_num = |s: &str| -> Option { if s.is_empty() || s == " " { @@ -606,7 +614,10 @@ fn map_comment_vm( Some(Comment { id: vm.comment_id, - text: ce.properties.content.into(), + text: voice_reply + .filter(|_| ce.properties.content.is_empty()) + .unwrap_or(ce.properties.content) + .into(), by_owner: ce.author.as_ref().map(|a| a.is_creator).unwrap_or_default(), author: ce.author.map(|a| ChannelTag { id: a.channel_id, @@ -697,6 +708,7 @@ mod tests { #[case::latest("latest")] #[case::frameworkupd("20240401_frameworkupd")] #[case::frameworkupd_reply("20240401_frameworkupd_reply")] + #[case::voice_reply("20241218_voice_reply")] fn map_comments(#[case] name: &str) { let json_path = path!(*TESTFILES / "video_details" / format!("comments_{name}.json")); let json_file = File::open(json_path).unwrap(); diff --git a/testfiles/video_details/comments_20241218_voice_reply.json b/testfiles/video_details/comments_20241218_voice_reply.json new file mode 100644 index 0000000..422a8b1 --- /dev/null +++ b/testfiles/video_details/comments_20241218_voice_reply.json @@ -0,0 +1,3433 @@ +{ + "responseContext": { + "visitorData": "CgtfcGhuN2E1X21MbyiNv_a6BjIKCgJVUxIEEgAgGA%3D%3D", + "serviceTrackingParams": [ + { + "service": "CSI", + "params": [ + { + "key": "c", + "value": "WEB" + }, + { + "key": "cver", + "value": "2.20241216.05.00" + }, + { + "key": "yt_li", + "value": "0" + }, + { + "key": "GetWatchPageWebCommentReplies_rid", + "value": "0x599eef4b4f4156b5" + } + ] + }, + { + "service": "GFEEDBACK", + "params": [ + { + "key": "logged_in", + "value": "0" + }, + { + "key": "e", + "value": "23804281,23986027,24004644,24077241,24108448,24166867,24181174,24241378,24299873,24439361,24453989,24547317,24548629,24566687,24699899,39325854,39326986,51009781,51010235,51017346,51020570,51025415,51030101,51037342,51037349,51050361,51053689,51057842,51057853,51063643,51072748,51074267,51080402,51091058,51095478,51098299,51105630,51111738,51115184,51124104,51137812,51141472,51144926,51151423,51152050,51157411,51160545,51169118,51176511,51178316,51178331,51178340,51178353,51178982,51183910,51184990,51194137,51204329,51208677,51217504,51221148,51222382,51222973,51227037,51227776,51228850,51230478,51237842,51239093,51241028,51242448,51243940,51248255,51248734,51249751,51255676,51255743,51256074,51256084,51260454,51263449,51272458,51274583,51275785,51276557,51276565,51281227,51282792,51284410,51285052,51285421,51285717,51287196,51289922,51289929,51289938,51289956,51289967,51289976,51292055,51294322,51296439,51297023,51298020,51299710,51299724,51299975,51300005,51300008,51300176,51300241,51302680,51302893,51303432,51303665,51303667,51303669,51303789,51304155,51305032,51305839,51306256,51308060,51310742,51311027,51311036,51311505,51313109,51313767,51313802,51314158,51315246,51315912,51315919,51315926,51315931,51315940,51315949,51315956,51315961,51315968,51315975,51316844,51318845,51322669,51326208,51326282,51326641,51326932,51327167,51327180,51327613,51327615,51327636,51330194,51331487,51331504,51331522,51331529,51331542,51331547,51331556,51331561,51332896,51333543,51333879,51334535,51335364,51335392,51335572,51335594,51335644,51335928,51336633,51336756,51337186,51337349,51338524,51340662,51341228,51341730,51341975,51342614,51342752,51342857,51343368,51343796,51344616,51344620,51345295,51345629,51346352,51346793,51346808,51346823,51346842,51346861,51346876,51346885,51346894,51347325,51347576,51348208,51348672,51349880,51351446,51353231,51353361,51353393,51354507,51354567,51355264,51355271,51355289,51355303,51355318,51355339,51355344,51355417,51355679,51355912,51357477,51357596,51360108,51360125,51360130,51360208,51360219,51361727,51361830,51362040,51362452,51362455,51362643,51362857,51363727,51363734,51363741,51363756,51363765,51363774,51365459,51365599,51365716,51365751,51366423,51366620,51367317,51367605,51367664,51367993,51368979,51369245,51369908,51370273,51370955,51371003,51371010,51371398,51371521,51372698,51373011" + }, + { + "key": "visitor_data", + "value": "CgtfcGhuN2E1X21MbyiNv_a6BjIKCgJVUxIEEgAgGA%3D%3D" + } + ] + }, + { + "service": "GUIDED_HELP", + "params": [ + { + "key": "logged_in", + "value": "0" + } + ] + }, + { + "service": "ECATCHER", + "params": [ + { + "key": "client.version", + "value": "2.20241216" + }, + { + "key": "client.name", + "value": "WEB" + } + ] + } + ], + "mainAppWebResponseContext": { + "loggedOut": true, + "trackingParam": "kx_fmPxhoPZRzS5NsLpTjsXcoUncDywjb7HmMqjGvu5aMkHRgkussh7BwOcCE59TDtslLKPQ-SS" + }, + "webResponseContextExtensionData": { + "hasDecorated": true + } + }, + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "onResponseReceivedEndpoints": [ + { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "appendContinuationItemsAction": { + "continuationItems": [ + { + "commentViewModel": { + "commentKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtLzEyIEYoAQ%3D%3D", + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rR-OMlS-", + "commentSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtLzEyIE8oAQ%3D%3D", + "sharedSurfaceKey": "EhVWSUVXSU5HX0NPTlRFWFRfV0FUQ0gg9AIoAQ%3D%3D", + "inlineRepliesKey": "empty_inline_replies", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCUQtnUYQyITCO_9lf6bsIoDFaRDegUdibsYLA==", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfLzEyIEYoAQ%3D%3D", + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rXfHrZv_", + "commentSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfLzEyIE8oAQ%3D%3D", + "sharedSurfaceKey": "EhVWSUVXSU5HX0NPTlRFWFRfV0FUQ0gg9AIoAQ%3D%3D", + "inlineRepliesKey": "empty_inline_replies", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCQQtnUYRCITCO_9lf6bsIoDFaRDegUdibsYLA==", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5ICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5ICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5LzEyIEYoAQ%3D%3D", + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rZObfQ9y", + "commentSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5LzEyIE8oAQ%3D%3D", + "sharedSurfaceKey": "EhVWSUVXSU5HX0NPTlRFWFRfV0FUQ0gg9AIoAQ%3D%3D", + "inlineRepliesKey": "empty_inline_replies", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCMQtnUYRSITCO_9lf6bsIoDFaRDegUdibsYLA==", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3ICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3ICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3LzEyIEYoAQ%3D%3D", + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rnkWZoH7", + "commentSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3LzEyIE8oAQ%3D%3D", + "sharedSurfaceKey": "EhVWSUVXSU5HX0NPTlRFWFRfV0FUQ0gg9AIoAQ%3D%3D", + "inlineRepliesKey": "empty_inline_replies", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCIQtnUYRiITCO_9lf6bsIoDFaRDegUdibsYLA==", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOLzEyIEYoAQ%3D%3D", + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1sTNcHMYN", + "commentSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOLzEyIE8oAQ%3D%3D", + "sharedSurfaceKey": "EhVWSUVXSU5HX0NPTlRFWFRfV0FUQ0gg9AIoAQ%3D%3D", + "inlineRepliesKey": "empty_inline_replies", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCEQtnUYRyITCO_9lf6bsIoDFaRDegUdibsYLA==", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0ICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0ICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0LzEyIEYoAQ%3D%3D", + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1tu_pIsg4", + "commentSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0LzEyIE8oAQ%3D%3D", + "sharedSurfaceKey": "EhVWSUVXSU5HX0NPTlRFWFRfV0FUQ0gg9AIoAQ%3D%3D", + "inlineRepliesKey": "empty_inline_replies", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCAQtnUYSCITCO_9lf6bsIoDFaRDegUdibsYLA==", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83ICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83ICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83LzEyIEYoAQ%3D%3D", + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1virGMTo7", + "commentSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83LzEyIE8oAQ%3D%3D", + "sharedSurfaceKey": "EhVWSUVXSU5HX0NPTlRFWFRfV0FUQ0gg9AIoAQ%3D%3D", + "inlineRepliesKey": "empty_inline_replies", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB8QtnUYSSITCO_9lf6bsIoDFaRDegUdibsYLA==", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5ICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5ICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5LzEyIEYoAQ%3D%3D", + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC27uYKqxUy", + "commentSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5LzEyIE8oAQ%3D%3D", + "sharedSurfaceKey": "EhVWSUVXSU5HX0NPTlRFWFRfV0FUQ0gg9AIoAQ%3D%3D", + "inlineRepliesKey": "empty_inline_replies", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB4QtnUYSiITCO_9lf6bsIoDFaRDegUdibsYLA==", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1ICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1ICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1LzEyIEYoAQ%3D%3D", + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC28KAyUNVu", + "commentSurfaceKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1LzEyIE8oAQ%3D%3D", + "sharedSurfaceKey": "EhVWSUVXSU5HX0NPTlRFWFRfV0FUQ0gg9AIoAQ%3D%3D", + "inlineRepliesKey": "empty_inline_replies", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB0QtnUYSyITCO_9lf6bsIoDFaRDegUdibsYLA==", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "continuationItemRenderer": { + "button": { + "buttonRenderer": { + "text": { + "runs": [ + { + "text": "Show more replies" + } + ] + }, + "icon": { + "iconType": "SUBDIRECTORY_ARROW_RIGHT" + }, + "trackingParams": "CBwQ8FsiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "command": { + "clickTrackingParams": "CBwQ8FsiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC04yWElmX1RVbU1ZGAYy0wEKTGdldF9jb21tZW50X3dpdGhfcmVwbGllc19zdHJlYW0tLUNnZ0lnQVFWRjdmUk9CSUZDS0FnR0FFaURRb0xDUGZYOTdvR0VQaWVfRDQaUBIaVWd3NHdkUTI1bTRsTjMwMVJvbDRBYUFCQWciAggAKhhVQ1FTcG5ERzNZc0ZOZjUtcUhvY0YtV1EyC04yWElmX1RVbU1ZQAFIMoIBAggBKAlCL2NvbW1lbnQtcmVwbGllcy1pdGVtLVVndzR3ZFEyNW00bE4zMDFSb2w0QWFBQkFn", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + } + } + ], + "targetId": "comment-replies-item-Ugw4wdQ25m4lN301Rol4AaABAg" + } + } + ], + "frameworkUpdates": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtICgoAQ%3D%3D", + "properties": { + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rR-OMlS-", + "content": { + "content": "" + }, + "publishedTime": "3 days ago", + "replyLevel": 1, + "authorButtonA11y": "@ThioJoe", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtIP8BKAE%3D" + }, + "author": { + "channelId": "UCQSpnDG3YsFNf5-qHocF-WQ", + "displayName": "@ThioJoe", + "avatarThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + "isVerified": true, + "sponsorBadgeUrl": "https://yt3.ggpht.com/lzC7kEx1co885CIPmnb7ewxNcXo-FVaZLonJc-Rp-UY2up9CGj5YT11CVRtc1EDIMfGKKky0YA=s32-k-nd", + "sponsorBadgeA11y": "Member (6 years, 4 months)", + "isCurrentUser": false, + "isCreator": true, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBoQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ThioJoe", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQSpnDG3YsFNf5-qHocF-WQ", + "canonicalBaseUrl": "/@ThioJoe" + } + } + }, + "innerBadgeA11y": "@ThioJoe, verified user", + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "2.1K", + "likeCountNotliked": "2.1K", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 2.1K other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "2.1K likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by ThioJoe" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "accessibilityText": "@ThioJoe", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBoQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ThioJoe", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQSpnDG3YsFNf5-qHocF-WQ", + "canonicalBaseUrl": "/@ThioJoe" + } + } + } + }, + "readMoreLogging": { + "trackingParams": "CBsQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "loggingDirectives": { + "trackingParams": "CBsQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtLzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtLzEyIE8oAQ%3D%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "inlineReadMoreButton": { + "isExpanded": false + }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY&lc=Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rR-OMlS-", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY", + "params": "ejFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtogIDwAEA" + } + } + }, + "voiceReplyContainerViewModel": { + "voiceReplyContainerViewModel": { + "voiceReplyUnavailableText": { + "content": "Voice reply is not supported", + "styleRuns": [ + { + "startIndex": 0, + "length": 28 + } + ] + }, + "transcriptText": { + "content": "Transcribed voice reply: \"oh you're right I made a mistake whoops\"", + "styleRuns": [ + { + "startIndex": 0, + "length": 66 + }, + { + "startIndex": 0, + "length": 24, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + }, + "logTapCommand": { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CBkQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtIP8BKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "triStateButtonStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtIP8BKAE%3D", + "stateIdentifier": "TRI_STATE_IDENTIFIER_UNTOGGLED_STATE" + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtLzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtLzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Report" + } + ] + }, + "icon": { + "iconType": "FLAG" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "showEngagementPanelEndpoint": { + "identifier": { + "tag": "PAabuse_report" + }, + "globalConfiguration": { + "params": "qgeYAggCEjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtGuABR2pGVlozYzBkMlJSTWpWdE5HeE9NekF4VW05c05FRmhRVUpCWnk1QlF6RnlNRkU1ZGtWNFJVRkRNWEpTTFU5TmJGTXRLQUk2Y1FnQkVBSWFNVlZuZHpSM1pGRXlOVzAwYkU0ek1ERlNiMncwUVdGQlFrRm5Ma0ZETVhJd1VUbDJSWGhGUVVNeGNsSXRUMDFzVXkwcUMwNHlXRWxtWDFSVmJVMVpNQUdvQVF5NkFSaFZRMUZUY0c1RVJ6TlpjMFpPWmpVdGNVaHZZMFl0VjFIZ0FRRHdBUURTQWdFQjZBSUI%3D" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + }, + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + ], + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJSLU9NbFMtICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfICgoAQ%3D%3D", + "properties": { + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rXfHrZv_", + "content": { + "content": "that was a K like the old windows which represents Kilobytes not Megabytes" + }, + "publishedTime": "3 days ago", + "replyLevel": 1, + "authorButtonA11y": "@Pls2M", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfIP8BKAE%3D" + }, + "author": { + "channelId": "UCWSUHd0FSYNF6cjkMCC8Y9w", + "displayName": "@Pls2M", + "avatarThumbnailUrl": "https://yt3.ggpht.com/A493Oz1QwDx8Fa93HfAieUdYe-HFKlvzQimUpCySjCbOAPcgHQQgQ3PM-MNjxdmdk9ogpOTZ_Y0=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBcQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Pls2M", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWSUHd0FSYNF6cjkMCC8Y9w", + "canonicalBaseUrl": "/@Pls2M" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "42", + "likeCountNotliked": "41", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 41 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "41 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by ThioJoe" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/A493Oz1QwDx8Fa93HfAieUdYe-HFKlvzQimUpCySjCbOAPcgHQQgQ3PM-MNjxdmdk9ogpOTZ_Y0=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "accessibilityText": "@Pls2M", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBcQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Pls2M", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWSUHd0FSYNF6cjkMCC8Y9w", + "canonicalBaseUrl": "/@Pls2M" + } + } + } + }, + "readMoreLogging": { + "trackingParams": "CBgQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "loggingDirectives": { + "trackingParams": "CBgQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfLzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfLzEyIE8oAQ%3D%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "inlineReadMoreButton": { + "isExpanded": false + }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY&lc=Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rXfHrZv_", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY", + "params": "ejFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfogIDwAEA" + } + } + }, + "logTapCommand": { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CBYQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfIP8BKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "triStateButtonStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfIP8BKAE%3D", + "stateIdentifier": "TRI_STATE_IDENTIFIER_UNTOGGLED_STATE" + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfLzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfLzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Report" + } + ] + }, + "icon": { + "iconType": "FLAG" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "showEngagementPanelEndpoint": { + "identifier": { + "tag": "PAabuse_report" + }, + "globalConfiguration": { + "params": "qgeUAggCEjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfGtwBR2pGVlozYzBkMlJSTWpWdE5HeE9NekF4VW05c05FRmhRVUpCWnk1QlF6RnlNRkU1ZGtWNFJVRkRNWEpZWmtoeVduWmZLQUk2YmdnQkVBSWFNVlZuZHpSM1pGRXlOVzAwYkU0ek1ERlNiMncwUVdGQlFrRm5Ma0ZETVhJd1VUbDJSWGhGUVVNeGNsaG1TSEphZGw4cUMwNHlXRWxtWDFSVmJVMVpNQUdvQVF5NkFSaFZRMUZUY0c1RVJ6TlpjMFpPWmpVdGNVaHZZMFl0VjFIZ0FRRHdBUURTQWdFQw%3D%3D" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + }, + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + ], + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJYZkhyWnZfICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5ICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5ICgoAQ%3D%3D", + "properties": { + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rZObfQ9y", + "content": { + "content": "so yes" + }, + "publishedTime": "3 days ago", + "replyLevel": 1, + "authorButtonA11y": "@Pls2M", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5ICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5IP8BKAE%3D" + }, + "author": { + "channelId": "UCWSUHd0FSYNF6cjkMCC8Y9w", + "displayName": "@Pls2M", + "avatarThumbnailUrl": "https://yt3.ggpht.com/A493Oz1QwDx8Fa93HfAieUdYe-HFKlvzQimUpCySjCbOAPcgHQQgQ3PM-MNjxdmdk9ogpOTZ_Y0=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBQQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Pls2M", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWSUHd0FSYNF6cjkMCC8Y9w", + "canonicalBaseUrl": "/@Pls2M" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "19", + "likeCountNotliked": "18", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 18 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "18 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by ThioJoe" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/A493Oz1QwDx8Fa93HfAieUdYe-HFKlvzQimUpCySjCbOAPcgHQQgQ3PM-MNjxdmdk9ogpOTZ_Y0=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "accessibilityText": "@Pls2M", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBQQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Pls2M", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWSUHd0FSYNF6cjkMCC8Y9w", + "canonicalBaseUrl": "/@Pls2M" + } + } + } + }, + "readMoreLogging": { + "trackingParams": "CBUQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "loggingDirectives": { + "trackingParams": "CBUQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5LzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5LzEyIE8oAQ%3D%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "inlineReadMoreButton": { + "isExpanded": false + }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY&lc=Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rZObfQ9y", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY", + "params": "ejFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5ogIDwAEA" + } + } + }, + "logTapCommand": { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CBMQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5IP8BKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "triStateButtonStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5IP8BKAE%3D", + "stateIdentifier": "TRI_STATE_IDENTIFIER_UNTOGGLED_STATE" + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5LzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5LzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Report" + } + ] + }, + "icon": { + "iconType": "FLAG" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "showEngagementPanelEndpoint": { + "identifier": { + "tag": "PAabuse_report" + }, + "globalConfiguration": { + "params": "qgeUAggCEjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5GtwBR2pGVlozYzBkMlJSTWpWdE5HeE9NekF4VW05c05FRmhRVUpCWnk1QlF6RnlNRkU1ZGtWNFJVRkRNWEphVDJKbVVUbDVLQUk2YmdnQkVBSWFNVlZuZHpSM1pGRXlOVzAwYkU0ek1ERlNiMncwUVdGQlFrRm5Ma0ZETVhJd1VUbDJSWGhGUVVNeGNscFBZbVpST1hrcUMwNHlXRWxtWDFSVmJVMVpNQUdvQVF5NkFSaFZRMUZUY0c1RVJ6TlpjMFpPWmpVdGNVaHZZMFl0VjFIZ0FRRHdBUURTQWdFQw%3D%3D" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + }, + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + ], + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5ICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJaT2JmUTl5ICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3ICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3ICgoAQ%3D%3D", + "properties": { + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rnkWZoH7", + "content": { + "content": "​ @ThioJoe wow voice note reply. since when was that a thing", + "commandRuns": [ + { + "startIndex": 1, + "length": 10, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBEQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCQSpnDG3YsFNf5-qHocF-WQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQSpnDG3YsFNf5-qHocF-WQ", + "canonicalBaseUrl": "/channel/UCQSpnDG3YsFNf5-qHocF-WQ" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 1, + "length": 10, + "weightLabel": "FONT_WEIGHT_NORMAL" + } + ] + }, + "publishedTime": "3 days ago", + "replyLevel": 1, + "authorButtonA11y": "@N1r4", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3ICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3IP8BKAE%3D" + }, + "author": { + "channelId": "UCSNxfsFLRzIZ-99aIGZ_dIg", + "displayName": "@N1r4", + "avatarThumbnailUrl": "https://yt3.ggpht.com/gpEcInEquxyAqzFxVmv6m83DSI3OHXXbQr1HgTZaySg-sbpdj6nOp-W-NYdmq8jDa2-Pf8nk134=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBEQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@N1r4", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCSNxfsFLRzIZ-99aIGZ_dIg", + "canonicalBaseUrl": "/@N1r4" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "570", + "likeCountNotliked": "569", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 569 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "569 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by ThioJoe" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/gpEcInEquxyAqzFxVmv6m83DSI3OHXXbQr1HgTZaySg-sbpdj6nOp-W-NYdmq8jDa2-Pf8nk134=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "accessibilityText": "@N1r4", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBEQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@N1r4", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCSNxfsFLRzIZ-99aIGZ_dIg", + "canonicalBaseUrl": "/@N1r4" + } + } + } + }, + "readMoreLogging": { + "trackingParams": "CBIQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "loggingDirectives": { + "trackingParams": "CBIQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3LzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3LzEyIE8oAQ%3D%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "inlineReadMoreButton": { + "isExpanded": false + }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY&lc=Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1rnkWZoH7", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY", + "params": "ejFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3ogIDwAEA" + } + } + }, + "logTapCommand": { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CBAQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3IP8BKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "triStateButtonStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3IP8BKAE%3D", + "stateIdentifier": "TRI_STATE_IDENTIFIER_UNTOGGLED_STATE" + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3LzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3LzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Report" + } + ] + }, + "icon": { + "iconType": "FLAG" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "showEngagementPanelEndpoint": { + "identifier": { + "tag": "PAabuse_report" + }, + "globalConfiguration": { + "params": "qgeUAggCEjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3GtwBR2pGVlozYzBkMlJSTWpWdE5HeE9NekF4VW05c05FRmhRVUpCWnk1QlF6RnlNRkU1ZGtWNFJVRkRNWEp1YTFkYWIwZzNLQUk2YmdnQkVBSWFNVlZuZHpSM1pGRXlOVzAwYkU0ek1ERlNiMncwUVdGQlFrRm5Ma0ZETVhJd1VUbDJSWGhGUVVNeGNtNXJWMXB2U0RjcUMwNHlXRWxtWDFSVmJVMVpNQUdvQVF5NkFSaFZRMUZUY0c1RVJ6TlpjMFpPWmpVdGNVaHZZMFl0VjFIZ0FRRHdBUURTQWdFQw%3D%3D" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + }, + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + ], + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3ICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXJua1dab0g3ICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOICgoAQ%3D%3D", + "properties": { + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1sTNcHMYN", + "content": { + "content": " @N1r4  is it supported for you? for me it has a transcription and says voice reply is not supported", + "commandRuns": [ + { + "startIndex": 0, + "length": 7, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CA4QtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCSNxfsFLRzIZ-99aIGZ_dIg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCSNxfsFLRzIZ-99aIGZ_dIg", + "canonicalBaseUrl": "/channel/UCSNxfsFLRzIZ-99aIGZ_dIg" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 7, + "weightLabel": "FONT_WEIGHT_NORMAL" + } + ] + }, + "publishedTime": "3 days ago", + "replyLevel": 1, + "authorButtonA11y": "@xapplezapple3453", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOIP8BKAE%3D" + }, + "author": { + "channelId": "UCCCvp1-zqEQetYuZduIdd7A", + "displayName": "@xapplezapple3453", + "avatarThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_lfpjOSUn38QauvP05T14pFJ2vGX_wDkuh0E9M6_qOO=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CA4QtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@xapplezapple3453", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCCCvp1-zqEQetYuZduIdd7A", + "canonicalBaseUrl": "/@xapplezapple3453" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "142", + "likeCountNotliked": "141", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 141 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "141 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by ThioJoe" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_lfpjOSUn38QauvP05T14pFJ2vGX_wDkuh0E9M6_qOO=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "accessibilityText": "@xapplezapple3453", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CA4QtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@xapplezapple3453", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCCCvp1-zqEQetYuZduIdd7A", + "canonicalBaseUrl": "/@xapplezapple3453" + } + } + } + }, + "readMoreLogging": { + "trackingParams": "CA8Qr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "loggingDirectives": { + "trackingParams": "CA8Qr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOLzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOLzEyIE8oAQ%3D%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "inlineReadMoreButton": { + "isExpanded": false + }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY&lc=Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1sTNcHMYN", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY", + "params": "ejFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOogIDwAEA" + } + } + }, + "logTapCommand": { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CA0QtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOIP8BKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "triStateButtonStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOIP8BKAE%3D", + "stateIdentifier": "TRI_STATE_IDENTIFIER_UNTOGGLED_STATE" + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOLzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOLzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Report" + } + ] + }, + "icon": { + "iconType": "FLAG" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "showEngagementPanelEndpoint": { + "identifier": { + "tag": "PAabuse_report" + }, + "globalConfiguration": { + "params": "qgeSAggCEjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOGtoBR2pGVlozYzBkMlJSTWpWdE5HeE9NekF4VW05c05FRmhRVUpCWnk1QlF6RnlNRkU1ZGtWNFJVRkRNWE5VVG1OSVRWbE9LQUk2YWdnQkVBSWFNVlZuZHpSM1pGRXlOVzAwYkU0ek1ERlNiMncwUVdGQlFrRm5Ma0ZETVhJd1VUbDJSWGhGUVVNeGMxUk9ZMGhOV1U0cUMwNHlXRWxtWDFSVmJVMVpNQUdvQVF5NkFSaFZRMUZUY0c1RVJ6TlpjMFpPWmpVdGNVaHZZMFl0VjFIZ0FRRHdBUUElM0Q%3D" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + }, + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + ], + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXNUTmNITVlOICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0ICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0ICgoAQ%3D%3D", + "properties": { + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1tu_pIsg4", + "content": { + "content": "​​ @ThioJoe since when can you reply with audio\nnever seen this", + "commandRuns": [ + { + "startIndex": 2, + "length": 10, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CAsQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCQSpnDG3YsFNf5-qHocF-WQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQSpnDG3YsFNf5-qHocF-WQ", + "canonicalBaseUrl": "/channel/UCQSpnDG3YsFNf5-qHocF-WQ" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 2, + "length": 10, + "weightLabel": "FONT_WEIGHT_NORMAL" + } + ] + }, + "publishedTime": "3 days ago (edited)", + "replyLevel": 1, + "authorButtonA11y": "@Moshiur_Rahman", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0ICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0IP8BKAE%3D" + }, + "author": { + "channelId": "UCTR5xEDXSi92_GQPONLU_vw", + "displayName": "@Moshiur_Rahman", + "avatarThumbnailUrl": "https://yt3.ggpht.com/NLBULvx76jIqiPmRaJD0OWYXs644vyEahh6S4TsMRRSG_PsM3B0rYMsctP8jNMHM7iWTBRz2Sw=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAsQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Moshiur_Rahman", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCTR5xEDXSi92_GQPONLU_vw", + "canonicalBaseUrl": "/@Moshiur_Rahman" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "107", + "likeCountNotliked": "106", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 106 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "106 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by ThioJoe" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/NLBULvx76jIqiPmRaJD0OWYXs644vyEahh6S4TsMRRSG_PsM3B0rYMsctP8jNMHM7iWTBRz2Sw=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "accessibilityText": "@Moshiur_Rahman", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAsQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Moshiur_Rahman", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCTR5xEDXSi92_GQPONLU_vw", + "canonicalBaseUrl": "/@Moshiur_Rahman" + } + } + } + }, + "readMoreLogging": { + "trackingParams": "CAwQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "loggingDirectives": { + "trackingParams": "CAwQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0LzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0LzEyIE8oAQ%3D%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "inlineReadMoreButton": { + "isExpanded": false + }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY&lc=Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1tu_pIsg4", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY", + "params": "ejFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0ogIDwAEA" + } + } + }, + "logTapCommand": { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CAoQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0IP8BKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "triStateButtonStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0IP8BKAE%3D", + "stateIdentifier": "TRI_STATE_IDENTIFIER_UNTOGGLED_STATE" + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0LzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0LzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Report" + } + ] + }, + "icon": { + "iconType": "FLAG" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "showEngagementPanelEndpoint": { + "identifier": { + "tag": "PAabuse_report" + }, + "globalConfiguration": { + "params": "qgeSAggCEjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0GtoBR2pGVlozYzBkMlJSTWpWdE5HeE9NekF4VW05c05FRmhRVUpCWnk1QlF6RnlNRkU1ZGtWNFJVRkRNWFIxWDNCSmMyYzBLQUk2YWdnQkVBSWFNVlZuZHpSM1pGRXlOVzAwYkU0ek1ERlNiMncwUVdGQlFrRm5Ma0ZETVhJd1VUbDJSWGhGUVVNeGRIVmZjRWx6WnpRcUMwNHlXRWxtWDFSVmJVMVpNQUdvQVF5NkFSaFZRMUZUY0c1RVJ6TlpjMFpPWmpVdGNVaHZZMFl0VjFIZ0FRRHdBUUElM0Q%3D" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + }, + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + ], + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0ICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXR1X3BJc2c0ICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83ICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83ICgoAQ%3D%3D", + "properties": { + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1virGMTo7", + "content": { + "content": " @xapplezapple3453  I believe you have to view it in the YouTube iOS or Android app, not desktop", + "commandRuns": [ + { + "startIndex": 0, + "length": 19, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CAgQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCCCvp1-zqEQetYuZduIdd7A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCCCvp1-zqEQetYuZduIdd7A", + "canonicalBaseUrl": "/channel/UCCCvp1-zqEQetYuZduIdd7A" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 19, + "weightLabel": "FONT_WEIGHT_NORMAL" + } + ] + }, + "publishedTime": "3 days ago (edited)", + "replyLevel": 1, + "authorButtonA11y": "@ThioJoe", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83ICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83IP8BKAE%3D" + }, + "author": { + "channelId": "UCQSpnDG3YsFNf5-qHocF-WQ", + "displayName": "@ThioJoe", + "avatarThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + "isVerified": true, + "sponsorBadgeUrl": "https://yt3.ggpht.com/lzC7kEx1co885CIPmnb7ewxNcXo-FVaZLonJc-Rp-UY2up9CGj5YT11CVRtc1EDIMfGKKky0YA=s32-k-nd", + "sponsorBadgeA11y": "Member (6 years, 4 months)", + "isCurrentUser": false, + "isCreator": true, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAgQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ThioJoe", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQSpnDG3YsFNf5-qHocF-WQ", + "canonicalBaseUrl": "/@ThioJoe" + } + } + }, + "innerBadgeA11y": "@ThioJoe, verified user", + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "237", + "likeCountNotliked": "236", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 236 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "236 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by ThioJoe" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "accessibilityText": "@ThioJoe", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAgQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ThioJoe", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQSpnDG3YsFNf5-qHocF-WQ", + "canonicalBaseUrl": "/@ThioJoe" + } + } + } + }, + "readMoreLogging": { + "trackingParams": "CAkQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "loggingDirectives": { + "trackingParams": "CAkQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83LzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83LzEyIE8oAQ%3D%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "inlineReadMoreButton": { + "isExpanded": false + }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY&lc=Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC1virGMTo7", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY", + "params": "ejFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83ogIDwAEA" + } + } + }, + "logTapCommand": { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CAcQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83IP8BKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "triStateButtonStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83IP8BKAE%3D", + "stateIdentifier": "TRI_STATE_IDENTIFIER_UNTOGGLED_STATE" + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83LzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83LzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Report" + } + ] + }, + "icon": { + "iconType": "FLAG" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "showEngagementPanelEndpoint": { + "identifier": { + "tag": "PAabuse_report" + }, + "globalConfiguration": { + "params": "qgeUAggCEjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83GtwBR2pGVlozYzBkMlJSTWpWdE5HeE9NekF4VW05c05FRmhRVUpCWnk1QlF6RnlNRkU1ZGtWNFJVRkRNWFpwY2tkTlZHODNLQUk2YmdnQkVBSWFNVlZuZHpSM1pGRXlOVzAwYkU0ek1ERlNiMncwUVdGQlFrRm5Ma0ZETVhJd1VUbDJSWGhGUVVNeGRtbHlSMDFVYnpjcUMwNHlXRWxtWDFSVmJVMVpNQUdvQVF5NkFSaFZRMUZUY0c1RVJ6TlpjMFpPWmpVdGNVaHZZMFl0VjFIZ0FRRHdBUURTQWdFQg%3D%3D" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + }, + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + ], + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83ICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMXZpckdNVG83ICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5ICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5ICgoAQ%3D%3D", + "properties": { + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC27uYKqxUy", + "content": { + "content": " @ThioJoe  Insane new YouTube feature spotted", + "commandRuns": [ + { + "startIndex": 0, + "length": 10, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CAUQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCQSpnDG3YsFNf5-qHocF-WQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQSpnDG3YsFNf5-qHocF-WQ", + "canonicalBaseUrl": "/channel/UCQSpnDG3YsFNf5-qHocF-WQ" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 10, + "weightLabel": "FONT_WEIGHT_NORMAL" + } + ] + }, + "publishedTime": "3 days ago", + "replyLevel": 1, + "authorButtonA11y": "@RippleXRPcorp-2024", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5ICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5IP8BKAE%3D" + }, + "author": { + "channelId": "UC8TLX4SSKMpXl3yuZeQbLDQ", + "displayName": "@RippleXRPcorp-2024", + "avatarThumbnailUrl": "https://yt3.ggpht.com/2FTo9EkfZUvYfpxs-kzbjmKl8SG0pesUxVkUMQAc4yejxPt0qbCU2Bwway6gWR3syeXDmUN7dw=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAUQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@RippleXRPcorp-2024", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC8TLX4SSKMpXl3yuZeQbLDQ", + "canonicalBaseUrl": "/@RippleXRPcorp-2024" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "137", + "likeCountNotliked": "136", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 136 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "136 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by ThioJoe" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/2FTo9EkfZUvYfpxs-kzbjmKl8SG0pesUxVkUMQAc4yejxPt0qbCU2Bwway6gWR3syeXDmUN7dw=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "accessibilityText": "@RippleXRPcorp-2024", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAUQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@RippleXRPcorp-2024", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC8TLX4SSKMpXl3yuZeQbLDQ", + "canonicalBaseUrl": "/@RippleXRPcorp-2024" + } + } + } + }, + "readMoreLogging": { + "trackingParams": "CAYQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "loggingDirectives": { + "trackingParams": "CAYQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5LzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5LzEyIE8oAQ%3D%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "inlineReadMoreButton": { + "isExpanded": false + }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY&lc=Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC27uYKqxUy", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY", + "params": "ejFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5ogIDwAEA" + } + } + }, + "logTapCommand": { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CAQQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5IP8BKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "triStateButtonStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5IP8BKAE%3D", + "stateIdentifier": "TRI_STATE_IDENTIFIER_UNTOGGLED_STATE" + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5LzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5LzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Report" + } + ] + }, + "icon": { + "iconType": "FLAG" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "showEngagementPanelEndpoint": { + "identifier": { + "tag": "PAabuse_report" + }, + "globalConfiguration": { + "params": "qgeSAggCEjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5GtoBR2pGVlozYzBkMlJSTWpWdE5HeE9NekF4VW05c05FRmhRVUpCWnk1QlF6RnlNRkU1ZGtWNFJVRkRNamQxV1V0eGVGVjVLQUk2YWdnQkVBSWFNVlZuZHpSM1pGRXlOVzAwYkU0ek1ERlNiMncwUVdGQlFrRm5Ma0ZETVhJd1VUbDJSWGhGUVVNeU4zVlpTM0Y0VlhrcUMwNHlXRWxtWDFSVmJVMVpNQUdvQVF5NkFSaFZRMUZUY0c1RVJ6TlpjMFpPWmpVdGNVaHZZMFl0VjFIZ0FRRHdBUUElM0Q%3D" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + }, + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + ], + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5ICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjd1WUtxeFV5ICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1ICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1ICgoAQ%3D%3D", + "properties": { + "commentId": "Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC28KAyUNVu", + "content": { + "content": "Voice Replies?? Seems a lil unnecessary imo but i dont mind" + }, + "publishedTime": "3 days ago", + "replyLevel": 1, + "authorButtonA11y": "@RealZerenaFan", + "toolbarStateKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1ICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1IP8BKAE%3D" + }, + "author": { + "channelId": "UC3ODAuviniQtvaq47mTZyVA", + "displayName": "@RealZerenaFan", + "avatarThumbnailUrl": "https://yt3.ggpht.com/Lzs-ycGJPuNL2Ag7oB-z0FGWup5yfv76Y2AnPxdjrDbREAmX44029LhobUkwTkZ5MDudvSVJgg=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAIQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@RealZerenaFan", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC3ODAuviniQtvaq47mTZyVA", + "canonicalBaseUrl": "/@RealZerenaFan" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "85", + "likeCountNotliked": "84", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nlxlwCvy3lBTSpqObahldOpRO3LpeOZFmFCJ7vW2i2ZNQ=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 84 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "84 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by ThioJoe" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/Lzs-ycGJPuNL2Ag7oB-z0FGWup5yfv76Y2AnPxdjrDbREAmX44029LhobUkwTkZ5MDudvSVJgg=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "accessibilityText": "@RealZerenaFan", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAIQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@RealZerenaFan", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC3ODAuviniQtvaq47mTZyVA", + "canonicalBaseUrl": "/@RealZerenaFan" + } + } + } + }, + "readMoreLogging": { + "trackingParams": "CAMQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "loggingDirectives": { + "trackingParams": "CAMQr7QGIhMI7_2V_puwigMVpEN6BR2Juxgs", + "visibility": { + "types": "12" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1LzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1LzEyIE8oAQ%3D%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "inlineReadMoreButton": { + "isExpanded": false + }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY&lc=Ugw4wdQ25m4lN301Rol4AaABAg.AC1r0Q9vExEAC28KAyUNVu", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY", + "params": "ejFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1ogIDwAEA" + } + } + }, + "logTapCommand": { + "logGestureCommand": { + "gestureType": "GESTURE_EVENT_TYPE_LOG_GENERIC_CLICK", + "trackingParams": "CAEQtnUiEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1IP8BKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "triStateButtonStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1IP8BKAE%3D", + "stateIdentifier": "TRI_STATE_IDENTIFIER_UNTOGGLED_STATE" + } + } + }, + { + "entityKey": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1LzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1LzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "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%252Fwatch%253Fv%253DN2XIf_TUmMY&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=N2XIf_TUmMY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "N2XIf_TUmMY" + } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Report" + } + ] + }, + "icon": { + "iconType": "FLAG" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "showEngagementPanelEndpoint": { + "identifier": { + "tag": "PAabuse_report" + }, + "globalConfiguration": { + "params": "qgeSAggCEjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1GtoBR2pGVlozYzBkMlJSTWpWdE5HeE9NekF4VW05c05FRmhRVUpCWnk1QlF6RnlNRkU1ZGtWNFJVRkRNamhMUVhsVlRsWjFLQUk2YWdnQkVBSWFNVlZuZHpSM1pGRXlOVzAwYkU0ek1ERlNiMncwUVdGQlFrRm5Ma0ZETVhJd1VUbDJSWGhGUVVNeU9FdEJlVlZPVm5VcUMwNHlXRWxtWDFSVmJVMVpNQUdvQVF5NkFSaFZRMUZUY0c1RVJ6TlpjMFpPWmpVdGNVaHZZMFl0VjFIZ0FRRHdBUUElM0Q%3D" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + }, + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=" + } + } + ], + "trackingParams": "CAAQg2ciEwjv_ZX-m7CKAxWkQ3oFHYm7GCw=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1ICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3c0d2RRMjVtNGxOMzAxUm9sNEFhQUJBZy5BQzFyMFE5dkV4RUFDMjhLQXlVTlZ1ICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + } + ], + "timestamp": { + "seconds": "1734487105", + "nanos": 281523814 + } + } + } +} From 5ce84c44a6844f692258066c83e04df875e0aa91 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 20 Dec 2024 03:06:03 +0100 Subject: [PATCH 055/191] fix: error 400 when fetching player with login --- cli/src/main.rs | 20 +++++++++++++++++++- src/client/mod.rs | 4 ++++ src/client/player.rs | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index a1793e0..1e0fc2d 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -14,6 +14,7 @@ use futures_util::stream::{self, StreamExt}; use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; use owo_colors::OwoColorize; use rustypipe::{ + cache::FileStorage, client::{ClientType, RustyPipe}, model::{ richtext::{RichText, ToPlaintext}, @@ -53,6 +54,12 @@ struct Cli { /// YouTube content country #[clap(long, global = true)] country: Option, + #[clap(long, global = true)] + /// RustyPipe cache file + cache_file: Option, + /// RustyPipe report folder + #[clap(long, global = true)] + report_dir: Option, } #[derive(Parser)] @@ -618,12 +625,23 @@ async fn run() -> anyhow::Result<()> { let mut storage_dir = dirs::data_dir().expect("no data dir"); storage_dir.push("rustypipe"); - std::fs::create_dir_all(&storage_dir).expect("could not create data dir"); + + if cli.cache_file.is_none() || cli.report_dir.is_none() { + std::fs::create_dir_all(&storage_dir).expect("could not create data dir"); + } let mut rp = RustyPipe::builder() .storage_dir(storage_dir) .visitor_data_opt(cli.vdata) .timeout(Duration::from_secs(15)); + + if let Some(cache_file) = cli.cache_file { + rp = rp.storage(Box::new(FileStorage::new(cache_file))); + } + if let Some(report_dir) = cli.report_dir { + rp = rp.reporter(Box::new(FileReporter::new(report_dir))); + } + if cli.report { rp = rp .report() diff --git a/src/client/mod.rs b/src/client/mod.rs index cef5916..2fec2a1 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1458,6 +1458,10 @@ impl RustyPipeQuery { } /// Enable authentication for this request + /// + /// RustyPipe uses YouTube TV's OAuth authentication. This means that authentication + /// only works when using the TV client. Enabling authentication for other clients + /// results in a 400 error. #[must_use] pub fn authenticated(mut self) -> Self { self.opts.auth = Some(true); diff --git a/src/client/player.rs b/src/client/player.rs index 47fb7a0..bdfd0e9 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -90,7 +90,7 @@ impl RustyPipeQuery { match self .clone() .authenticated() - .player_from_client(video_id, *client) + .player_from_client(video_id, ClientType::Tv) .await { Ok(res) => return Ok(res), From fd51809202a741d26368079b00f6f12a82f284fb Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 20 Dec 2024 03:10:34 +0100 Subject: [PATCH 056/191] test: fix tests --- .../youtube__music_artist_no_more_albums.snap | 15 +++++++++++++++ tests/youtube.rs | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/snapshots/youtube__music_artist_no_more_albums.snap b/tests/snapshots/youtube__music_artist_no_more_albums.snap index c73304d..00808cc 100644 --- a/tests/snapshots/youtube__music_artist_no_more_albums.snap +++ b/tests/snapshots/youtube__music_artist_no_more_albums.snap @@ -11,6 +11,21 @@ MusicArtist( subscriber_count: "[subscriber_count]", tracks: "[tracks]", albums: [ + AlbumItem( + id: "MPREb_5gkbwhqC4AJ", + name: "Goldener Schluss (Live in Berlin)", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: album, + year: Some(2024), + by_va: false, + ), AlbumItem( id: "MPREb_8PsIyll0LFV", name: "Bleib in der Schule", diff --git a/tests/youtube.rs b/tests/youtube.rs index b531cd7..a1c28cd 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2719,7 +2719,7 @@ async fn invalid_ctoken(#[case] ep: ContinuationEndpoint, rp: RustyPipe) { async fn isrc_search_languages(rp: RustyPipe) { for lang in LANGUAGES { // flaky for English, skipping for now - if matches!(lang, Language::EnIn) { + if matches!(lang, Language::EnGb | Language::EnIn) { continue; } From 59625de949d94ba3d011e35769406f15705b0d03 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 20 Dec 2024 03:41:42 +0100 Subject: [PATCH 057/191] test: fix tests --- tests/youtube.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/youtube.rs b/tests/youtube.rs index a1c28cd..e29f1f6 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2719,7 +2719,7 @@ async fn invalid_ctoken(#[case] ep: ContinuationEndpoint, rp: RustyPipe) { async fn isrc_search_languages(rp: RustyPipe) { for lang in LANGUAGES { // flaky for English, skipping for now - if matches!(lang, Language::EnGb | Language::EnIn) { + if matches!(lang, Language::En | Language::EnGb | Language::EnIn) { continue; } From 8eaa2331fd6dd5b6d859e120f70d8869d44381c2 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 20 Dec 2024 14:32:37 +0100 Subject: [PATCH 058/191] chore(release): release rustypipe v0.8.0 --- CHANGELOG.md | 22 ++++++++++++++++++++++ Cargo.toml | 4 ++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67c0d8b..8386c45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,28 @@ All notable changes to this project will be documented in this file. +## [v0.8.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.7.2..rustypipe/v0.8.0) - 2024-12-20 + +### 🚀 Features + +- Log warning when generating report - ([258f18a](https://codeberg.org/ThetaDev/rustypipe/commit/258f18a99d848ae7e6808beddad054037a3b3799)) +- Add auto-dubbed audio tracks, improved StreamFilter - ([1d1ae17](https://codeberg.org/ThetaDev/rustypipe/commit/1d1ae17ffc16724667d43142aa57abda2e6468e4)) + +### 🐛 Bug Fixes + +- Replace deprecated call to `time::util::days_in_year_month` - ([69ef6ae](https://codeberg.org/ThetaDev/rustypipe/commit/69ef6ae51e9b09a9b9c06057e717bf6f054c9803)) +- Nsig fn extra variable extraction - ([8014741](https://codeberg.org/ThetaDev/rustypipe/commit/80147413ee3190bb530f8f6b02738bcc787a6444)) +- Deobf function extraction, allow $ in variable names - ([8cadbc1](https://codeberg.org/ThetaDev/rustypipe/commit/8cadbc1a4c865d085e30249dba0f353472456a32)) +- Remove leading zero-width-space from comments, ensure space after links - ([162959c](https://codeberg.org/ThetaDev/rustypipe/commit/162959ca4513a03496776fae905b4bf20c79899c)) +- Update client versions, enable Opus audio with iOS client - ([1b60c97](https://codeberg.org/ThetaDev/rustypipe/commit/1b60c97a183b9d74b92df14b5b113c61aba1be7f)) +- Extract transcript from comment voice replies - ([30f60c3](https://codeberg.org/ThetaDev/rustypipe/commit/30f60c30f9d87d39585db93c1c9e274f48d688ba)) +- Error 400 when fetching player with login - ([5ce84c4](https://codeberg.org/ThetaDev/rustypipe/commit/5ce84c44a6844f692258066c83e04df875e0aa91)) + +### ⚙️ Miscellaneous Tasks + +- Update user agent - ([53e5846](https://codeberg.org/ThetaDev/rustypipe/commit/53e5846286e8db920622152c2a0a57ddc7c41d25)) + + ## [v0.7.2](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.7.1..rustypipe/v0.7.2) - 2024-12-13 ### 🐛 Bug Fixes diff --git a/Cargo.toml b/Cargo.toml index 5300698..df2e78f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.7.2" +version = "0.8.0" rust-version = "1.67.1" edition.workspace = true authors.workspace = true @@ -73,7 +73,7 @@ path_macro = "1.0.0" tracing-test = "0.2.5" # Included crates -rustypipe = { path = ".", version = "0.7.0", default-features = false } +rustypipe = { path = ".", version = "0.8.0", default-features = false } rustypipe-downloader = { path = "./downloader", version = "0.2.1", default-features = false, features = [ "indicatif", "audiotag", From 6a28aec1c359f4080d1becea92d1b3fb8fcd3df9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 20 Dec 2024 14:49:48 +0100 Subject: [PATCH 059/191] chore(release): release rustypipe-downloader v0.2.6 --- downloader/CHANGELOG.md | 7 +++++++ downloader/Cargo.toml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md index 32ec018..3f185d4 100644 --- a/downloader/CHANGELOG.md +++ b/downloader/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. +## [v0.2.6](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.5..rustypipe-downloader/v0.2.6) - 2024-12-20 + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rustypipe to 0.8.0 + + ## [v0.2.5](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.4..rustypipe-downloader/v0.2.5) - 2024-12-13 ### 🐛 Bug Fixes diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index b37b268..9a0148a 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-downloader" -version = "0.2.5" +version = "0.2.6" rust-version = "1.67.1" edition.workspace = true authors.workspace = true From 7853489cf946a522693dc2b4c1d219309c7dbd7a Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 20 Dec 2024 14:51:11 +0100 Subject: [PATCH 060/191] chore(release): release rustypipe-cli v0.5.0 --- cli/CHANGELOG.md | 17 +++++++++++++++++ cli/Cargo.toml | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 1b72936..d5a5ef9 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -3,6 +3,23 @@ All notable changes to this project will be documented in this file. +## [v0.5.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.4.0..rustypipe-cli/v0.5.0) - 2024-12-20 + +### 🚀 Features + +- Get comment replies, rich text formatting - ([dceba44](https://codeberg.org/ThetaDev/rustypipe/commit/dceba442fe1a1d5d8d2a6d9422ff699593131f6d)) + +### 🐛 Bug Fixes + +- Replace futures dependency with futures-util - ([5c39bf4](https://codeberg.org/ThetaDev/rustypipe/commit/5c39bf4842b13d37a4277ea5506e15c179892ce5)) +- Error 400 when fetching player with login - ([5ce84c4](https://codeberg.org/ThetaDev/rustypipe/commit/5ce84c44a6844f692258066c83e04df875e0aa91)) + +### ⚙️ Miscellaneous Tasks + +- Add docs badge to README - ([706e881](https://codeberg.org/ThetaDev/rustypipe/commit/706e88134c0e94ce7d880735e9d31b3ff531a4f9)) +- *(deps)* Update rustypipe to 0.8.0 + + ## [v0.4.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.3.0..rustypipe-cli/v0.4.0) - 2024-11-10 ### 🚀 Features diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 3fb1441..1ed00f6 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-cli" -version = "0.4.0" +version = "0.5.0" rust-version = "1.70.0" edition.workspace = true authors.workspace = true From 75fce91353c02cd498f27d21b08261c23ea03d70 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 26 Dec 2024 01:14:38 +0100 Subject: [PATCH 061/191] fix: dont leak authorization and cookie header in reports --- src/client/mod.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 2fec2a1..82f0514 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1944,8 +1944,14 @@ impl RustyPipeQuery { request .headers() .iter() + .filter(|(k, _)| k != &header::COOKIE) .map(|(k, v)| { - (k.as_str(), v.to_str().unwrap_or_default().to_owned()) + let vstr = if k == header::AUTHORIZATION { + "[redacted]" + } else { + v.to_str().unwrap_or_default() + }; + (k.as_str(), vstr.to_owned()) }) .collect(), ), From 8602dd42cb8fb89126ee17f4452d7e12e14828f2 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 26 Dec 2024 01:54:00 +0100 Subject: [PATCH 062/191] ci: fix printf statement --- .forgejo/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 7e55c5c..2b63df2 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -29,7 +29,7 @@ jobs: - name: 🧪 Test run: | - printf "$RUSTYPIPE_CACHE" > rustypipe_cache.json + printf '%s\n' "$RUSTYPIPE_CACHE" > rustypipe_cache.json echo "authenticated=$YT_AUTHENTICATED" cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace env: From f79764490ccfba1746ceada75fea84f989d8e37e Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 26 Dec 2024 02:01:44 +0100 Subject: [PATCH 063/191] ci: count cache file characters --- .forgejo/workflows/ci.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 2b63df2..325cc80 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -31,6 +31,7 @@ jobs: run: | printf '%s\n' "$RUSTYPIPE_CACHE" > rustypipe_cache.json echo "authenticated=$YT_AUTHENTICATED" + wc -c rustypipe_cache.json cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace env: ALL_PROXY: "http://warpproxy:8124" From ec7a195c98f39346c4c8db875212c3843580450e Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 27 Dec 2024 22:10:19 +0100 Subject: [PATCH 064/191] fix: require new time crate version which added Month::length --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index df2e78f..a90fa4e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,7 +42,7 @@ serde_with = { version = "3.0.0", default-features = false, features = [ ] } serde_plain = "1.0.0" rand = "0.8.0" -time = { version = "0.3.10", features = [ +time = { version = "0.3.37", features = [ "macros", "serde-human-readable", "serde-well-known", From 0b3afc1b135056bef3c977e84acba5eab334360c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 5 Jan 2025 05:30:50 +0100 Subject: [PATCH 065/191] test: fix tests --- tests/youtube.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/youtube.rs b/tests/youtube.rs index e29f1f6..bbe39a4 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2186,7 +2186,7 @@ async fn music_search_playlists(rp: RustyPipe, unlocalized: bool) { async fn music_search_playlists_community(rp: RustyPipe) { let res = rp .query() - .music_search_playlists("Miku my beloved (Jaiden Animation Miku Playlist)", true) + .music_search_playlists("PLgAAMoX4rK3KhSGmIsN0LEoC3qowEr2Lz", true) .await .unwrap(); From 28cdba59c5f418456352a213fb199f1286d8e4d2 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 5 Jan 2025 05:36:14 +0100 Subject: [PATCH 066/191] test: fix tests --- tests/snapshots/youtube__music_artist_basic.snap | 2 +- ...youtube__music_artist_no_more_albums_intl.snap | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/snapshots/youtube__music_artist_basic.snap b/tests/snapshots/youtube__music_artist_basic.snap index c4f3f75..e025c9d 100644 --- a/tests/snapshots/youtube__music_artist_basic.snap +++ b/tests/snapshots/youtube__music_artist_basic.snap @@ -6,7 +6,7 @@ MusicArtist( id: "UC7cl4MmM6ZZ2TcFyMk_b4pg", name: "Unheilig", header_image: "[header_image]", - description: Some("Unheilig is a German band that draws from a variety of influences, including various pop and electronic styles as well as heavier, nihilistic hard rock. The band was founded in Aachen in 1999 and principally consisted of singer Bernd Heinrich \"Der Graf\" along with various musical partners. He was accompanied for live shows with musicians Christoph \"Licky\" Termühlen, Henning Verlage, and Martin \"Potti\" Potthoff. The group\'s debut, Phosphor, came out in 2000.\n\nFrom Wikipedia (https://en.wikipedia.org/wiki/Unheilig) under Creative Commons Attribution CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode)"), + description: Some("Unheilig is a German band that draws from a variety of influences, including various pop and electronic styles as well as heavier, nihilistic hard rock. The band was founded in Aachen in 1999 and principally consisted of singer Bernd Heinrich \"Der Graf\" along with various musical partners. He was accompanied for live shows by musicians Christoph \"Licky\" Termühlen, Henning Verlage, and Martin \"Potti\" Potthoff. The group\'s debut, Phosphor, came out in 2000.\n\nFrom Wikipedia (https://en.wikipedia.org/wiki/Unheilig) under Creative Commons Attribution CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode)"), wikipedia_url: Some("https://en.wikipedia.org/wiki/Unheilig"), subscriber_count: "[subscriber_count]", tracks: "[tracks]", diff --git a/tests/snapshots/youtube__music_artist_no_more_albums_intl.snap b/tests/snapshots/youtube__music_artist_no_more_albums_intl.snap index ddd35a7..3e642c4 100644 --- a/tests/snapshots/youtube__music_artist_no_more_albums_intl.snap +++ b/tests/snapshots/youtube__music_artist_no_more_albums_intl.snap @@ -11,6 +11,21 @@ MusicArtist( subscriber_count: "[subscriber_count]", tracks: "[tracks]", albums: [ + AlbumItem( + id: "MPREb_5gkbwhqC4AJ", + name: "[name]", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "[name]", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: album, + year: Some(2024), + by_va: false, + ), AlbumItem( id: "MPREb_8PsIyll0LFV", name: "[name]", From ab19034ab19baf090e83eada056559676ffdadce Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 5 Jan 2025 04:50:35 +0000 Subject: [PATCH 067/191] chore(deps): update rust crate rstest to 0.24.0 (#20) --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index a90fa4e..340096f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -66,7 +66,7 @@ dirs = "5.0.0" filenamify = "0.1.0" # Testing -rstest = "0.23.0" +rstest = "0.24.0" tokio-test = "0.4.2" insta = { version = "1.17.1", features = ["ron", "redactions"] } path_macro = "1.0.0" From 14e399594f97a1228a8c2991a14dd8745af1beb7 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 26 Dec 2024 01:03:52 +0100 Subject: [PATCH 068/191] feat: add functions to fetch a user's history and subscriptions --- Cargo.toml | 6 +- README.md | 4 + codegen/src/download_testfiles.rs | 88 + src/client/channel.rs | 1 + src/client/history.rs | 174 + src/client/mod.rs | 171 +- src/client/music_details.rs | 9 +- src/client/music_history.rs | 180 + src/client/music_playlist.rs | 13 + src/client/music_search.rs | 1 + src/client/pagination.rs | 113 +- src/client/player.rs | 33 +- src/client/playlist.rs | 23 + src/client/response/history.rs | 8 + src/client/response/mod.rs | 7 + src/client/response/music_history.rs | 8 + src/client/response/music_item.rs | 12 +- src/client/response/player.rs | 5 +- src/client/response/url_endpoint.rs | 10 + src/client/search.rs | 1 + ...__client__history__tests__map_history.snap | 247 + ...history__tests__map_subscription_feed.snap | 4212 + ...nt__music_history__tests__map_history.snap | 748 + ...__pagination__tests__map_saved_albums.snap | 63 + ..._pagination__tests__map_saved_artists.snap | 436 + ...agination__tests__map_saved_playlists.snap | 71 + ...__pagination__tests__map_saved_tracks.snap | 811 + ..._pagination__tests__map_subscriptions.snap | 1751 + src/client/video_details.rs | 3 + src/model/paginator.rs | 17 +- src/serializer/text.rs | 4 +- src/util/mod.rs | 21 +- testfiles/channel/channel_playlists.json | 7812 ++ testfiles/history/history.json | 5061 + testfiles/history/subscription_feed.json | 76628 ++++++++++++++++ testfiles/history/subscriptions.json | 45121 +++++++++ testfiles/music_history/music_history.json | 11448 +++ testfiles/music_history/saved_albums.json | 1429 + testfiles/music_history/saved_artists.json | 4188 + testfiles/music_history/saved_playlists.json | 1723 + testfiles/music_history/saved_tracks.json | 14230 +++ tests/youtube.rs | 146 +- 42 files changed, 176967 insertions(+), 70 deletions(-) create mode 100644 src/client/history.rs create mode 100644 src/client/music_history.rs create mode 100644 src/client/response/history.rs create mode 100644 src/client/response/music_history.rs create mode 100644 src/client/snapshots/rustypipe__client__history__tests__map_history.snap create mode 100644 src/client/snapshots/rustypipe__client__history__tests__map_subscription_feed.snap create mode 100644 src/client/snapshots/rustypipe__client__music_history__tests__map_history.snap create mode 100644 src/client/snapshots/rustypipe__client__pagination__tests__map_saved_albums.snap create mode 100644 src/client/snapshots/rustypipe__client__pagination__tests__map_saved_artists.snap create mode 100644 src/client/snapshots/rustypipe__client__pagination__tests__map_saved_playlists.snap create mode 100644 src/client/snapshots/rustypipe__client__pagination__tests__map_saved_tracks.snap create mode 100644 src/client/snapshots/rustypipe__client__pagination__tests__map_subscriptions.snap create mode 100644 testfiles/channel/channel_playlists.json create mode 100644 testfiles/history/history.json create mode 100644 testfiles/history/subscription_feed.json create mode 100644 testfiles/history/subscriptions.json create mode 100644 testfiles/music_history/music_history.json create mode 100644 testfiles/music_history/saved_albums.json create mode 100644 testfiles/music_history/saved_artists.json create mode 100644 testfiles/music_history/saved_playlists.json create mode 100644 testfiles/music_history/saved_tracks.json diff --git a/Cargo.toml b/Cargo.toml index 340096f..17e3a20 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,6 +41,7 @@ serde_with = { version = "3.0.0", default-features = false, features = [ "macros", ] } serde_plain = "1.0.0" +sha1 = "0.10.0" rand = "0.8.0" time = { version = "0.3.37", features = [ "macros", @@ -51,7 +52,7 @@ futures-util = "0.3.31" ress = "0.11.0" phf = "0.11.0" phf_codegen = "0.11.0" -base64 = "0.22.0" +data-encoding = "2.0.0" urlencoding = "2.1.0" quick-xml = { version = "0.37.0", features = ["serialize"] } tracing = { version = "0.1.0", features = ["log"] } @@ -105,11 +106,12 @@ serde.workspace = true serde_json.workspace = true serde_with.workspace = true serde_plain.workspace = true +sha1.workspace = true rand.workspace = true time.workspace = true ress.workspace = true phf.workspace = true -base64.workspace = true +data-encoding.workspace = true urlencoding.workspace = true tracing.workspace = true quick-xml = { workspace = true, optional = true } diff --git a/README.md b/README.md index 9c22284..5701a81 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,8 @@ RustyPipe is a fully featured Rust client for the public YouTube / YouTube Music - **Search suggestions** - **Trending** - **URL resolver** +- **Subscriptions** +- **Playback history** ### YouTube Music @@ -34,6 +36,8 @@ RustyPipe is a fully featured Rust client for the public YouTube / YouTube Music - **Moods/Genres** - **Charts** - **New** (albums, music videos) +- **Saved items** +- **Playback history** ## Getting started diff --git a/codegen/src/download_testfiles.rs b/codegen/src/download_testfiles.rs index 22e4c8c..9e6f2bf 100644 --- a/codegen/src/download_testfiles.rs +++ b/codegen/src/download_testfiles.rs @@ -39,6 +39,9 @@ pub async fn download_testfiles() { search_playlists().await; search_empty().await; trending().await; + history().await; + subscriptions().await; + subscription_feed().await; music_playlist().await; music_playlist_cont().await; @@ -62,6 +65,11 @@ pub async fn download_testfiles() { music_charts().await; music_genres().await; music_genre().await; + music_history().await; + music_saved_artists().await; + music_saved_albums().await; + music_saved_tracks().await; + music_saved_playlists().await; } const CLIENT_TYPES: [ClientType; 5] = [ @@ -455,6 +463,36 @@ async fn trending() { rp.query().trending().await.unwrap(); } +async fn history() { + let json_path = path!(*TESTFILES_DIR / "history" / "history.json"); + if json_path.exists() { + return; + } + + let rp = rp_testfile(&json_path); + rp.query().history().await.unwrap(); +} + +async fn subscriptions() { + let json_path = path!(*TESTFILES_DIR / "history" / "subscriptions.json"); + if json_path.exists() { + return; + } + + let rp = rp_testfile(&json_path); + rp.query().subscriptions().await.unwrap(); +} + +async fn subscription_feed() { + let json_path = path!(*TESTFILES_DIR / "history" / "subscription_feed.json"); + if json_path.exists() { + return; + } + + let rp = rp_testfile(&json_path); + rp.query().subscription_feed().await.unwrap(); +} + async fn music_playlist() { for (name, id) in [ ("short", "RDCLAK5uy_kFQXdnqMaQCVx2wpUM4ZfbsGCDibZtkJk"), @@ -776,3 +814,53 @@ async fn music_genre() { rp.query().music_genre(id).await.unwrap(); } } + +async fn music_history() { + let json_path = path!(*TESTFILES_DIR / "music_history" / "music_history.json"); + if json_path.exists() { + return; + } + + let rp = rp_testfile(&json_path); + rp.query().music_history().await.unwrap(); +} + +async fn music_saved_artists() { + let json_path = path!(*TESTFILES_DIR / "music_history" / "saved_artists.json"); + if json_path.exists() { + return; + } + + let rp = rp_testfile(&json_path); + rp.query().music_saved_artists().await.unwrap(); +} + +async fn music_saved_albums() { + let json_path = path!(*TESTFILES_DIR / "music_history" / "saved_albums.json"); + if json_path.exists() { + return; + } + + let rp = rp_testfile(&json_path); + rp.query().music_saved_albums().await.unwrap(); +} + +async fn music_saved_tracks() { + let json_path = path!(*TESTFILES_DIR / "music_history" / "saved_tracks.json"); + if json_path.exists() { + return; + } + + let rp = rp_testfile(&json_path); + rp.query().music_saved_tracks().await.unwrap(); +} + +async fn music_saved_playlists() { + let json_path = path!(*TESTFILES_DIR / "music_history" / "saved_playlists.json"); + if json_path.exists() { + return; + } + + let rp = rp_testfile(&json_path); + rp.query().music_saved_playlists().await.unwrap(); +} diff --git a/src/client/channel.rs b/src/client/channel.rs index 6c56048..533e0a3 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -230,6 +230,7 @@ impl MapResponse>> for response::Channel { mapper.ctoken, visitor_data, ContinuationEndpoint::Browse, + false, ); Ok(MapResult { diff --git a/src/client/history.rs b/src/client/history.rs new file mode 100644 index 0000000..b727e50 --- /dev/null +++ b/src/client/history.rs @@ -0,0 +1,174 @@ +use std::fmt::Debug; + +use serde::Serialize; + +use crate::{ + client::{response, ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery}, + error::{Error, ExtractionError}, + model::{ + paginator::{ContinuationEndpoint, Paginator}, + ChannelItem, VideoItem, + }, + serializer::MapResult, +}; + +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +struct QHistorySearch<'a> { + browse_id: &'a str, + query: &'a str, +} + +impl RustyPipeQuery { + /// Get a list of videos from YouTube which the current user recently played + /// + /// Requires authentication cookies. + #[tracing::instrument(skip(self), level = "error")] + pub async fn history(&self) -> Result, Error> { + let request_body = QBrowse { + browse_id: "FEhistory", + }; + + self.clone() + .authenticated() + .execute_request::( + ClientType::Desktop, + "history", + "", + "browse", + &request_body, + ) + .await + } + + /// Search the YouTube playback history of the current user + /// + /// Requires authentication cookies. + #[tracing::instrument(skip(self), level = "error")] + pub async fn history_search + Debug>( + &self, + query: S, + ) -> Result, Error> { + let query = query.as_ref(); + let request_body = QHistorySearch { + browse_id: "FEhistory", + query, + }; + + self.clone() + .authenticated() + .execute_request::( + ClientType::Desktop, + "history_search", + query, + "browse", + &request_body, + ) + .await + } + + /// Get a list of channels the current user subscribed to from YouTube + /// + /// Requires authentication cookies. + #[tracing::instrument(skip(self), level = "error")] + pub async fn subscriptions(&self) -> Result, Error> { + self.clone() + .authenticated() + .continuation( + "4qmFsgIqEgpGRWNoYW5uZWxzGgRrQUlDmgIVYnJvd3NlLWZlZWRGRWNoYW5uZWxz", + ContinuationEndpoint::Browse, + None, + ) + .await + } + + /// Get the YouTube subscription feed of the current user + /// + /// Requires authentication cookies. + #[tracing::instrument(skip(self), level = "error")] + pub async fn subscription_feed(&self) -> Result, Error> { + let request_body = QBrowse { + browse_id: "FEsubscriptions", + }; + + self.clone() + .authenticated() + .execute_request::( + ClientType::Desktop, + "subscription_feed", + "", + "browse", + &request_body, + ) + .await + } +} + +impl MapResponse> for response::History { + fn map_response( + self, + ctx: &MapRespCtx<'_>, + ) -> Result>, ExtractionError> { + let items = self + .contents + .two_column_browse_results_renderer + .contents + .into_iter() + .next() + .ok_or(ExtractionError::InvalidData( + "twoColumnBrowseResultsRenderer empty".into(), + ))? + .tab_renderer + .content + .section_list_renderer + .contents; + + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); + mapper.map_response(items); + + Ok(MapResult { + c: Paginator::new_ext( + None, + mapper.items, + mapper.ctoken, + None, + crate::model::paginator::ContinuationEndpoint::Browse, + true, + ), + warnings: mapper.warnings, + }) + } +} + +#[cfg(test)] +mod tests { + use std::{fs::File, io::BufReader}; + + use path_macro::path; + use rstest::rstest; + + use crate::util::tests::TESTFILES; + + use super::*; + + #[rstest] + #[case::history("history")] + #[case::subscription_feed("subscription_feed")] + fn map_history(#[case] name: &str) { + let json_path = path!(*TESTFILES / "history" / format!("{name}.json")); + let json_file = File::open(json_path).unwrap(); + + let history: response::History = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + let map_res = history.map_response(&MapRespCtx::test("")).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]", + }); + } +} diff --git a/src/client/mod.rs b/src/client/mod.rs index 82f0514..47e554a 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -3,10 +3,12 @@ pub(crate) mod response; mod channel; +mod history; mod music_artist; mod music_charts; mod music_details; mod music_genres; +mod music_history; mod music_new; mod music_playlist; mod music_search; @@ -31,6 +33,7 @@ use once_cell::sync::Lazy; use regex::Regex; use reqwest::{header, Client, ClientBuilder, Request, RequestBuilder, Response, StatusCode}; use serde::{de::DeserializeOwned, Deserialize, Serialize}; +use sha1::{Digest, Sha1}; use time::OffsetDateTime; use tokio::sync::RwLock as AsyncRwLock; @@ -83,6 +86,13 @@ pub enum ClientType { } impl ClientType { + fn is_web(self) -> bool { + matches!( + self, + ClientType::Desktop | ClientType::DesktopMusic | ClientType::Mobile + ) + } + fn needs_deobf(self) -> bool { !matches!(self, ClientType::Ios) } @@ -293,9 +303,9 @@ const YOUTUBEI_V1_URL: &str = "https://www.youtube.com/youtubei/v1/"; const YOUTUBEI_V1_GAPIS_URL: &str = "https://youtubei.googleapis.com/youtubei/v1/"; const YOUTUBE_MUSIC_V1_URL: &str = "https://music.youtube.com/youtubei/v1/"; const YOUTUBEI_MOBILE_V1_URL: &str = "https://m.youtube.com/youtubei/v1/"; -const YOUTUBE_HOME_URL: &str = "https://www.youtube.com/"; -const YOUTUBE_MUSIC_HOME_URL: &str = "https://music.youtube.com/"; -const YOUTUBE_MOBILE_HOME_URL: &str = "https://m.youtube.com/"; +const YOUTUBE_HOME_URL: &str = "https://www.youtube.com"; +const YOUTUBE_MUSIC_HOME_URL: &str = "https://music.youtube.com"; +const YOUTUBE_MOBILE_HOME_URL: &str = "https://m.youtube.com"; const YOUTUBE_TV_URL: &str = "https://www.youtube.com/tv"; const DISABLE_PRETTY_PRINT_PARAMETER: &str = "prettyPrint=false"; @@ -479,6 +489,7 @@ struct CacheHolder { clients: HashMap>>, deobf: AsyncRwLock>, oauth_token: RwLock>, + auth_cookie: RwLock>, } #[derive(Default, Debug, Clone, Serialize, Deserialize)] @@ -489,6 +500,8 @@ struct CacheData { deobf: CacheEntry, #[serde(skip_serializing_if = "Option::is_none")] oauth_token: Option, + #[serde(skip_serializing_if = "Option::is_none")] + auth_cookie: Option, } #[derive(Default, Debug, Clone, Serialize, Deserialize)] @@ -652,6 +665,7 @@ impl RustyPipeBuilder { clients: cache_clients, deobf: AsyncRwLock::new(cdata.deobf), oauth_token: RwLock::new(cdata.oauth_token), + auth_cookie: RwLock::new(cdata.auth_cookie), }, default_opts: self.default_opts, user_agent, @@ -797,13 +811,6 @@ impl RustyPipeBuilder { self } - /// Enable authentication for all requests - #[must_use] - pub fn authenticated(mut self) -> Self { - self.default_opts.auth = Some(true); - self - } - /// Disable authentication for all requests #[must_use] pub fn unauthenticated(mut self) -> Self { @@ -926,7 +933,15 @@ impl RustyPipe { let status = res.status(); if status.is_client_error() || status.is_server_error() { - Err(Error::HttpStatus(status.into(), "none".into())) + let error_msg = if let Ok(body) = res.text().await { + serde_json::from_str::(&body) + .map(|r| Cow::from(r.error.message)) + .ok() + } else { + None + } + .unwrap_or_default(); + Err(Error::HttpStatus(status.into(), error_msg)) } else { Ok(res) } @@ -1120,6 +1135,7 @@ impl RustyPipe { clients: cache_clients, deobf: self.inner.cache.deobf.read().await.clone(), oauth_token: self.inner.cache.oauth_token.read().unwrap().clone(), + auth_cookie: self.inner.cache.auth_cookie.read().unwrap().clone(), }; match serde_json::to_string(&cdata) { @@ -1417,6 +1433,22 @@ impl RustyPipe { Err(Error::Auth(AuthError::NoLogin)) } } + + /// Set the user authentication cookie + /// + /// The cookie is used for authenticated requests with browser-based clients + /// (Desktop, DesktopMusic, Mobile). + /// + /// **Note:** YouTube rotates cookies every few minutes when using the web applications. + /// So you should not use the session you obtained cookies from afterwards or it will + /// become invalid. + /// + /// I recommend to log in using Incognito mode, get the cookies from the devtools + /// and then close the page. + pub async fn set_auth_cookie>(&self, cookie: S) { + let mut c = self.inner.cache.auth_cookie.write().unwrap(); + *c = Some(cookie.into()); + } } impl RustyPipeQuery { @@ -1459,9 +1491,8 @@ impl RustyPipeQuery { /// Enable authentication for this request /// - /// RustyPipe uses YouTube TV's OAuth authentication. This means that authentication - /// only works when using the TV client. Enabling authentication for other clients - /// results in a 400 error. + /// Depending on the client type RustyPipe uses either the authentication cookie or the + /// OAuth token to authenticate requests. #[must_use] pub fn authenticated(mut self) -> Self { self.opts.auth = Some(true); @@ -1525,13 +1556,48 @@ impl RustyPipeQuery { } } - /// Return `true` if the client has stored login credentials and authentication has not been disabled - pub fn auth_enabled(&self) -> bool { + /// Return `true` if the client has stored login credentials for the given client type + /// and authentication has not been disabled + pub fn auth_enabled(&self, ctype: ClientType) -> bool { if self.opts.auth == Some(false) { return false; } - let cache_token = self.client.inner.cache.oauth_token.read().unwrap(); - cache_token.is_some() + if ctype.is_web() { + let auth_cookie = self.client.inner.cache.auth_cookie.read().unwrap(); + auth_cookie.is_some() + } else if ctype == ClientType::Tv { + let cache_token = self.client.inner.cache.oauth_token.read().unwrap(); + cache_token.is_some() + } else { + false + } + } + + /// Return the first client type from the given list which has login credentials available. + /// + /// Returns [`None`] if authentication has been disabled or there are no available client types. + pub fn auth_enabled_client(&self, clients: &[ClientType]) -> Option { + if self.opts.auth == Some(false) { + return None; + } + let (has_cookie, has_token) = { + let auth_cookie = self.client.inner.cache.auth_cookie.read().unwrap(); + let oauth_token = self.client.inner.cache.oauth_token.read().unwrap(); + (auth_cookie.is_some(), oauth_token.is_some()) + }; + + clients + .iter() + .find(|c| { + if c.is_web() { + has_cookie + } else if **c == ClientType::Tv { + has_token + } else { + false + } + }) + .copied() } /// Create a new context object, which is included in every request to @@ -1666,7 +1732,7 @@ impl RustyPipeQuery { ctype: ClientType, endpoint: &str, visitor_data: Option<&str>, - ) -> RequestBuilder { + ) -> Result { let mut r = match ctype { ClientType::Desktop => self .client @@ -1752,7 +1818,55 @@ impl RustyPipeQuery { if let Some(vdata) = self.opts.visitor_data.as_deref().or(visitor_data) { r = r.header("X-Goog-EOM-Visitor-Id", vdata); } - r + + let mut cookie = None; + + if self.opts.auth == Some(true) { + if ctype.is_web() { + let auth_cookie = self + .client + .inner + .cache + .auth_cookie + .read() + .unwrap() + .clone() + .ok_or(Error::Auth(AuthError::NoLogin))?; + if let Some(auth_header) = Self::sapisidhash_header(&auth_cookie, ctype) { + r = r.header(header::AUTHORIZATION, auth_header); + } + cookie = Some(auth_cookie); + } else if ctype == ClientType::Tv { + let access_token = self.client.user_auth_access_token().await?; + r = r.header(header::AUTHORIZATION, format!("Bearer {}", access_token)); + } + } + + if ctype.is_web() { + r = r.header(header::COOKIE, cookie.as_deref().unwrap_or(CONSENT_COOKIE)); + } + + Ok(r) + } + + fn sapisidhash_header(cookie: &str, ctype: ClientType) -> Option { + let sapisid = cookie + .split(';') + .find_map(|c| c.trim().strip_prefix("SAPISID="))?; + let time_now = OffsetDateTime::now_utc().unix_timestamp(); + let mut sapisidhash = Sha1::new(); + sapisidhash.update(time_now.to_string()); + sapisidhash.update(" "); + sapisidhash.update(sapisid); + sapisidhash.update(" "); + sapisidhash.update(match ctype { + ClientType::DesktopMusic => YOUTUBE_MUSIC_HOME_URL, + ClientType::Mobile => YOUTUBE_MOBILE_HOME_URL, + _ => YOUTUBE_HOME_URL, + }); + + let sapisidhash_hex = data_encoding::HEXLOWER.encode(&sapisidhash.finalize()); + Some(format!("SAPISIDHASH {time_now}_{sapisidhash_hex}")) } /// Get a YouTube visitor data cookie, which is necessary for certain requests @@ -1892,17 +2006,14 @@ impl RustyPipeQuery { visitor_data: Some(&visitor_data), client_type: ctype, artist: ctx_src.artist, + authenticated: self.opts.auth.unwrap_or_default(), }; - let mut r = self + let request = self .request_builder(ctype, endpoint, ctx.visitor_data) - .await; - - if self.opts.auth == Some(true) { - let access_token = self.client.user_auth_access_token().await?; - r = r.header(header::AUTHORIZATION, format!("Bearer {}", access_token)); - } - let request = r.json(&req_body).build()?; + .await? + .json(&req_body) + .build()?; let req_res = self.yt_request::(&request, &ctx).await?; @@ -2031,7 +2142,7 @@ impl RustyPipeQuery { let request = self .request_builder(ctype, endpoint, None) - .await + .await? .json(&req_body) .build()?; @@ -2053,6 +2164,7 @@ struct MapRespCtx<'a> { visitor_data: Option<&'a str>, client_type: ClientType, artist: Option, + authenticated: bool, } /// Options to give to the mapper when making requests; @@ -2077,6 +2189,7 @@ impl<'a> MapRespCtx<'a> { visitor_data: None, client_type: ClientType::Desktop, artist: None, + authenticated: false, } } } diff --git a/src/client/music_details.rs b/src/client/music_details.rs index 34351ff..7ae7311 100644 --- a/src/client/music_details.rs +++ b/src/client/music_details.rs @@ -269,7 +269,14 @@ impl MapResponse> for response::MusicDetails { .map(|c| c.next_continuation_data.continuation); Ok(MapResult { - c: Paginator::new_ext(None, tracks, ctoken, None, ContinuationEndpoint::MusicNext), + c: Paginator::new_ext( + None, + tracks, + ctoken, + None, + ContinuationEndpoint::MusicNext, + false, + ), warnings, }) } diff --git a/src/client/music_history.rs b/src/client/music_history.rs new file mode 100644 index 0000000..432fdc6 --- /dev/null +++ b/src/client/music_history.rs @@ -0,0 +1,180 @@ +use crate::{ + client::{ + response::{self, music_item::MusicListMapper}, + ClientType, MapResponse, QBrowseParams, RustyPipeQuery, + }, + error::{Error, ExtractionError}, + model::{ + paginator::{ContinuationEndpoint, Paginator}, + AlbumItem, ArtistItem, MusicPlaylistItem, TrackItem, + }, + serializer::MapResult, +}; + +use super::MapRespCtx; + +impl RustyPipeQuery { + /// Get a list of tracks from YouTube Music which the current user recently played + /// + /// Requires authentication cookies. + #[tracing::instrument(skip(self), level = "error")] + pub async fn music_history(&self) -> Result, Error> { + let request_body = QBrowseParams { + browse_id: "FEmusic_history", + params: "oggECgIIAQ%3D%3D", + }; + + self.clone() + .authenticated() + .execute_request::( + ClientType::DesktopMusic, + "music_history", + "", + "browse", + &request_body, + ) + .await + } + + /// Get a list of YouTube Music artists which the current user subscribed to + /// + /// Requires authentication cookies. + #[tracing::instrument(skip(self), level = "error")] + pub async fn music_saved_artists(&self) -> Result, Error> { + self.clone() + .authenticated() + .continuation( + "4qmFsgIyEh5GRW11c2ljX2xpYnJhcnlfY29ycHVzX2FydGlzdHMaEGdnTUdLZ1FJQUJBQm9BWUI%3D", + ContinuationEndpoint::MusicBrowse, + None, + ) + .await + } + + /// Get a list of YouTube Music albums which the current user has added to their collection + /// + /// Requires authentication cookies. + #[tracing::instrument(skip(self), level = "error")] + pub async fn music_saved_albums(&self) -> Result, Error> { + self.clone() + .authenticated() + .continuation( + "4qmFsgIoEhRGRW11c2ljX2xpa2VkX2FsYnVtcxoQZ2dNR0tnUUlBQkFCb0FZQg%3D%3D", + ContinuationEndpoint::MusicBrowse, + None, + ) + .await + } + + /// Get a list of YouTube Music tracks which the current user has added to their collection + /// + /// Requires authentication cookies. + #[tracing::instrument(skip(self), level = "error")] + pub async fn music_saved_tracks(&self) -> Result, Error> { + self.clone() + .authenticated() + .continuation( + "4qmFsgIoEhRGRW11c2ljX2xpa2VkX3ZpZGVvcxoQZ2dNR0tnUUlBQkFCb0FZQg%3D%3D", + ContinuationEndpoint::MusicBrowse, + None, + ) + .await + } + + /// Get a list of YouTube Music playlists which the current user has added to their collection + /// + /// Requires authentication cookies. + #[tracing::instrument(skip(self), level = "error")] + pub async fn music_saved_playlists(&self) -> Result, Error> { + self.clone() + .authenticated() + .continuation( + "4qmFsgIrEhdGRW11c2ljX2xpa2VkX3BsYXlsaXN0cxoQZ2dNR0tnUUlBQkFCb0FZQg%3D%3D", + ContinuationEndpoint::MusicBrowse, + None, + ) + .await + } +} + +impl MapResponse> for response::MusicHistory { + fn map_response( + self, + ctx: &MapRespCtx<'_>, + ) -> Result>, ExtractionError> { + let contents = match self.contents { + response::music_playlist::Contents::SingleColumnBrowseResultsRenderer(c) => { + c.contents + .into_iter() + .next() + .ok_or(ExtractionError::InvalidData("no content".into()))? + .tab_renderer + .content + .section_list_renderer + } + response::music_playlist::Contents::TwoColumnBrowseResultsRenderer { + secondary_contents, + .. + } => secondary_contents.section_list_renderer, + }; + + let mut mapper = MusicListMapper::new(ctx.lang); + + for shelf in contents.contents { + let shelf = if let response::music_item::ItemSection::MusicShelfRenderer(s) = shelf { + s + } else { + continue; + }; + mapper.map_response(shelf.contents); + } + + let map_res = mapper.conv_items(); + + let ctoken = contents + .continuations + .into_iter() + .next() + .map(|c| c.next_continuation_data.continuation); + + Ok(MapResult { + c: Paginator::new_ext( + None, + map_res.c, + ctoken, + None, + ContinuationEndpoint::MusicBrowse, + true, + ), + warnings: map_res.warnings, + }) + } +} + +#[cfg(test)] +mod tests { + use std::{fs::File, io::BufReader}; + + use path_macro::path; + + use crate::util::tests::TESTFILES; + + use super::*; + + #[test] + fn map_history() { + let json_path = path!(*TESTFILES / "music_history" / "music_history.json"); + let json_file = File::open(json_path).unwrap(); + + let history: response::MusicHistory = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + let map_res = history.map_response(&MapRespCtx::test("")).unwrap(); + + assert!( + map_res.warnings.is_empty(), + "deserialization/mapping warnings: {:?}", + map_res.warnings + ); + insta::assert_ron_snapshot!(map_res.c); + } +} diff --git a/src/client/music_playlist.rs b/src/client/music_playlist.rs index 92233d1..a85acf3 100644 --- a/src/client/music_playlist.rs +++ b/src/client/music_playlist.rs @@ -122,6 +122,17 @@ impl RustyPipeQuery { } Ok(album) } + + /// Get all liked tracks of the logged-in user + /// + /// Requires authentication cookies. + pub async fn music_liked_tracks(&self) -> Result { + self.clone() + .authenticated() + .music_playlist("LM") + .await + .map_err(util::map_internal_playlist_err) + } } impl MapResponse for response::MusicPlaylist { @@ -298,6 +309,7 @@ impl MapResponse for response::MusicPlaylist { ctoken, ctx.visitor_data.map(str::to_owned), ContinuationEndpoint::MusicBrowse, + ctx.authenticated, ), related_playlists: Paginator::new_ext( None, @@ -305,6 +317,7 @@ impl MapResponse for response::MusicPlaylist { related_ctoken, ctx.visitor_data.map(str::to_owned), ContinuationEndpoint::MusicBrowse, + ctx.authenticated, ), }, warnings: map_res.warnings, diff --git a/src/client/music_search.rs b/src/client/music_search.rs index 9727d3b..b9344f5 100644 --- a/src/client/music_search.rs +++ b/src/client/music_search.rs @@ -199,6 +199,7 @@ impl MapResponse> for response::MusicSearch ctoken, ctx.visitor_data.map(str::to_owned), ContinuationEndpoint::MusicSearch, + false, ), corrected_query, }, diff --git a/src/client/pagination.rs b/src/client/pagination.rs index 4a3c166..65d8fab 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -77,6 +77,7 @@ fn map_yt_paginator( ctoken: p.ctoken, visitor_data: p.visitor_data, endpoint, + authenticated: p.authenticated, } } @@ -90,6 +91,7 @@ fn map_ytm_paginator( ctoken: p.ctoken, visitor_data: p.visitor_data, endpoint, + authenticated: p.authenticated, } } @@ -120,7 +122,14 @@ impl MapResponse> for response::Continuation { mapper.map_response(items); Ok(MapResult { - c: Paginator::new(self.estimated_results, mapper.items, mapper.ctoken), + c: Paginator::new_ext( + self.estimated_results, + mapper.items, + mapper.ctoken, + None, + ContinuationEndpoint::Browse, + ctx.authenticated, + ), warnings: mapper.warnings, }) } @@ -188,7 +197,14 @@ impl MapResponse> for response::MusicContinuation { .map(|cont| cont.next_continuation_data.continuation); Ok(MapResult { - c: Paginator::new(None, map_res.c, ctoken), + c: Paginator::new_ext( + None, + map_res.c, + ctoken, + None, + ContinuationEndpoint::MusicBrowse, + ctx.authenticated, + ), warnings: map_res.warnings, }) } @@ -197,13 +213,24 @@ impl MapResponse> for response::MusicContinuation { impl Paginator { /// Get the next page from the paginator (or `None` if the paginator is exhausted) pub async fn next>(&self, query: Q) -> Result, Error> { + // let mut q = query.as_ref().clone(); + // if self.authenticated { + // q = q.authenticated(); + // } + Ok(match &self.ctoken { - Some(ctoken) => Some( - query - .as_ref() - .continuation(ctoken, self.endpoint, self.visitor_data.as_deref()) - .await?, - ), + Some(ctoken) => { + let q = if self.authenticated { + &query.as_ref().clone().authenticated() + } else { + query.as_ref() + }; + + Some( + q.continuation(ctoken, self.endpoint, self.visitor_data.as_deref()) + .await?, + ) + } _ => None, }) } @@ -383,7 +410,10 @@ mod tests { use super::*; use crate::{ - model::{MusicPlaylistItem, PlaylistItem, TrackItem, VideoItem}, + model::{ + AlbumItem, ArtistItem, ChannelItem, MusicPlaylistItem, PlaylistItem, TrackItem, + VideoItem, + }, util::tests::TESTFILES, }; @@ -454,10 +484,32 @@ mod tests { insta::assert_ron_snapshot!(format!("map_{name}"), paginator); } + #[rstest] + #[case::subscriptions("subscriptions", path!("history" / "subscriptions.json"))] + fn map_continuation_channels(#[case] name: &str, #[case] path: PathBuf) { + let json_path = path!(*TESTFILES / path); + 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(&MapRespCtx::test("")).unwrap(); + let paginator: Paginator = + map_yt_paginator(map_res.c, ContinuationEndpoint::Browse); + + assert!( + map_res.warnings.is_empty(), + "deserialization/mapping warnings: {:?}", + map_res.warnings + ); + insta::assert_ron_snapshot!(format!("map_{name}"), paginator); + } + #[rstest] #[case::playlist_tracks("playlist_tracks", path!("music_playlist" / "playlist_cont.json"))] #[case::search_tracks("search_tracks", path!("music_search" / "tracks_cont.json"))] #[case::radio_tracks("radio_tracks", path!("music_details" / "radio_cont.json"))] + #[case::saved_tracks("saved_tracks", path!("music_history" / "saved_tracks.json"))] fn map_continuation_tracks(#[case] name: &str, #[case] path: PathBuf) { let json_path = path!(*TESTFILES / path); let json_file = File::open(json_path).unwrap(); @@ -477,8 +529,51 @@ mod tests { insta::assert_ron_snapshot!(format!("map_{name}"), paginator); } + #[rstest] + #[case::saved_artists("saved_artists", path!("music_history" / "saved_artists.json"))] + fn map_continuation_artists(#[case] name: &str, #[case] path: PathBuf) { + let json_path = path!(*TESTFILES / path); + let json_file = File::open(json_path).unwrap(); + + let items: response::MusicContinuation = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + let map_res: MapResult> = + items.map_response(&MapRespCtx::test("")).unwrap(); + let paginator: Paginator = + map_ytm_paginator(map_res.c, ContinuationEndpoint::MusicBrowse); + + assert!( + map_res.warnings.is_empty(), + "deserialization/mapping warnings: {:?}", + map_res.warnings + ); + insta::assert_ron_snapshot!(format!("map_{name}"), paginator); + } + + #[rstest] + #[case::saved_albums("saved_albums", path!("music_history" / "saved_albums.json"))] + fn map_continuation_albums(#[case] name: &str, #[case] path: PathBuf) { + let json_path = path!(*TESTFILES / path); + let json_file = File::open(json_path).unwrap(); + + let items: response::MusicContinuation = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + let map_res: MapResult> = + items.map_response(&MapRespCtx::test("")).unwrap(); + let paginator: Paginator = + map_ytm_paginator(map_res.c, ContinuationEndpoint::MusicBrowse); + + assert!( + map_res.warnings.is_empty(), + "deserialization/mapping warnings: {:?}", + map_res.warnings + ); + insta::assert_ron_snapshot!(format!("map_{name}"), paginator); + } + #[rstest] #[case::playlist_related("playlist_related", path!("music_playlist" / "playlist_related.json"))] + #[case::saved_playlists("saved_playlists", path!("music_history" / "saved_playlists.json"))] fn map_continuation_music_playlists(#[case] name: &str, #[case] path: PathBuf) { let json_path = path!(*TESTFILES / path); let json_file = File::open(json_path).unwrap(); diff --git a/src/client/player.rs b/src/client/player.rs index bdfd0e9..0434a15 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -84,24 +84,28 @@ impl RustyPipeQuery { match res { Ok(res) => return Ok(res), Err(Error::Extraction(e)) => { - if e.use_login() && self.auth_enabled() { - tracing::info!("{e}; fetching player with login"); + if e.use_login() { + if let Some(c) = self.auth_enabled_client(clients) { + tracing::info!("{e}; fetching player with login"); - match self - .clone() - .authenticated() - .player_from_client(video_id, ClientType::Tv) - .await - { - Ok(res) => return Ok(res), - Err(Error::Extraction(e)) => { - if !e.switch_client() { - return Err(Error::Extraction(e)); + match self + .clone() + .authenticated() + .player_from_client(video_id, c) + .await + { + Ok(res) => return Ok(res), + Err(Error::Extraction(e)) => { + if !e.switch_client() { + return Err(Error::Extraction(e)); + } } + Err(e) => return Err(e), } - Err(e) => return Err(e), + last_e = Error::Extraction(e); + } else { + return Err(Error::Extraction(e)); } - last_e = Error::Extraction(e); } else if !e.switch_client() { return Err(Error::Extraction(e)); } @@ -759,6 +763,7 @@ mod tests { visitor_data: None, client_type, artist: None, + authenticated: false, }) .unwrap(); diff --git a/src/client/playlist.rs b/src/client/playlist.rs index df000e8..c2872e6 100644 --- a/src/client/playlist.rs +++ b/src/client/playlist.rs @@ -33,6 +33,28 @@ impl RustyPipeQuery { ) .await } + + /// Get all liked videos of the logged-in user + /// + /// Requires authentication cookies. + pub async fn liked_videos(&self) -> Result { + self.clone() + .authenticated() + .playlist("LL") + .await + .map_err(util::map_internal_playlist_err) + } + + /// Get the "Watch later" playlist of the logged-in user + /// + /// Requires authentication cookies. + pub async fn watch_later(&self) -> Result { + self.clone() + .authenticated() + .playlist("WL") + .await + .map_err(util::map_internal_playlist_err) + } } impl MapResponse for response::Playlist { @@ -217,6 +239,7 @@ impl MapResponse for response::Playlist { mapper.ctoken, ctx.visitor_data.map(str::to_owned), ContinuationEndpoint::Browse, + ctx.authenticated, ), video_count: n_videos, thumbnail: thumbnails.into(), diff --git a/src/client/response/history.rs b/src/client/response/history.rs new file mode 100644 index 0000000..11d88af --- /dev/null +++ b/src/client/response/history.rs @@ -0,0 +1,8 @@ +use serde::Deserialize; + +use super::{video_item::YouTubeListRendererWrap, Tab, TwoColumnBrowseResults}; + +#[derive(Debug, Deserialize)] +pub(crate) struct History { + pub contents: TwoColumnBrowseResults>, +} diff --git a/src/client/response/mod.rs b/src/client/response/mod.rs index b619e57..364ae56 100644 --- a/src/client/response/mod.rs +++ b/src/client/response/mod.rs @@ -1,8 +1,10 @@ pub(crate) mod channel; +pub(crate) mod history; pub(crate) mod music_artist; pub(crate) mod music_charts; pub(crate) mod music_details; pub(crate) mod music_genres; +pub(crate) mod music_history; pub(crate) mod music_item; pub(crate) mod music_new; pub(crate) mod music_playlist; @@ -17,6 +19,7 @@ pub(crate) mod video_item; pub(crate) use channel::Channel; pub(crate) use channel::ChannelAbout; +pub(crate) use history::History; pub(crate) use music_artist::MusicArtist; pub(crate) use music_artist::MusicArtistAlbums; pub(crate) use music_charts::MusicCharts; @@ -25,6 +28,7 @@ pub(crate) use music_details::MusicLyrics; pub(crate) use music_details::MusicRelated; pub(crate) use music_genres::MusicGenre; pub(crate) use music_genres::MusicGenres; +pub(crate) use music_history::MusicHistory; pub(crate) use music_item::MusicContinuation; pub(crate) use music_new::MusicNew; pub(crate) use music_playlist::MusicPlaylist; @@ -668,3 +672,6 @@ pub(crate) struct ThumbnailOverlayBadgeViewModel { pub(crate) struct ThumbnailBadges { pub thumbnail_badge_view_model: TextBox, } + +#[derive(Debug, Deserialize)] +pub(crate) struct Empty {} diff --git a/src/client/response/music_history.rs b/src/client/response/music_history.rs new file mode 100644 index 0000000..888113c --- /dev/null +++ b/src/client/response/music_history.rs @@ -0,0 +1,8 @@ +use serde::Deserialize; + +use super::music_playlist::Contents; + +#[derive(Debug, Deserialize)] +pub(crate) struct MusicHistory { + pub contents: Contents, +} diff --git a/src/client/response/music_item.rs b/src/client/response/music_item.rs index dce3c8c..b41af07 100644 --- a/src/client/response/music_item.rs +++ b/src/client/response/music_item.rs @@ -272,7 +272,7 @@ pub(crate) struct QueueMusicItem { #[derive(Default, Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct MusicThumbnailRenderer { - #[serde(alias = "croppedSquareThumbnailRenderer")] + #[serde(default, alias = "croppedSquareThumbnailRenderer")] pub music_thumbnail_renderer: ThumbnailsWrap, } @@ -767,8 +767,16 @@ impl MusicListMapper { } // Artist / Album / Playlist Some((page_type, id)) => { + // Ignore "Shuffle all" button and builtin "Liked music" and "Saved episodes" playlists + if page_type == MusicPageType::None + || (page_type == (MusicPageType::Playlist { is_podcast: false }) + && matches!(id.as_str(), "MLCT" | "LM" | "SE")) + { + return Ok(None); + } + let mut subtitle_parts = c2 - .ok_or_else(|| "could not get subtitle".to_owned())? + .ok_or_else(|| format!("{id}: could not get subtitle"))? .renderer .text .split(util::DOT_SEPARATOR) diff --git a/src/client/response/player.rs b/src/client/response/player.rs index b974716..0b2068a 100644 --- a/src/client/response/player.rs +++ b/src/client/response/player.rs @@ -4,7 +4,7 @@ use serde::Deserialize; use serde_with::serde_as; use serde_with::{DefaultOnError, DisplayFromStr}; -use super::{ResponseContext, Thumbnails}; +use super::{Empty, ResponseContext, Thumbnails}; use crate::serializer::{text::Text, MapResult}; #[serde_as] @@ -57,9 +57,6 @@ pub(crate) enum PlayabilityStatus { }, } -#[derive(Debug, Deserialize)] -pub(crate) struct Empty {} - #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct ErrorScreen { diff --git a/src/client/response/url_endpoint.rs b/src/client/response/url_endpoint.rs index b2ab055..2a69249 100644 --- a/src/client/response/url_endpoint.rs +++ b/src/client/response/url_endpoint.rs @@ -6,6 +6,8 @@ use crate::{ util, }; +use super::Empty; + /// navigation/resolve_url response model #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] @@ -35,6 +37,9 @@ pub(crate) enum NavigationEndpoint { WatchPlaylist { watch_playlist_endpoint: WatchPlaylistEndpoint, }, + #[serde(rename_all = "camelCase")] + #[allow(unused)] + CreatePlaylist { create_playlist_endpoint: Empty }, } #[derive(Debug, Deserialize)] @@ -338,6 +343,10 @@ impl NavigationEndpoint { id: watch_playlist_endpoint.playlist_id, typ: MusicPageType::Playlist { is_podcast: false }, }), + NavigationEndpoint::CreatePlaylist { .. } => Some(MusicPage { + id: String::new(), + typ: MusicPageType::None, + }), } } @@ -381,6 +390,7 @@ impl NavigationEndpoint { NavigationEndpoint::WatchPlaylist { watch_playlist_endpoint, } => Some(watch_playlist_endpoint.playlist_id), + NavigationEndpoint::CreatePlaylist { .. } => None, } } } diff --git a/src/client/search.rs b/src/client/search.rs index 042f200..a4389e4 100644 --- a/src/client/search.rs +++ b/src/client/search.rs @@ -122,6 +122,7 @@ impl MapResponse> for response::Search { mapper.ctoken, None, ContinuationEndpoint::Search, + false, ), corrected_query: mapper.corrected_query, visitor_data: self diff --git a/src/client/snapshots/rustypipe__client__history__tests__map_history.snap b/src/client/snapshots/rustypipe__client__history__tests__map_history.snap new file mode 100644 index 0000000..fbb9397 --- /dev/null +++ b/src/client/snapshots/rustypipe__client__history__tests__map_history.snap @@ -0,0 +1,247 @@ +--- +source: src/client/history.rs +expression: map_res.c +--- +Paginator( + count: None, + items: [ + VideoItem( + id: "mPshy_DWxfo", + name: "trying TWEENING everything! (FAILED) PLEASE GIVE ME SOME ADVICEEE", + duration: Some(6), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFACKgBEF5IWvKriqkDMwgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAHwAQH4Af4JgALOBYoCDAgAEAEYfyAyKEAwDw==&rs=AOn4CLBfBVk2IGdGGGmpqOir2RbC8cY1xw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFACMQBEG5IWvKriqkDMwgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAHwAQH4Af4JgALOBYoCDAgAEAEYfyAyKEAwDw==&rs=AOn4CLDnRYKBX4qMlA54i-q3W7w1WvGApg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFBCPYBEIoBSFryq4qpAzMIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB8AEB-AH-CYACzgWKAgwIABABGH8gMihAMA8=&rs=AOn4CLDza_6r3345q6SBZvGm292mOobNPg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFBCNACELwBSFryq4qpAzMIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB8AEB-AH-CYACzgWKAgwIABABGH8gMihAMA8=&rs=AOn4CLDySwxxAy2hfw2YcAKs6ERLhzPTkQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCM7OXM6t80a3e3tzQDWxwEA", + name: "Ari", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/TpeTKFR6QWu4Cjam4PcpQwCPMnammWnSg93CdBvgFFLhkGm4nbQkUFKaAIYJ1ChUy9IgmJIQMRg=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(15), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "SRWatgS077k", + name: "My Time at \"Camp Operetta\"", + duration: Some(578), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAN8mzi3fbrJgqJiEeqpMZXRa7AuQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLBgxonLRY-4QQ1-jR3Xen-fAZcHHQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLBOk1abznwO5Bm0_m5YXMFkU0JSog", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLCQt7cAJuE-W8t1TnQnSe5EVbsw8A", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCGwu0nbY2wSkW8N-cghnLpA", + name: "JaidenAnimations", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/gopbHeiDtEB932rIFqLlR4D_hFtd-BcdGrQgGeyDpkD3guskkbT74DsJYPGo3x7MqkyqtgL-=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(23907328), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("What can I say other than that was one heck of a time\n\nScribble Showdown Tickets: https://www.scribbleshowdown.com/\n\n\n♥ The Team ♥\nDenny: https://www.instagram.com/90percentknuckles/\nAtrox:..."), + ), + VideoItem( + id: "kTxlkDoqArA", + name: "Wie Cartoons Früher gemacht wurden!", + duration: Some(283), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLBYdDA06ekKDlhB0PSlTwf6Ih1cMg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAgu_Ad1pFCsa3jINV1ocaVOQWOXg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLDkOVQbyZlrZ_jbdkSzUd5RiobObA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLA5cnUH03I2lg1-FOJ01njh8UOJEw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCxTHCMaxURhapisCMBv8y0A", + name: "Plankton", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Cdlsy3IXgis5hNYRwvohPB9AIxH8tNdEo9CwxXK1i3QEUO7YN3p4YJ_cd5ruGsmNhvoX7803=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(390010), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Folgt mir auf Instagram!\nhttps://instagram.com/plankton.gif \n\nÜBER DEN KANAL:\nRede viel wenn der Tag lang ist"), + ), + VideoItem( + id: "oIVSKQ8NMqk", + name: "What I learned on highschool swim", + duration: Some(620), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAeTbOz6FlrH1x3jA4AwYcTGmUwxg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAEzpr1xBI-8jJwZz72NHj9VKyefA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLBNzC8nvKtO7fmqzavWemou7QOLOg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLA1_VgkVeq4ELmrQ8a4vhtJhg6TMA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCsKVP_4zQ877TEiH_Ih5yDQ", + name: "illymation", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_n3doafn2qRRawkYet_KQdH2Jl1ugSQnjnd0Ham12C9MYI=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(6491367), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("okay, so I wasn\'t the BEST ... but I tried my best!\n▶ Black Friday Merch sale: https://www.hereforthechaos.com\n▶ SNEAK PEEKS ON PATREON! http://patreon.com/illymation\n\n▶ BG ARTIST: Ingrid..."), + ), + VideoItem( + id: "X30eFeqrHJo", + name: "My Last Week of University!", + duration: Some(659), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAc6-vKGjlwODu5rDSHK2tz4sRzYQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAE7jwC0MudkKK-I1nyGvCheljvtQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLAfIZ4htcNHP3RWahpR4XM7U-UTFQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLDYMLObTeyxHK_PewK4Rwk3V-2KGw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC6a8lp6vaCMhUVXPyynhjUA", + name: "Ruby Granger", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/u9qrR3ceVkt7yen48Rd1WWV_w-OdE5iejCNI2y-PyG0tpd7xlqWFDahsaZa02cMk7O-0WkCL=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(132844), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("This first year has been somewhat hectic, and certainly was tricky in the first semester; however, I have enjoyed it immensely and, as I said, am sad that this term has now ended. I am returning..."), + ), + ], + ctoken: Some("4qmFsgJMEglGRWhpc3RvcnkaKENBSjZHbmx5WVRWb2QyOU9RMmR6U1RSaGNXMTFkMWxSTms4M05WcFKaAhRicm93c2UtZmVlZEZFaGlzdG9yeQ%3D%3D"), + endpoint: browse, + authenticated: true, +) diff --git a/src/client/snapshots/rustypipe__client__history__tests__map_subscription_feed.snap b/src/client/snapshots/rustypipe__client__history__tests__map_subscription_feed.snap new file mode 100644 index 0000000..f433e2d --- /dev/null +++ b/src/client/snapshots/rustypipe__client__history__tests__map_subscription_feed.snap @@ -0,0 +1,4212 @@ +--- +source: src/client/history.rs +expression: map_res.c +--- +Paginator( + count: None, + items: [ + VideoItem( + id: "Nk2oIzFdEjQ", + name: "LUXURY BRAND Pronunciation Differences in 10 EUROPEAN LANGUAGES!!", + duration: Some(1018), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Nk2oIzFdEjQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBICjocxzrrksCKCYGK27wiaCW_Gw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Nk2oIzFdEjQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCCUG6zZq8-4_ylw6EzHgZ6VM-Bmg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Nk2oIzFdEjQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBtHcdbSG5TSSYhLly396dHjMpLlQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC7QteRlErpm27bkZ6izFwKg", + name: "World Friends", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 minutes ago"), + view_count: Some(62), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("World Friends Facebook\n👉 / 100090310914821 \n\nTODAY 10 EUROPEAN Compare each countries LUXURY BRAND Pronunciation differences!!\n\nHope you enjoy the video! \nAlso, please follow our panels!..."), + ), + VideoItem( + id: "Bwk3WHXLuBk", + name: "Christmas Song by McCarthy Trenching // Phoebe Bridgers (cover)", + duration: Some(229), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Bwk3WHXLuBk/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AG2CIAC0AWKAgwIABABGGUgWChHMA8=&rs=AOn4CLCed8J7I31Jm6U2phMSd353vESMhA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Bwk3WHXLuBk/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBtgiAAtAFigIMCAAQARhlIFgoRzAP&rs=AOn4CLBu25KSMGPW27ejr5fh83WRF5u2fA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Bwk3WHXLuBk/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBtgiAAtAFigIMCAAQARhlIFgoRzAP&rs=AOn4CLBG0ObDGb7JbZlKWXrqkUI0nruY5Q", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCbeDqaLm7fdIzGK-uceZ6Ow", + name: "Yuri like glass", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("11 minutes ago"), + view_count: Some(0), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("one of my favorite christmas songs! discovered this through Phoebe Bridgers cover, but the original is by McCarthy Trenching!\n\n\nsubscriber count: 232"), + ), + VideoItem( + id: "3Id9l4Lhg5g", + name: "River by Joni Mitchell (cover)", + duration: Some(74), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/3Id9l4Lhg5g/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AG2CIAC0AWKAgwIABABGGUgVyhFMA8=&rs=AOn4CLBdp0kFisMb7_ITvmZ-UtgQpLfMsQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/3Id9l4Lhg5g/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBtgiAAtAFigIMCAAQARhlIFcoRTAP&rs=AOn4CLDE4Zfx8pqoSaLIKu4AmT-y3wq4KA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/3Id9l4Lhg5g/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBtgiAAtAFigIMCAAQARhlIFcoRTAP&rs=AOn4CLDQ_F6bxcWLAEa3AV45K8oZ10L0hA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCbeDqaLm7fdIzGK-uceZ6Ow", + name: "Yuri like glass", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("14 minutes ago"), + view_count: Some(3), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Merry Christmas everybody :) i hope you are staying warm. i know the holidays can feel rough at times but you got this!!\n\n\nsubscriber count: 232"), + ), + VideoItem( + id: "3Z-OPYGhCXo", + name: "The first test for our WLED board codename \"Sparkle Motion\" 🌈💖💡 ... 🐇⏳🌌", + duration: Some(125), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/3Z-OPYGhCXo/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGF8gSShlMA8=&rs=AOn4CLCwq1jaJW_LeEVwuD2Kau7cbBfPsQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/3Z-OPYGhCXo/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhfIEkoZTAP&rs=AOn4CLAZbA5CH2C3F-vi3ZoJQl88vAJLvQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/3Z-OPYGhCXo/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhfIEkoZTAP&rs=AOn4CLDzL0eFj3JIMWpkDL3qcmVIf35WaQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 hour ago"), + view_count: Some(235), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("We got our WLED-friend PCBs today, and we only made one mistake: the wrong resistor on the 3.3V feedback line. Now that it\'s fixed, the board seems to work great with the latest version of..."), + ), + VideoItem( + id: "M0qiZHV4E3U", + name: "THAT GUY", + duration: Some(174), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/M0qiZHV4E3U/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDWbxIE1uVg6Wwbzxlz1FwQgWCkNg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/M0qiZHV4E3U/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA8JZ15H7f4VwMcMZpm5DdwgAIp5g", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/M0qiZHV4E3U/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCZF4bX-NaKIumbM83nL-glt2_xhw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCsQBsZJltmLzlsJNG7HevBg", + name: "Tyler, The Creator", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/-1Bt8eufq601KzmA0Rk1yrIzz372UDDeBkIpWytlztkcAyh1w6g2bNfXVnR6hadnezvUCq0XICA=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 hours ago"), + view_count: Some(327007), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("freestyle of HEY NOW by kenny\n\ndirector: TYLER OKONMA\ndp: LUIS \"PANCH\" PEREZ\nproduction: HAPPY PLACE\neditor: STEVE FORNER\nhair: NENA (LADYSOULFLY) / RONNIE MCCOY III\nclothing: le FLEUR*\nlocation:..."), + ), + VideoItem( + id: "hMdOrERJxCw", + name: "cAvEman TV || That Damn Prussian", + duration: Some(785), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/hMdOrERJxCw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBjmTJC0reZpyf_MrxOvyeGc8qadg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/hMdOrERJxCw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAAuCZWYul0vIdfnU6BnhiqEU4xjg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/hMdOrERJxCw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCOXSXe3q9mt3DQPfzvskEVkGjrgA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UChWv6Pn_zP0rI6lgGt3MyfA", + name: "AvE", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 hours ago"), + view_count: Some(4492), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Horse sense."), + ), + VideoItem( + id: "FXflfh5jdIc", + name: "The Night Agent: Season 2 | Official Trailer | Netflix", + duration: Some(127), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/FXflfh5jdIc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBUfiP5l1fCe3TldsZ5a9TscDnX4w", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/FXflfh5jdIc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAs-0cH5rcWwrZnJrUcQQHcJbMBVQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/FXflfh5jdIc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD62NbWIZ-4lwBChM_H7Bj-1nxHhQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCWOA1ZGywLbqmigxE4Qlvuw", + name: "Netflix", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("3 hours ago"), + view_count: Some(49359), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("The fate of the nation relies on one man. The Night Agent Season 2 returns January 23, only on Netflix.\r\n\r\nWatch on Netflix: https://www.netflix.com/title/81654821\r\n\r\nAbout Netflix:\r\nNetflix..."), + ), + VideoItem( + id: "NLbryiwuHko", + name: "Japan Influencers are STILL Lying to You, and i\'m so done.", + duration: Some(797), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/NLbryiwuHko/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCG-6Q4JD_8OxZst6c_HtPWX9Ny5Q", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/NLbryiwuHko/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAxRBw1ppA1C5oK9Mjg5Bna09c9XQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/NLbryiwuHko/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBz43HWWfBCo-qqsgLj-TRjdm3rkw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC_1HVMnw-610qx54iEiWk7A", + name: "akidearest", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_ktld7JEURejIWXjEKhRjbiZGxX3TKPnRLUB5lbtltJvek=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: None, + is_live: false, + is_short: false, + is_upcoming: true, + short_description: Some("🇯🇵 Learn Japanese: https://migaku.com/akidearest\n➣PATREON: https://www.patreon.com/akidearest\n\nI make a lot of videos on true crime, creepy, horror, and personal experiences from Japan...."), + ), + VideoItem( + id: "Wey_XcfQScE", + name: "[Stray Kids : SKZ-TALKER] Ep.68", + duration: Some(1048), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Wey_XcfQScE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDa2TWOUV5T5VDHi86WNH-rYkYFoA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Wey_XcfQScE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDzTQvfLSNM3-Rq7TKetXRGf7EQLg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Wey_XcfQScE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAUN2sunSboAsWuWyxp2FKIyOL3lA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC9rMiEjNaCSsebs31MRDCRA", + name: "Stray Kids", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("10 hours ago"), + view_count: Some(294143), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("[Stray Kids(스트레이 키즈) : SKZ-TALKER(슼즈토커)] Ep.68\n\nListen to \"合 (HOP)\" now💦\nhttps://Stray-Kids.lnk.to/HOP\n\nListen to \"Walkin On Water (Remixes)\" now🛷\nhttps://Stray-Kids.lnk..."), + ), + VideoItem( + id: "E-Jeoe8kdlM", + name: "‘Heaven’ Special Video (Holiday ver.) | T:TIME | TXT (투모로우바이투게더)", + duration: Some(164), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/E-Jeoe8kdlM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLATgL76mJeMFMtFlRpQwoHzr9xFXA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/E-Jeoe8kdlM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAxrS018z0NwwJybxmfk0DL4I-XJw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/E-Jeoe8kdlM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAt7Czz9VCJVnS-F9jGKnEZGwAfDg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCtiObj3CsEAdNU6ZPWDsddQ", + name: "TOMORROW X TOGETHER OFFICIAL", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/qhmEoqhG9u8lCm3NgdJc1hJ4yZYBPCZ8l2J-ia6cf_gSsnuFLo1sM_NUmFn48oPRAiJIkNUo=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("12 hours ago"), + view_count: Some(102102), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Connect with TOMORROW X TOGETHER:\nhttps://txt.ibighit.com\nhttps://x.com/TXT_bighit\nhttps://x.com/TXT_members \nhttps://x.com/TXT_bighit_jp\nhttps://www.facebook.com/TXT.bighit\nhttps://www.instagram.c..."), + ), + VideoItem( + id: "x_wXmqSrHzE", + name: "IVE\'s 4th Christmas🎄 | 웃어도 돼 울어도 돼! 말하면? 안 돼🤫☃🎁", + duration: Some(1392), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/x_wXmqSrHzE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA0IfsJufxbaYNCgm7FeMXwugSCgA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/x_wXmqSrHzE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB2LptObCAdtO-YOCbS90DoAhzOWg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/x_wXmqSrHzE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBKZi1jyc5UnTaoX8vaGeiDQCyCUw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC-Fnix71vRP64WXeo0ikd0Q", + name: "IVE", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("15 hours ago"), + view_count: Some(134738), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("STARSHIP SQUARE (Domestic) : https://bit.ly/3HtQ7GF\nSTARSHIP SQUARE (Global) : https://bit.ly/3JWPxm0\nIVE US EXCLUSIVE STORE : https://shop.ive-starship.com/ \n\nIVE X (Twitter)\n: https://twitter.co..."), + ), + VideoItem( + id: "d5JLXY3WOOM", + name: "Sonic 3 Fans DESTROY Disney After They Lied About Mufasa FLOP", + duration: Some(822), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/d5JLXY3WOOM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDhhx7HqWtnxSS0YdmSSmwbHY-Riw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/d5JLXY3WOOM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCBEx3XtbLcU78ORQJHBYkTIP_lkQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/d5JLXY3WOOM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD7onekbnnegnGJ2ZreZfc0sXyM3g", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCaJ84U5xsjX9KT1mIF3B22w", + name: "Rev says desu", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("18 hours ago"), + view_count: Some(90042), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("The woes for Disney continue. Their Twitter account got community noted and mocked by Sonic 3 fans after lying about the box office numbers of Mufasa: The Lion King.\nUse code \"REV\" for 10%..."), + ), + VideoItem( + id: "jE_TRugW9U4", + name: "JP’s Product Pick of the Week 12/24/24", + duration: Some(1090), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/jE_TRugW9U4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDw-A7EBvN7DU61g1_1lb5ALNY_xw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/jE_TRugW9U4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA3g0qZXGbcRdDld3yIiBTrPbcg-g", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/jE_TRugW9U4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAC9WbPM7DdPIl4FcaJF9cSKeygqQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("Streamed 19 hours ago"), + view_count: Some(610), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("#newproducts \nJP’s Product Pick of the Week 12/24/24 \nINA3221 Triple 0-26VDC ±3.2 Amp Power Monitor - STEMMA QT/ / Qwiic\nhttps://www.adafruit.com/product/6062\n Deep discount during livestream..."), + ), + VideoItem( + id: "nSyLYlTuktc", + name: "American Primeval | Official Teaser | Netflix", + duration: Some(68), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/nSyLYlTuktc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCywLiF3cWs_jZIJ30P4grGqarZaw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/nSyLYlTuktc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBnprMlfts-UOZpfJdAg0RyOB7h8A", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/nSyLYlTuktc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAi0hBbVW5N_De8aP5h_9-MFpK_IQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCWOA1ZGywLbqmigxE4Qlvuw", + name: "Netflix", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("20 hours ago"), + view_count: Some(145199), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("This is America, 1857. Taylor Kitsch and Betty Gilpin star in American Primeval, a gripping new limited series from director Peter Berg. Coming Jan. 9, only on Netflix.\n\nWatch on Netflix: https://w..."), + ), + VideoItem( + id: "T0fjgHDBirw", + name: "Cobra Kai: Season 6 | Part 3 Date Announcement | Netflix", + duration: Some(44), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/T0fjgHDBirw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCcAdv5jBjcQHV-O2xq_k4GotPBrQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/T0fjgHDBirw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB-KfYKVte9W9HGqXEntlX3ZpIK4A", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/T0fjgHDBirw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAWR_qaQj8dBGuWct2eDeueKX3LYg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCWOA1ZGywLbqmigxE4Qlvuw", + name: "Netflix", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 day ago"), + view_count: Some(624311), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("This may be the end, but we’re not good at goodbyes…because COBRA KAI NEVER DIES! The final episodes of the greatest karate saga of all time arrive on February 13th, 2025, only on Netflix...."), + ), + VideoItem( + id: "-Bj3ce8MCts", + name: "Holiday IOT Switch #adafruit #iot", + duration: Some(95), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/-Bj3ce8MCts/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAoJeBlShWc426ueFlqLyeq9_4_2g", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/-Bj3ce8MCts/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDOsreIk9czmcA-HDU5Xy0H_wK_EQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/-Bj3ce8MCts/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDdUaJ1UVyYQO5ENLnayRI1NVFFBg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 day ago"), + view_count: Some(611), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Build a custom controller to trigger a smart outlet using a Feather ESP32-S2, CircuitPython, Adafruit IO and the itsaSNAP app for iOS.\n\nTutorial, Files and Code\nhttps://learn.adafruit.com/holiday-i..."), + ), + VideoItem( + id: "LiAYFTPxgis", + name: "cAvEman TV || Barmy Bread and Irish Tea", + duration: Some(332), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/LiAYFTPxgis/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDLf4sTMc9J4rvafxc0z-y82knfbw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/LiAYFTPxgis/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDohlcFqNgnGwo-R_EIJQjtci-tmg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/LiAYFTPxgis/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBcB5s8AJJSf8H2zuBHjpMUZasqlQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UChWv6Pn_zP0rI6lgGt3MyfA", + name: "AvE", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 day ago"), + view_count: Some(17261), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Merry Christmas Fellows!"), + ), + VideoItem( + id: "DXl7EC4JWSk", + name: "슼케어리 타운 (SKZ-ARY TOWN) #2|[SKZ CODE] Ep.68", + duration: Some(1791), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/DXl7EC4JWSk/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDRVS_SrKUZ1i3vovf5jfgHu96HfA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DXl7EC4JWSk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBPj76SC7tmyr9IFYU18hAKSh1HaA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DXl7EC4JWSk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBJWc1yFDEuBjRORWA3IQQuf2ozcA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC9rMiEjNaCSsebs31MRDCRA", + name: "Stray Kids", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 day ago"), + view_count: Some(844142), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("슼케어리 타운 (SKZ-ARY TOWN) #2|[SKZ CODE(스키즈 코드)] Ep.68\n\nListen to \"合 (HOP)\" now💦\nhttps://Stray-Kids.lnk.to/HOP\n\nListen to \"Walkin On Water (Remixes)\" now🛷\nhttps://Stray-..."), + ), + VideoItem( + id: "Wwb-U41oLIc", + name: "IVE, David Guetta, BE@RBRICK \'Supernova Love\' MV", + duration: Some(159), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Wwb-U41oLIc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAijf2iGoPn7ngm-QjRwJONlpxBNA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Wwb-U41oLIc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDmWOs1rzqoDEUk3Js439sx1bO2Tg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Wwb-U41oLIc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBkypcNLArmwTOTOATpf_4nqlSMiA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC-Fnix71vRP64WXeo0ikd0Q", + name: "IVE", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 day ago"), + view_count: Some(101517), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("IVE and David Guetta have dropped a cool BE@RBRICK video!\nSpend your Christmas with the Supernova Love BE@RBRICK MV and make it extra special.\nYou can pre-order exclusive BE@RBRICK products..."), + ), + VideoItem( + id: "y68Ux3M4xbc", + name: "[Special Clip] IVE 2024 Christmas Message", + duration: Some(36), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/y68Ux3M4xbc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgkmAriFvHUP-VDCF2mYbWf2Wg2A", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/y68Ux3M4xbc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCfmRF7rI55vCXdarRQoFCC-qsyqg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/y68Ux3M4xbc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC3Uab7uesm1HXtEQTcIT4Q4c_TMQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC-Fnix71vRP64WXeo0ikd0Q", + name: "IVE", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 day ago"), + view_count: Some(43932), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("STARSHIP SQUARE (Domestic) : https://bit.ly/3HtQ7GF\nSTARSHIP SQUARE (Global) : https://bit.ly/3JWPxm0\nIVE US EXCLUSIVE STORE : https://shop.ive-starship.com/ \n\nIVE X (Twitter)\n: https://twitter.co..."), + ), + VideoItem( + id: "pr2vDhaNqjQ", + name: "Big Dreidel #3dprinting #timelapse #adafruit", + duration: Some(45), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/pr2vDhaNqjQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDkr1pVynTrRYVTuAPX4HvZlD4ZGw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pr2vDhaNqjQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDjitoCX3q-K9_4KIBk-sGX8-ZwXg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pr2vDhaNqjQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAPJIrtT-DE9fxMj_Kl1MTp7ZX6gA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 day ago"), + view_count: Some(591), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Every week we\'ll 3D print designs from the community and showcase slicer settings, use cases and of course, Time-lapses! This Week: \n\nBig Dreidel\nBy Noe Ruiz\nprintables.com/model/1118598-big-dreide..."), + ), + VideoItem( + id: "ts47WdEBBoc", + name: "Woke Intergalactic \"Star\" ATTACKS Gamers In Deleted Post", + duration: Some(722), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ts47WdEBBoc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBTi9gN3Z4bnFRUynPtUWF4pmnpUA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ts47WdEBBoc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBTkFLBnTSawcmaXvqmB9KgcBLsPQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ts47WdEBBoc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAkXdGtBOEuCEyp44EcSqI9QJEsVg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCaJ84U5xsjX9KT1mIF3B22w", + name: "Rev says desu", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 day ago"), + view_count: Some(76208), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Tati Gabrielle, the actress behind the main protagonist of Naughty Dog\'s Intergalactic, made a now deleted post attacking gamers and embracing DEI.\nUse code \"REV\" for 10% off my new AdvancedGG..."), + ), + VideoItem( + id: "NG55c0d-x_I", + name: "Adel Tawil & Jasmin Jürgens – Was wichtig ist (Live aus der TV Show UDO JÜRGENS FOREVER)", + duration: Some(257), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/NG55c0d-x_I/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAo42-XBkytr7UPI4ivOZccy-Azpw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/NG55c0d-x_I/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA30SafnxJnOztsyA1uW_M6zWYcyg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/NG55c0d-x_I/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBmiWtTrUL4-j83OE_1iJNyej3zLw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCSRCm4zHuETCS7jHWMiWNog", + name: "Adel Tawil", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/gP4biZPhz7HcfAs2QH5PEumEOkCAToYuFuWrt-xVSO205o51I8vVMPwMANhVWHcFw3WXZAHT=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 day ago"), + view_count: Some(33642), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Der Song „Was wichtig ist“, gesungen von Adel Tawil zusammen mit Jasmin Jürgens, der Enkelin von Udo Jürgens, war das große emotionale Highlight der TV-Show\u{a0}„Udo Jürgens Forever..."), + ), + VideoItem( + id: "4L_psS1MVk8", + name: "The All MSI Gaming Setup!", + duration: Some(980), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/4L_psS1MVk8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC5VGHRrBtm2BufBqAIxAzlLGEd3A", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/4L_psS1MVk8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC-TxQgxHXXFmxj_q6W34MiELq_-A", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/4L_psS1MVk8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCLpK-TZFX8xytULoM9z5DV_snkVQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCXuqSBlHAE6Xw-yeJA0Tunw", + name: "Linus Tech Tips", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 day ago"), + view_count: Some(774860), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Thanks to MSI for sponsoring this video! Check out their MEG X870E GODLIKE motherboard at https://lmg.gg/l2uLA and check out all of the other parts used in this video below!\n\nMSI is back, back..."), + ), + VideoItem( + id: "5r5323WnpXg", + name: "The Ultimate Cast-Iron Cheese Quiche | America\'s Test Kitchen (S24 E21)", + duration: Some(521), + thumbnail: [ + Thumbnail( + url: "https://i9.ytimg.com/vi/5r5323WnpXg/hqdefault_custom_1.jpg?sqp=CJD0sLsG-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBmoYkTr8sInlQoFdWz4sDeezW99w", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i9.ytimg.com/vi/5r5323WnpXg/hqdefault_custom_1.jpg?sqp=CJD0sLsG-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAz8CnfYGLiXXKw9VoKC7e-8spNsA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i9.ytimg.com/vi/5r5323WnpXg/hqdefault_custom_1.jpg?sqp=CJD0sLsG-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAhM7PFHEYSmrqLKsA21h-KHLAuCQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCxAS_aK7sS2x_bqnlJHDSHw", + name: "America\'s Test Kitchen", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/6pPZQkBWoQ-UAu5sT-Z47ID6vhPr-nnfziSpR84unn9vsDUzz5_iNS3WkuXSdKUKhkVGQerE=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 day ago"), + view_count: Some(29932), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("The ideal quiche has tender, flaky pastry and velvety custard.\n\nGet our Cast Iron Simple Cheese Quiche recipe: https://cooks.io/48EL9TC\n\nGet exclusive access to every recipe, review, and more:..."), + ), + VideoItem( + id: "Fl5aSJFPkV8", + name: "and that\'s how we made counting stars. | OneRepublic", + duration: Some(109), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Fl5aSJFPkV8/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AG2CIACgA-KAgwIABABGGUgWihDMA8=&rs=AOn4CLBdDE45kGIak0pI1_3pWHMjR7iVAg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Fl5aSJFPkV8/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBtgiAAoAPigIMCAAQARhlIFooQzAP&rs=AOn4CLB0k0EmJ1gJMJApuUJSXjePF9GmuA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Fl5aSJFPkV8/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBtgiAAoAPigIMCAAQARhlIFooQzAP&rs=AOn4CLDGteq2WeMK_D6_tgyGg8QiKDiyyQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCi4EDAgjULwwNBHOg1aaCig", + name: "OneRepublic", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/9nEm0mi6FUORmK_tFVZ9OKdeLC_WB8Oa4pvTK1tIxGVpDPCbtmLGVHfBjwaD7lU0yoCMQXDYpg=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("1 day ago"), + view_count: Some(14558), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("SUBSCRIBE: http://bit.ly/XQm1Nq\r\n\r\nAbout OneRepublic:\r\nOneRepublic is an American alternative rock band from Colorado Springs, Colorado. This is their official YouTube Channel.\r\n\r\nConnect with..."), + ), + VideoItem( + id: "Ata-wi-zGGo", + name: "cAvEman tv || Buffalo Mystery", + duration: Some(207), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Ata-wi-zGGo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCRGJ3LjIdUectiUlrXJ9MP7n4qBA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Ata-wi-zGGo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDxS_ApRBc5gfoNVd8xUkoiIwOCgA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Ata-wi-zGGo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAmLxC6FTVXeFp7YOoXEEABW2W2jw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UChWv6Pn_zP0rI6lgGt3MyfA", + name: "AvE", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 days ago"), + view_count: Some(20689), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Occam\'s razor?"), + ), + VideoItem( + id: "0QRhHZkAQro", + name: "Ed Sheeran - Collaborations Medley (Live from Mathematics Tour 2024)", + duration: Some(405), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/0QRhHZkAQro/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCyAjIWf2r4ehs68TfukwzdJntFrw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/0QRhHZkAQro/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB46kFAbYHM2kPX8uHn-17hvPv-vQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/0QRhHZkAQro/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBY-TEUY5af6nRpKy_mkXVCrQRUEQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC0C-w0YjGpqDXGB8IHb662A", + name: "Ed Sheeran", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/emA0C_i9tUyJgxrfVpJ31e0QCU2MlovjYvQkAC9mDuSJyhl6h8PkFj5-ozRzz2vFtpbnls8s1W4=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 days ago"), + view_count: Some(80520), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("+-=÷× (Tour Collection: Live) with live recordings from the Mathematics tour is out 27th Dec: https://es.lnk.to/mathematicstourcollectionID \n\n+-=÷× (Tour Collection) is out now: https://es.lnk...."), + ), + VideoItem( + id: "pkWgjmc6FHM", + name: "The Great Search: Pull out Drawer Sets for Components and Boards #TheGreatSearch @DigiKey @adafruit", + duration: Some(403), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/pkWgjmc6FHM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDNSxsg-q4DD2DFpzEX29lI2e0p6A", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pkWgjmc6FHM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA_4yXAFx7HpA4GOU24v5MTSUVdYw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pkWgjmc6FHM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCAlELqzEDvKFpR0lH5xwzhUlE8Cg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 days ago"), + view_count: Some(546), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("As we organize our new office room, we\'re looking for good storage solutions for the thousands of components and dev boards we have lying around. We have a mix of small through-hole parts like..."), + ), + VideoItem( + id: "quVC-LXcnZg", + name: "ZERO DAY | Official Teaser | Netflix", + duration: Some(74), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/quVC-LXcnZg/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB0IxityvotnoNCdgxvfe_Im8t9hg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/quVC-LXcnZg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDwvy9EJpDCydbpN1NnriYAPknbqg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/quVC-LXcnZg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDQ09XmTFG_meaq2ImSEHmI2zIPUg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCWOA1ZGywLbqmigxE4Qlvuw", + name: "Netflix", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 days ago"), + view_count: Some(581806), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("In the wake of a devastating cyber attack, a former President (Robert De Niro) is tasked with finding the perpetrators and seeking truth when another attack is imminent — but is the greatest..."), + ), + VideoItem( + id: "NI2NBjZGYfM", + name: "Lee Know \"Youth\" | [Stray Kids : SKZ-PLAYER]", + duration: Some(181), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/NI2NBjZGYfM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAUkv9Qwt_3dHdbW2LRZlsbGXhXNw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/NI2NBjZGYfM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBRlL0Z97F_n1GzJo_gzhObWF3HCg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/NI2NBjZGYfM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDGjhXKSPdAukoeQgMTzhqCDDU4QQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC9rMiEjNaCSsebs31MRDCRA", + name: "Stray Kids", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 days ago"), + view_count: Some(1941055), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("리노(Lee Know) \"Youth\" | [Stray Kids(스트레이 키즈) : SKZ-PLAYER(슼즈 플레이어)]\n\nListen to \"合 (HOP)\" now💦\nhttps://Stray-Kids.lnk.to/HOP\n\nListen to \"Walkin On Water (Remixes)\"..."), + ), + VideoItem( + id: "p4gr406eMas", + name: "Lovers Anonymous | Teaser | Netflix", + duration: Some(61), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/p4gr406eMas/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA3lSUE8fctI9dBpW53Kvw1lcbA4Q", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/p4gr406eMas/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCF73yK6ebxSj66uetTuMrblif7yA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/p4gr406eMas/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDXwX6BDwzytHAkUxdi6ZjAXPqNEA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCWOA1ZGywLbqmigxE4Qlvuw", + name: "Netflix", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 days ago"), + view_count: Some(41875), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Don\'t worry, they\'re here to help. Lovers Anonymous, January 16th only on Netflix.\r\n\r\nWatch on Netflix: https://www.netflix.com/title/81614606\r\n\r\nAbout Netflix:\r\nNetflix is one of the world\'s..."), + ), + VideoItem( + id: "5EsVmlcKPqY", + name: "Desk of Ladyada - It\'s a sparkly LED Christmas!", + duration: Some(1644), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/5EsVmlcKPqY/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD4PsB9SXMTuEXTxzyBtZjwTXpwTA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5EsVmlcKPqY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCH6QNBEZvNnXMRzx5XqqrXoYNxdQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5EsVmlcKPqY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCflRlWtr6MRa065O_kDTyHw1Sycw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("Streamed 2 days ago"), + view_count: Some(1345), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("This week, Ladyada tests the Sparkle Motion WLED board with xLights for large-scale LED animations and began decorating. A smaller version of Sparkle Motion and a NeoPixel-inspired USB PCB,..."), + ), + VideoItem( + id: "8I6TK3jpU-0", + name: "I HAVE AN EP COMING OUT!", + duration: Some(104), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/8I6TK3jpU-0/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCFGiWGXOaMysIIAWdnaFQi4ClLxA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/8I6TK3jpU-0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCvou_Wq-2QLzMMd7mFGFTr-hDP_g", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/8I6TK3jpU-0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD7TiWCsBe_hwmR8GMhcnhVe_ngvQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCbeDqaLm7fdIzGK-uceZ6Ow", + name: "Yuri like glass", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 days ago"), + view_count: Some(155), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("PRE-SAVE IT HERE: https://distrokid.com/hyperfollow/yurishin/from-and-for-me\n\nNEW MUSIC NEW MUSIC NEW MUSIC!\n\n\nsubscriber count: 217"), + ), + VideoItem( + id: "yH32GsHQSw4", + name: "They Catered To The \"Modern Audience\" And FOUND OUT", + duration: Some(732), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/yH32GsHQSw4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAlMUgi74L-gh1E68Vi91CrWj46tg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/yH32GsHQSw4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCilBfUHrxSjinnVyk2sIHWe-B4rA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/yH32GsHQSw4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOO2CYrG6k8s-PbhOF8V0cokDR2w", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCaJ84U5xsjX9KT1mIF3B22w", + name: "Rev says desu", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 days ago"), + view_count: Some(138292), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("\"Indiana Jones and the Great Circle\" is struggling after release. Many are blaming poor advertising and a \"modern audience\" comment from Narrative designer for its poor reception.\n\nMerch: https://u..."), + ), + VideoItem( + id: "uZix9dGiu18", + name: "Sidos Weihnachtsshow 2024 - Live aus Berlin", + duration: Some(10111), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/uZix9dGiu18/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLARei2l5FsB4sfdQjhZ7mgGSp6Bpw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/uZix9dGiu18/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDAoPLHjZ-ONZFUXz6QTN-KxUjqSg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/uZix9dGiu18/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCEE504UiYb5aOLsQDsQJXOTBIe1Q", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UChl3h_bqcx_c15f7WOtSn-A", + name: "Sido", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/TL3zMtJmLfaycA8ibvmry2tXmDF2KB6dsKySjODVFhZESItJwQphtQk_sE8tw6Qil5CVGZDm=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("Streamed 2 days ago"), + view_count: Some(260640), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Sidos Weihnachtsshow 2024 - Live aus Berlin\nKanal abonnieren: http://bitly.com/SidoOfficial\n \nMehr Infos:\nhttps://www.instagram.com/shawnstein\nhttps://www.facebook.com/sidomusik\nhttp://www.sido.de..."), + ), + VideoItem( + id: "7V4xoL96HKU", + name: "Oh No... My Mom Needs a Tablet - Budget Tablet Roundup", + duration: Some(896), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/7V4xoL96HKU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDfgzJzbjxjpBdtrrHZdw_3B23haQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/7V4xoL96HKU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDStICw3mTo2WVdYCtK_7VyfzCJIA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/7V4xoL96HKU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAIo9ffI2jei2tlNZvxN6r4V3si5Q", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCXuqSBlHAE6Xw-yeJA0Tunw", + name: "Linus Tech Tips", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 days ago"), + view_count: Some(999751), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Get 20% off DeleteMe US consumer plans when you go to http://joindeleteme.com/LTT20 and use promo code LTT20 at checkout.\nDeleteMe International Plans: https://international.joindeleteme.com/..."), + ), + VideoItem( + id: "jYQYcXLXFWw", + name: "Unser Jahr 2024 |\u{a0}ZNS-Stiftung & Adel Tawil", + duration: Some(90), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/jYQYcXLXFWw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLARi-dCy9Epc6Yz72skWzOYLT-sAg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/jYQYcXLXFWw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCrlllygf41fDSSaa7u4tdVM7LJiQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/jYQYcXLXFWw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD5zfCPtbGAC-3XNQ_W3lgzo_h5VA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCSRCm4zHuETCS7jHWMiWNog", + name: "Adel Tawil", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/gP4biZPhz7HcfAs2QH5PEumEOkCAToYuFuWrt-xVSO205o51I8vVMPwMANhVWHcFw3WXZAHT=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 days ago"), + view_count: Some(645), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Liebe Freundinnen und Freunde der ZNS Stiftung!✌🏾\u{a0}Das Jahr neigt sich dem Ende zu und ich möchte die Gelegenheit nutzen, um Allen zu danken, die unsere ZNS-Stiftung unterstützen.♥\u{fe0f}..."), + ), + VideoItem( + id: "9fr2PuJYcBE", + name: "cAvEman tv || Farm Tractor", + duration: Some(166), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/9fr2PuJYcBE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCPrI9y_vd8cA__s4x3Sy3goH0mLA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/9fr2PuJYcBE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAKw6raYdaFhfWsASgOmQ4Z_mucdA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/9fr2PuJYcBE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCR1u0C7V3BvuwPdrltbSatnTSNuw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UChWv6Pn_zP0rI6lgGt3MyfA", + name: "AvE", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 days ago"), + view_count: Some(22040), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Is it good? Is it bad? Neigh, it just is."), + ), + VideoItem( + id: "v2rSk9nZ8oo", + name: "FiNCH - WiEDER ANGESAGT (24 STD VERSION - NUR HOOK)", + duration: Some(86400), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/v2rSk9nZ8oo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDqZAvUhkQHuFeNZ62qY_DcyCU8AA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/v2rSk9nZ8oo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCgsDfu56Ev2vIhJCqB2jT-zNT6zQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/v2rSk9nZ8oo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBAeGtIITkPvP8NiPDrljUMch_4rA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC3eP48LEsxo4moTFYrOrG9A", + name: "FiNCH", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("2 days ago"), + view_count: Some(22848), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("DREiNACHTEN EP STREAMEN► https://wtw.lnk.to/dreinachten\nALBUM JETZT VORBESTELLEN► https://schlussmitlustig.shop/\nTiCKETS ZUR ARENA TOUR 2025 BESTELLEN► http://finch-live.de/\nKANAL ABONNiEREN..."), + ), + VideoItem( + id: "mpxfcEaoibw", + name: "Hold Me Down by Daniel Caesar (cover outro)", + duration: Some(90), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/mpxfcEaoibw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAeqNW-B-_BvTugTOwfmsH8A6asDQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/mpxfcEaoibw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDAKIFna1FmC9Wd-kFRp6Cjv1cnWQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/mpxfcEaoibw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBUuZ7f3Uxz_vpaVN3N7EChw4fqwQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCbeDqaLm7fdIzGK-uceZ6Ow", + name: "Yuri like glass", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("3 days ago"), + view_count: Some(120), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("covered the outro of this song!\n\n\n\nsubscriber count: 215"), + ), + VideoItem( + id: "sRHsFNAhfv8", + name: "Can 10 European Guess Each other\'s Nationality in ONE MINUTE??", + duration: Some(1914), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/sRHsFNAhfv8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDqmwZN3GVLy5OvSOyy102fWRCXQQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/sRHsFNAhfv8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB-EkRWXnQi1QeJmexBywsyjLsGsg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/sRHsFNAhfv8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB_6Y7W3ghasiFxk6a0vUZl-USt2g", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC7QteRlErpm27bkZ6izFwKg", + name: "World Friends", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("3 days ago"), + view_count: Some(41094), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("World Friends Facebook\n👉 / 100090310914821 \n\nTODAY 10 EUROPEAN GUESS EACH OTHER’S NATIONALITY IN ONE MINUTE!!!!\n\nHope you enjoy the video! \nAlso, please follow our panels!\n\n\nRU Taya..."), + ), + VideoItem( + id: "t4YJEekL1f8", + name: "Changbin \"ULTRA\" | [Stray Kids : SKZ-PLAYER]", + duration: Some(157), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/t4YJEekL1f8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC-svhJcbx5f9drX3SKxjJqELIIsA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/t4YJEekL1f8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBACPoJlyoFB6Pa8lrO_W2hruchkw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/t4YJEekL1f8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD_4BiPJpipSKYf0R4FFStcxpafJw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC9rMiEjNaCSsebs31MRDCRA", + name: "Stray Kids", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("3 days ago"), + view_count: Some(1448271), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("창빈(Changbin) \"ULTRA\" | [Stray Kids(스트레이 키즈) : SKZ-PLAYER(슼즈 플레이어)]\n\nListen to \"合 (HOP)\" now💦\nhttps://Stray-Kids.lnk.to/HOP\n\nListen to \"Walkin On Water (Remixes)\"..."), + ), + VideoItem( + id: "2DXQvSjg4YM", + name: "Isildur‘s Taschen-Schwert?", + duration: Some(195), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/2DXQvSjg4YM/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AHOBYACgAqKAgwIABABGGUgQyhBMA8=&rs=AOn4CLBNDDLHMi7cpB5aCLdfeMXZ5H11Bg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/2DXQvSjg4YM/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBzgWAAoAKigIMCAAQARhlIEMoQTAP&rs=AOn4CLD3oW24KLN8UmxwDLMWUcI6t3m7qQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/2DXQvSjg4YM/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBzgWAAoAKigIMCAAQARhlIEMoQTAP&rs=AOn4CLDDXzsVKmx15mF5f1IGZpcWmrZqHw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCVZlxkKqlvVqzRJXhAGq42Q", + name: "JoergSprave", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_kKQv93ELRWu1XsqlnRBDswoC56a8lQEbBWtQrbJR02w18=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("3 days ago"), + view_count: Some(27092), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Das Messer wird im Laufe des Jahres 2025 bei Böker erscheinen, als \"Böker Plus\" Midgards Messer Modell. Der Designer ist Jörg Sprave und es trägt auch das Midgards Messer Logo.\nDer Preis..."), + ), + VideoItem( + id: "hry77MdIp5A", + name: "241222 IVE REI 나? 보고싶지? 🐮", + duration: Some(1207), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/hry77MdIp5A/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AHOBYACgAqKAgwIABABGGUgZShlMA8=&rs=AOn4CLBeCwJ-Iypw0jnM7XBe0H0mQ-Vl-A", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/hry77MdIp5A/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBzgWAAoAKigIMCAAQARhlIGUoZTAP&rs=AOn4CLCAHcHVZ7A5iF4W4J55VjEq6a_xeA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/hry77MdIp5A/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBzgWAAoAKigIMCAAQARhlIGUoZTAP&rs=AOn4CLDHgjh1Q2m82aG0GxntDMj_fU4euw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC-Fnix71vRP64WXeo0ikd0Q", + name: "IVE", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("Streamed 3 days ago"), + view_count: Some(127319), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("STARSHIP SQUARE (Domestic) : https://bit.ly/3HtQ7GF\nSTARSHIP SQUARE (Global) : https://bit.ly/3JWPxm0\nIVE US EXCLUSIVE STORE : https://shop.ive-starship.com/ \n\nIVE X (Twitter)\n: https://twitter.co..."), + ), + VideoItem( + id: "t8eU18jj27I", + name: "Sweet Baby CEO Creates New \"Harassment Campaign\" As Website IMPLODES Amid Shutdown Rumors", + duration: Some(1008), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/t8eU18jj27I/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB78K7MZj4rZ10YJk2TopmEIZnvSg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/t8eU18jj27I/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCMMAOOm9KFRLBSLIs96L3DFDlcig", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/t8eU18jj27I/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA36ASflcSIzrktA8-Y7QavCv_MjA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCaJ84U5xsjX9KT1mIF3B22w", + name: "Rev says desu", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("3 days ago"), + view_count: Some(130029), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("It appears that the Sweet Baby Inc website has gone done for the second time recently. Additionally, Kim Belair had a lot to say about her critics (gamers) in latest interview.\nMy alt channel:..."), + ), + VideoItem( + id: "Cv3VopvZ_ho", + name: "Gregor Hägele - Mama (Live)", + duration: Some(287), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Cv3VopvZ_ho/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AG-B4AC0AWKAgwIABABGGUgZShlMA8=&rs=AOn4CLAWbCN9WZDWn_0vHXHx4jqeGIEvnQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Cv3VopvZ_ho/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBvgeAAtAFigIMCAAQARhlIGUoZTAP&rs=AOn4CLBI6e00lksLfR_D4iKfB7JDnK7-kw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Cv3VopvZ_ho/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBvgeAAtAFigIMCAAQARhlIGUoZTAP&rs=AOn4CLAODxgE6tAh7RdJNGkDA44kwdUBWQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCAmJs6kPXAe31qJH_vBGWsA", + name: "Gregor Haegele", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/61ysGsxu8YlE9Tx5_c8e9ybdhJCNfA3byxRdWHceZ5LwWB69_poYGp8jE0m5RJXZj8wXZO5_6A=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("3 days ago"), + view_count: Some(1356), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Gregor Hägele – Mama (Live)\n► Hier kannst du die Single streamen und downloaden: https://umg.lnk.tt/Mama_Live\n#GregorHaegele #mama\n \n► Nichts mehr von Gregor Hägele verpassen: \nInstagram:..."), + ), + VideoItem( + id: "BjoLQvj7lAE", + name: "I played Pokemon, but with 50+ New Types", + duration: Some(1899), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/BjoLQvj7lAE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAYaV5yw1RNxe8d3OMwswu_V4QDIA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BjoLQvj7lAE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD1OTZbvIfuqhDaMCuJZjpGVd1w9g", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BjoLQvj7lAE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD3Tei6JrLOAGUYCr-m8BIXXyNzfg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCGwu0nbY2wSkW8N-cghnLpA", + name: "JaidenAnimations", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/gopbHeiDtEB932rIFqLlR4D_hFtd-BcdGrQgGeyDpkD3guskkbT74DsJYPGo3x7MqkyqtgL-=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("3 days ago"), + view_count: Some(3385546), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Thanks to Jacob and their team for the incredible work putting this together! \nIf you want to play it, join Jacob\'s community discord and be nice: https://discord.com/invite/alpharad\n\n✦ The..."), + ), + VideoItem( + id: "nnsnXffEc88", + name: "Christmas Lights (original Christmas song)", + duration: Some(204), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/nnsnXffEc88/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDOo4LfQY6kkYZEsi13eZ0B-SVGqw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/nnsnXffEc88/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBUqbXjD44dQ83cBlWjvSkIS3Vr4g", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/nnsnXffEc88/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCXv-23WwLRA3_DmhjX0o6BZ1dYtA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCbeDqaLm7fdIzGK-uceZ6Ow", + name: "Yuri like glass", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("3 days ago"), + view_count: Some(49), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("my first original Christmas song! i wrote it two years ago and i still love it today.\n\nlyrics: \n\nin Georgia it barely snows\nso instead I put up the christmas lights that glow\nI watch the lights..."), + ), + VideoItem( + id: "Jy2-yI1t-w8", + name: "Which Chocolate Chip Makes the Best Cookies? | The Taste Test", + duration: Some(721), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Jy2-yI1t-w8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_Ypx4a7VM8PWxTEkv-DUMdo6F4w", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Jy2-yI1t-w8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCgFOXPt3o4j1NJiRRXKGfnMqrDqQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Jy2-yI1t-w8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA8gx0hD2_AD2fSX4I8d5ilxmxwEQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCxAS_aK7sS2x_bqnlJHDSHw", + name: "America\'s Test Kitchen", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/6pPZQkBWoQ-UAu5sT-Z47ID6vhPr-nnfziSpR84unn9vsDUzz5_iNS3WkuXSdKUKhkVGQerE=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("3 days ago"), + view_count: Some(71754), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("With chocolate chips now coming in different shapes, sizes, and even cacao percentages, how do you choose? We tested 13 options to find the best. \n\nRead our full review: https://cooks.io/49HV2jX..."), + ), + VideoItem( + id: "kjn79Cs5Hco", + name: "His Wife Threw his Gaming PC out the Window… Can I Fix It?", + duration: Some(1183), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/kjn79Cs5Hco/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDN6wH-cUigNkueTJtTRtmGOAJBZg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kjn79Cs5Hco/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBbvbNLNJb_thmDUB_3WQmSIYT8zQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kjn79Cs5Hco/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCNZjs617CKNxRrAH4gBQhMQQaRIQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCXuqSBlHAE6Xw-yeJA0Tunw", + name: "Linus Tech Tips", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("3 days ago"), + view_count: Some(1263346), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Go to https://bit.ly/LMGHOLIDAYXP and check out Green Man Gaming’s Holiday Sale to save big on some of the hottest titles out right now! You can even use code LMGHOLIDAYXP to instantly become..."), + ), + VideoItem( + id: "Ia1jc2bxibQ", + name: "cAvEman tv || homestead", + duration: Some(288), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Ia1jc2bxibQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDi8xbP2eLS-LqWdZuj2VShc9GYuA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Ia1jc2bxibQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDUN9sPwD0kyryScCRArox29LnlUA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Ia1jc2bxibQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDAIASLjiD6X1mlCnim6n7PZO1xbg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UChWv6Pn_zP0rI6lgGt3MyfA", + name: "AvE", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("3 days ago"), + view_count: Some(25943), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Pull up a stump! Plenty of room for you around the fire."), + ), + VideoItem( + id: "sIzz0l-6_Jk", + name: "Mozilla Ads and AI, EU investigates TikTok, Lenovo uses SteamOS: Linux & Open Source News", + duration: Some(1222), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/sIzz0l-6_Jk/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCfEuMtA4kg-uvdG6k0DlAX64vEIw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/sIzz0l-6_Jk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCeWM7W_Q_-rLhC4ddTrkOacpRdtQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/sIzz0l-6_Jk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB51NDkRe-VMMHxw6h3RNPVQMNUXQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC5UAwBUum7CPN5buc-_N1Fw", + name: "The Linux Experiment", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_lAKf-vZLoTI-gZUoP5Y3gbdGd07E4eDHUhTee6aOzDCnU=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(34019), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Check out TuxCare\'s partner Program to enrich your own Enterprise solutions: https://tuxcare.com/partners/?utm_campaign=The%20Linux%20Experiment&utm_source=youtube&utm_medium=social\n\nGrab a..."), + ), + VideoItem( + id: "SetFQPnlxvY", + name: "Country Name Differences Between Russian And Other European Languages!!", + duration: Some(858), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/SetFQPnlxvY/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCn2gIe2ep9oAi4uciQCgBGadicAg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/SetFQPnlxvY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDqtusH3tew0XItCXFYNNd6OiX-PQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/SetFQPnlxvY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDoX8-BYAt02Begz13CberboHI-fQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC7QteRlErpm27bkZ6izFwKg", + name: "World Friends", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(34718), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("World Friends Facebook\n👉 / 100090310914821 \n\nCountry names are different!!\n\nRussia, Portugal, Spain, Italy, Poland\n\nHope you enjoy the video! \nAlso, please follow our panels!\n\n\nRU Taya..."), + ), + VideoItem( + id: "ccoQmKWMy1s", + name: "[IVE ON] 2024 MAMA AWARDS BEHIND", + duration: Some(500), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ccoQmKWMy1s/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAJSf_FKryz8SQEqJ6ool_C0nlIuw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ccoQmKWMy1s/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB4BCuaIuLMFQfzSyclfm1_N6k9AA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ccoQmKWMy1s/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBW8xo76SfbKSQf6XUnYD4apajVKg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC-Fnix71vRP64WXeo0ikd0Q", + name: "IVE", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(99038), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("STARSHIP SQUARE (Domestic) : https://bit.ly/3HtQ7GF\nSTARSHIP SQUARE (Global) : https://bit.ly/3JWPxm0\nIVE US EXCLUSIVE STORE : https://shop.ive-starship.com/ \n\nIVE X (Twitter)\n: https://twitter.co..."), + ), + VideoItem( + id: "LWEDJ_YgEaA", + name: "I built the Dream Smart Kitchen", + duration: Some(1376), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/LWEDJ_YgEaA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD1XVJcUexwNA_l4p4VXvhsj1oY3g", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/LWEDJ_YgEaA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCbMidD77bZYn6wGt-gsorMPUYXNw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/LWEDJ_YgEaA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB_4brfanO5qQGkDUvQjrH3l2U0Ow", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCMiJRAwDNSNzuYeN2uWa0pA", + name: "Mrwhosetheboss", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/enyLBm1Sy8mVRXJJLWHT2z64nqxJGt2g61A9xnxpUjO2YAUovHaY_JT3rnAg0j6Qij9iaHQlAg=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(2529633), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("not bad ninja, not bad at all\nTake your cleaning to the next level this holiday season! 😏 https://roborock.pxf.io/POzk1R - From now until 12/29, snag Roborock Qrevo Slim with up to 30% OFF!..."), + ), + VideoItem( + id: "Rjqru848FSM", + name: "Deep Dive w/ Tim: Working on LED_Animation GH Issues #circuitpython #adafruit", + duration: Some(7526), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Rjqru848FSM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCFKDLckV8EpVpFWIkQxrM_wQhM3Q", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Rjqru848FSM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDPQ5Qm-1PQPt9C7jvbl3ZaVbTHVQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Rjqru848FSM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBV1vfzPucvSdGGiBuye62dnrdcyQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("Streamed 4 days ago"), + view_count: Some(643), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Visit the Adafruit shop online - http://www.adafruit.com\n\n-----------------------------------------\nLIVE CHAT IS HERE! http://adafru.it/discord\nSubscribe to Adafruit on YouTube: http://adafru.it/su..."), + ), + VideoItem( + id: "a-TF1iOUYhU", + name: "#BINI : BINI Reacts to “Joy To The World” Official Video", + duration: Some(242), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/a-TF1iOUYhU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDUsscy52tIsOi2nGDimScSz1FeqQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/a-TF1iOUYhU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDhLdpw6TuCfKCY-Gl9raxasfDpmQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/a-TF1iOUYhU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC46netzz54xcNOUiCrggNcu0S7JQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCtOcDBKgyr-f50SgbMErFkQ", + name: "BINI Official", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/JUvHJvdoccdG9aX_h9gOovEoMOT9gDquwjWpN_zEwv75ENRJns35kLZuUsr-Ft3oXdh8ciG6TQ=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(171186), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("#BINI : Our cutesy animated BINI is spreading joy-joy-joy to the world, but real-life BINI is bringing the LOLs w/ their reactions!🎄😂\n\nWho’s fangirling over their cartoon selves the..."), + ), + VideoItem( + id: "3yp17XEP5ck", + name: "Hyunjin \"So Good\" | [Stray Kids : SKZ-PLAYER]", + duration: Some(172), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/3yp17XEP5ck/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBTkt6iX3pSwpFTRDPFEy4UDre5LA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/3yp17XEP5ck/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLApR_2NODAeQLkfaDiOslNUbdDajg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/3yp17XEP5ck/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB2jJwPxRNHYyh35QfUzRN-EoJ-rA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC9rMiEjNaCSsebs31MRDCRA", + name: "Stray Kids", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(3257760), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("현진(Hyunjin) \"So Good\" | [Stray Kids(스트레이 키즈) : SKZ-PLAYER(슼즈 플레이어)]\n\nListen to \"合 (HOP)\" now💦\nhttps://Stray-Kids.lnk.to/HOP\n\nListen to \"Walkin On Water (Remixes)\"..."), + ), + VideoItem( + id: "x2zuG__aGXU", + name: "The Star Chapter: Sanctuary Challenge Shoot Sketch | T:TIME | TXT (투모로우바이투게더)", + duration: Some(739), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/x2zuG__aGXU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCpAPPB94Ad668ASGZQvMbtvjj0aA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/x2zuG__aGXU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAwfeRmYTDNr-Zvfw5yN6hDsZQc7A", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/x2zuG__aGXU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDaiR-P3QBWP1IKdcOKmEqV8_RtVQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCtiObj3CsEAdNU6ZPWDsddQ", + name: "TOMORROW X TOGETHER OFFICIAL", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/qhmEoqhG9u8lCm3NgdJc1hJ4yZYBPCZ8l2J-ia6cf_gSsnuFLo1sM_NUmFn48oPRAiJIkNUo=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(146994), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Connect with TOMORROW X TOGETHER:\nhttps://txt.ibighit.com\nhttps://x.com/TXT_bighit\nhttps://x.com/TXT_members \nhttps://x.com/TXT_bighit_jp\nhttps://www.facebook.com/TXT.bighit\nhttps://www.instagram.c..."), + ), + VideoItem( + id: "eOSX4WPiokI", + name: "[Teaser] IVE, David Guetta, BE@RBRICK \'Supernova Love\'", + duration: Some(23), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/eOSX4WPiokI/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAGfhoVF6fcdM3eqt04fJtNh34Pcg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/eOSX4WPiokI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBhAts6rQEfdSl_dHr9KnMY7IaJYA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/eOSX4WPiokI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBvlj7qCSekcp-fdMGyjnic9LRIuw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC-Fnix71vRP64WXeo0ikd0Q", + name: "IVE", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(60749), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Presented By\n\"THE COLLAB X\"\n \nArtists:\nIVE x DAVID GUETTA x BE@RBRICK\n \nProduced by:\nE2W GROUP\nMOVE INTERACTIVE\nExecutive Producer:\nDaniel Kim, Dennis Kim\nCG Director:\nVictor Choi\nLicensed..."), + ), + VideoItem( + id: "pF-1W-JxXSc", + name: "I’ve Got 99 Problems - WAN Show December 20, 2024", + duration: Some(10714), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/pF-1W-JxXSc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQGseaAKrlViBLDXNzB3lUcU451Q", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pF-1W-JxXSc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA38E2YmWzRY5q9c4L1SRM3KJGSJg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pF-1W-JxXSc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC4bN0T7EfkvKsYM6SLy70oL66B0A", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCXuqSBlHAE6Xw-yeJA0Tunw", + name: "Linus Tech Tips", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("Streamed 4 days ago"), + view_count: Some(470247), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Save 10% and get free shipping at Ridge by using the code WAN at https://www.ridge.com/wan\n\nGo to http://rocketmoney.com/wan to cancel your unwanted subscriptions with Rocket Money.\n\nTry Pulseway..."), + ), + VideoItem( + id: "PxUKjvZesTw", + name: "cAvEman TV || Remittance Men", + duration: Some(265), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/PxUKjvZesTw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBIwFx-QOAbaWCo4UABLYTsNwCkbw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/PxUKjvZesTw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAbQ2ziJaDHsGB3QLBOzVt-4vEmVg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/PxUKjvZesTw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA51ExwFf76E68yX0bDREv1wyjSag", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UChWv6Pn_zP0rI6lgGt3MyfA", + name: "AvE", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(50997), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("A Christmas Story around the fire."), + ), + VideoItem( + id: "gs1g-z8ZLcY", + name: "AvE Knife || Quick-Start", + duration: Some(431), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/gs1g-z8ZLcY/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDx3JslzGomnKFgAZZM-6CbmKP-Cg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/gs1g-z8ZLcY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDndh5LZHYfsdYrBd9SQvU9tzspGg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/gs1g-z8ZLcY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBgKnDcPbAR4UQvIhCDGXB00yX7mw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UChWv6Pn_zP0rI6lgGt3MyfA", + name: "AvE", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(30134), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Knife here: https://aveworkshop.myshopify.com/"), + ), + VideoItem( + id: "dWYSIw8AYQY", + name: "Woke CDPR Lore Designer Exposed For Hating Gamers As Concerns About \"Witcher 4\" Grow", + duration: Some(947), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/dWYSIw8AYQY/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDEWSh3FGkRPMX106nbaZw7LcTLWw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/dWYSIw8AYQY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCo-R7WSjd46TEDAZMF_JMIOTmsXw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/dWYSIw8AYQY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDMjxjOY0vZXNyYditAPG-7o4C7og", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCaJ84U5xsjX9KT1mIF3B22w", + name: "Rev says desu", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(81964), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("CD Projekt Red\'s franchise and lore designer has been exposed for being woke and hating gamers. This adds more concern about the lore of Witcher 4 being corrupted.\n\nMerch: https://uwumarket.us/coll..."), + ), + VideoItem( + id: "QULJ0ScQEoc", + name: "Our Favorite Things of 2024 | Trash Taste #235", + duration: Some(6815), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/QULJ0ScQEoc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBEZYJaPdWfqdBL35yHHn-wJ_N0rw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/QULJ0ScQEoc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD2ebMtvvxvjuwrzPImA3EtaaAjpQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/QULJ0ScQEoc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC59u2OWwbZgDdZc5e7sHOSpNFRqQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCcmxOGYGF51T1XsqQLewGtQ", + name: "Trash Taste", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_kMwLH77YtyKHVCbKrQfzYYFSc4IQ5e5mILkvgvXSP0UpA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(363707), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("🥤Buy Waifu Cups at https://gamersupps.gg/TrashTaste with code [trashtaste]\n\nSupport Us On Patreon:\nhttps://www.patreon.com/trashtaste\n\nFollow Trash Taste:\nhttps://twitter.com/TrashTastePod..."), + ), + VideoItem( + id: "xrjr1jYxuXE", + name: "Essential Tools for Breakfast | America\'s Test Kitchen (S24 E21)", + duration: Some(247), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/xrjr1jYxuXE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLALqJt3bI15Li56jhwIzuBWuVT7Bw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/xrjr1jYxuXE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCmjplNFxPKLQFjCOgYcxptKnkNtQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/xrjr1jYxuXE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCsoaQOYTOU_fsv2d0mp0PhVCJ6oA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCxAS_aK7sS2x_bqnlJHDSHw", + name: "America\'s Test Kitchen", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/6pPZQkBWoQ-UAu5sT-Z47ID6vhPr-nnfziSpR84unn9vsDUzz5_iNS3WkuXSdKUKhkVGQerE=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(40010), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("This buying guide highlights our favorite equipment for achieving the ultimate Holiday breakfast. \n\nBuy our winning Breville Citrus Juicer: https://cooks.io/4ey7yU0\nBuy our best-buy Dash Citrus..."), + ), + VideoItem( + id: "1wgVMVeb34A", + name: "Ed Sheeran - Under the Tree (from “That Christmas”) | Behind The Scenes", + duration: Some(243), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/1wgVMVeb34A/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDXtZI__wBhqILmipnEnGo3UOt4fA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1wgVMVeb34A/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCzs1FvHxPlsqBPp1mmsgQzcq2mQg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1wgVMVeb34A/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAUIQR_QDiGLjlul2Kf9i2LV8NzgQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC0C-w0YjGpqDXGB8IHb662A", + name: "Ed Sheeran", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/emA0C_i9tUyJgxrfVpJ31e0QCU2MlovjYvQkAC9mDuSJyhl6h8PkFj5-ozRzz2vFtpbnls8s1W4=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 days ago"), + view_count: Some(343347), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Under the Tree, from the Netflix film “That Christmas”, out now on Netflix. \n\nSingle out now: https://es.lnk.to/UnderTheTree \nWatch the official video: https://youtu.be/nBCkXe3ZfoI\n\nSubscribe..."), + ), + VideoItem( + id: "hk3_fFvRt34", + name: "Cheat Codes - Stand By Me (Official Music Video)", + duration: Some(191), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/hk3_fFvRt34/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLADC9m5DaMR11zDsHSOWCY_GMH59w", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/hk3_fFvRt34/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCc-gv7fWl5Z1-NOV2PPt7dcKSPjA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/hk3_fFvRt34/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD1_xdMp-KThU6_N7DrAu4XopigLQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UChCWmgEgUXwS5QEZZ-iWN-Q", + name: "Cheat Codes", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/m8NTmy6jGdmct02X6EM3Lf_Q5uSzF4BkXn-5IJ5q7pWuHX-28HemhElO3ynyHQm60OzYT90M=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(63218), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Stand By Me Out Now: https://lnk.to/CC_StandByMe\n\r\nFollow Cheat Codes:\r\nFacebook: https://www.facebook.com/cheatcodes\r\nTwitter: https://twitter.com/cheatcodesmusic\r\nInstagram: https://www.instagram..."), + ), + VideoItem( + id: "k4oI1nzcJIs", + name: "Bandidos: Season 2 | Official Trailer | Netflix", + duration: Some(102), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/k4oI1nzcJIs/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCgTGucY6btlloskX2ZABmSatzikA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/k4oI1nzcJIs/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCGGTaXbYUoNi3aDW8NBezhu_gE_w", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/k4oI1nzcJIs/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBvzlmReF6iOtrLkXPpy6WjD3XlTg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCWOA1ZGywLbqmigxE4Qlvuw", + name: "Netflix", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(79621), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Lilí and Miguel\'s peaceful escape is shattered when she\'s forced into a risky quest for the Tear of Fire diamond, risking everything to save her friends.\n\nWatch on Netflix: https://www.netflix.com..."), + ), + VideoItem( + id: "g0xgOKRsJLI", + name: "What\'s Next for Netflix Sports | Tyson, SEC Football, Elway and more | Netflix", + duration: Some(75), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/g0xgOKRsJLI/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDxdXiVuSuDegkE2UDSLqyOUjTnPQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/g0xgOKRsJLI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB1qS7lO9fzjI4vCBEFwWs8aYWlXw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/g0xgOKRsJLI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDkuPwFzvIJd8BeyQontXfoEYLvsQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCWOA1ZGywLbqmigxE4Qlvuw", + name: "Netflix", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(21031), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Netflix Sports brings you closer to the stories and athletes you love the most. And the best is yet to come. \r\n\r\nAnnouncing upcoming series and films for Netflix Sports: Court of Gold, Elway,..."), + ), + VideoItem( + id: "khdq9L5ygxw", + name: "European Learn The Hardest Alphabet l Russian Alphabet is insane!!", + duration: Some(1058), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/khdq9L5ygxw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAOl3mW9uCAlZuqkGWGzXZAkjn1ig", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/khdq9L5ygxw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDJl7m0n7Nx3rWQOri5Hb2uS_upOA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/khdq9L5ygxw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB9w71DBa64O2NL_ENEypvWtL7Nbw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC7QteRlErpm27bkZ6izFwKg", + name: "World Friends", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(52639), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("World Friends Facebook\n👉 / 100090310914821 \n\nCan you read the Russian Alphabet? Let\'s Learn!\n\nHope you enjoy the video! \nAlso, please follow our panels!\n\n\nRU Taya @tae_yeon04.10\nPT Miguel..."), + ), + VideoItem( + id: "Kc68RUhF8Eg", + name: "Control Wiz Lights From CircuitPython #adafruit #circuitpython", + duration: Some(69), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Kc68RUhF8Eg/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgZShlMA8=&rs=AOn4CLD1PvkkceTAre4AVRlpOPoGo6ZotQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Kc68RUhF8Eg/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhlIGUoZTAP&rs=AOn4CLDaS0L07kW27M7oKkVE2POICyiQpw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Kc68RUhF8Eg/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhlIGUoZTAP&rs=AOn4CLBQIpnJfKAkhbtPLl00Jq0olWJ5Cw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(964), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("CircuitPython Wiz Library: https://github.com/adafruit/Adafruit_CircuitPython_Wiz\n\nVisit the Adafruit shop online - http://www.adafruit.com\n\n-----------------------------------------\nLIVE CHAT..."), + ), + VideoItem( + id: "_eiTelPB56s", + name: "Best Adjustable Wrench? Testing Viewer Suggestions", + duration: Some(1049), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/_eiTelPB56s/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBP0o-eNwsLn1hYzniXmRpPoMhCQg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/_eiTelPB56s/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBA9gZpgmZmyQlO8fyDlg6cW_ygRg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/_eiTelPB56s/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAGHi2Oa83_N74E4yywRmUa07rdlw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCZem9C5rWjSb0B8tV3k2EZg", + name: "Torque Test Channel", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_n3V8UR7V7bO4lbA8IhEYHO_sYqEwV3eByDzoB0RF8B_Q=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(113608), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Klein: https://amzn.to/3TZHQ3q Bahco: https://amzn.to/3YhaEa4 SK: https://amzn.to/3Y4BIIj Workpro: https://amzn.to/3ZUXfWr\nOur lifetime worth of *TOOL RANKINGS* https://torquetestchannel.etsy.com/l..."), + ), + VideoItem( + id: "0mcING0Zdis", + name: "Trailerpark - TP4L (Live Abschiedskonzert)", + duration: Some(184), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/0mcING0Zdis/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAJxUfs-0jsVxGtcSus64KlAa3ThQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/0mcING0Zdis/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDSnc2TM8NFoaimnK6kZrY39VvKPg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/0mcING0Zdis/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAIxWTFA3p2iFO9AJhvFA7Gd0oPPQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCC9192yGQD25eBZgFZ84MPw", + name: "Trailerpark", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_lYwM_1_M7MxhF_wY2lAem2tZM-P_cVA9JgaQeYewaeyw=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(11118), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Das ganze Abschiedskonzert im \"Goldener Schluss\" Box-Set:\nhttps://tp4l.de\n\n►►TRAILERPARK:◄◄\nhttp://www.facebook.com/trailerpark"), + ), + VideoItem( + id: "6o5RprIJmfA", + name: "How to Make a Real Diamond - (Not Clickbait)", + duration: Some(531), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/6o5RprIJmfA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAK_QgmENCb6PZIRAGM9PJps-jHNA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/6o5RprIJmfA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD8l-VuFXzjuTr1F_O20JDIi0RQEg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/6o5RprIJmfA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBgc8-Fqr1NQKVy9jqmufyWr6y0RQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCWFKCr40YwOZQx8FHU_ZqqQ", + name: "JerryRigEverything", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_lgA3xMKNY0-d05dSmj3zt7CeTS1QSS5jVgOWqD03VsSm4=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(2773065), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Today we tour an Industrial diamond manufacturing facility, that makes real diamonds right here in the USA. Utah to be exact. US Synthetic uses massive presses the size of a car to smash diamond..."), + ), + VideoItem( + id: "MHiH9x1n7Do", + name: "How I Made “Just Can’t Stop” - Marshmello Music Production Breakdown", + duration: Some(3227), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/MHiH9x1n7Do/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCSowIJpHcJhQiZx5R-Bzo0gslGtw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/MHiH9x1n7Do/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCdZblm9gHHlNU3ZGbt-mYI8AZwmg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/MHiH9x1n7Do/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDsTmRA8yEb-bU41NhtBrgrxCQv1A", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCEdvpU2pFRCVqU6yIPyTpMQ", + name: "Marshmello", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/yJlMNr2TRPPNCkijsPlW_urjXKEXg44NBhZhz5j3jy4OCJTg5WPhnEQKamrd6bNTqh48-_rtZ7E=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(120050), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("How I Made “Just Can’t Stop” - Marshmello Music Production Breakdown\nListen to \"Just Can\'t Stop\" on my new EP \"The R♾\u{fe0f}ts\": https://marshmello.ffm.to/theroots\n\nOfficial Marshmello..."), + ), + VideoItem( + id: "DzBB7izZnZk", + name: "HAN \"Hold my hand\" | [Stray Kids : SKZ-PLAYER]", + duration: Some(184), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/DzBB7izZnZk/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDor_k6wD1zG2N9B4OeT5IYsLB1Mw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DzBB7izZnZk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDd_U9EMa1r9SaP_AFRzRPBFB5tKg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DzBB7izZnZk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAW8Uu3mBuNd2svn793XwIEn-hgCQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC9rMiEjNaCSsebs31MRDCRA", + name: "Stray Kids", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(2308522), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("한(HAN) \"Hold my hand\" | [Stray Kids(스트레이 키즈) : SKZ-PLAYER(슼즈 플레이어)]\n\nListen to \"合 (HOP)\" now💦\nhttps://Stray-Kids.lnk.to/HOP\n\nListen to \"Walkin On Water (Remixes)\"..."), + ), + VideoItem( + id: "MB1S8soDTn4", + name: "1,2,3 IVE 5 EP.7", + duration: Some(2503), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/MB1S8soDTn4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDmMoJ8vaGAegmdpG6b0xSt1spT-g", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/MB1S8soDTn4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAHXdyiqHH56c-G5Y92XNYVIeXe7w", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/MB1S8soDTn4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDrCfUiN5NWkjj75N4p04_pwQewSQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC-Fnix71vRP64WXeo0ikd0Q", + name: "IVE", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(385293), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("STARSHIP SQUARE (Domestic) : https://bit.ly/3HtQ7GF\nSTARSHIP SQUARE (Global) : https://bit.ly/3JWPxm0\nIVE US EXCLUSIVE STORE : https://shop.ive-starship.com/ \n\nIVE X (Twitter)\n: https://twitter.co..."), + ), + VideoItem( + id: "BICoukMrTJo", + name: "LE SSERAFIM (르세라핌) 2024 뮤직뱅크 글로벌 페스티벌 in JAPAN Dress Rehearsal", + duration: Some(432), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/BICoukMrTJo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCIm9-VqQV9nU9-wzwzO4b3G2K33Q", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BICoukMrTJo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDv_7JyF8QVpgHZ1_oozK0C4juzYA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BICoukMrTJo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD7c8NQvk2Ik5O15-66_s76IILNeA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCs-QBT4qkj_YiQw1ZntDO3g", + name: "LE SSERAFIM", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/4qrLd3kEQp0HKI5kKfewXXHxR_WxBAb7r2-Dp_V4ZHp9XVvLfDQ9OpBa3Nhr1lgkOQuodZzymyU=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(289798), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("#LE_SSERAFIM #르세라핌 공식 채널\n#LE_SSERAFIM #르세라핌 OFFICIAL CHANNEL\n\nConnect with LE SSERAFIM:\nOFFICIAL INSTAGRAM https://www.instagram.com/le_sserafim/\nOFFICIAL X (TWITTER)..."), + ), + VideoItem( + id: "1qY64k4dFLQ", + name: "JOHN PARK\'S WORKSHOP LIVE 12/19/24", + duration: Some(2996), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/1qY64k4dFLQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBlXWcjPhpWT4CYWTMulNdq58jqOQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1qY64k4dFLQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAWFHafWYYjtG3hyKbGjgBzDohIiA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1qY64k4dFLQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCO8nUslfZ8FZXaxFOY3mlqloYtLQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("Streamed 5 days ago"), + view_count: Some(539), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("JOHN PARK\'S WORKSHOP LIVE 12/19/24\nProject: Dancing Gnomes\nCircuitPython Parsec\nJPPPoW recap\nProjects\nand more!\n\nVisit the Adafruit shop online - http://www.adafruit.com\n\n--------------------------..."), + ), + VideoItem( + id: "U9MnGYDbhtU", + name: "Love Is Blind: Germany | Official Trailer | Netflix", + duration: Some(126), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/U9MnGYDbhtU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDNR_J1cWJdmmajHUj2RN60LxVMtw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/U9MnGYDbhtU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB_yed98u22Phrhom-dfWRWSlYKZQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/U9MnGYDbhtU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCsy2WYNM5MxfTA2TUlIC9Np2GGsQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCWOA1ZGywLbqmigxE4Qlvuw", + name: "Netflix", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(22330), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Pods open, eyes shut, feelings on. Love Is Blind is coming to Germany! January 3, only on Netflix.\r\n\r\nWatch on Netflix: https://www.netflix.com/title/81682953\r\n\r\nAbout Netflix:\r\nNetflix is..."), + ), + VideoItem( + id: "jQy9oyQvpXA", + name: "#NewProducts 12/18/24 Feat @Adafruit 1.14\" 240x135 Color Newxie TFT Display - ST7789", + duration: Some(485), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/jQy9oyQvpXA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBgFq1ah5v1M6qak0nUnOPmCN4L1g", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/jQy9oyQvpXA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDFbCYquI_kQ1yrcIM6S3vhzp26cQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/jQy9oyQvpXA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC_y46uHe4jJGcRW0swTvHfL10Xhg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(3736), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Round Panel Mount Micro SD Card Extender (0:17)\nhttps://www.adafruit.com/product/6070\n\nUSB-C Screw Panel Mount to 4pin JST PH Cable (2:11)\nhttps://www.adafruit.com/product/6071\n\nSnap-In Panel..."), + ), + VideoItem( + id: "NLc24clKRuU", + name: "Popular Manga CENSORED After Its Mockery Of \"Gender Neutral Terms\" Enraged Western Tourists", + duration: Some(643), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/NLc24clKRuU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2yjeET0I0xK8q7Q6XnkGbPeK80w", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/NLc24clKRuU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAQA973Ial1XFm8zOIJVegtLiEf5g", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/NLc24clKRuU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCGg31UGGnNRbTgXI7b2P24vEx9lg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCaJ84U5xsjX9KT1mIF3B22w", + name: "Rev says desu", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(78606), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("The first chapter of the manga \"Drama Queen\" has been censored after users complained about its \"insensitive\" themes including a scene mocking gender neutral terms.\n\nMerch: https://uwumarket.us/col..."), + ), + VideoItem( + id: "ZO_MHVDiQZc", + name: "FiNCH - WiEDER ANGESAGT (Visualizer)", + duration: Some(125), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ZO_MHVDiQZc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA8_gaDQsm8OcnAbuh02LRtPrc7VA", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ZO_MHVDiQZc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLABZ3yElepRnwZyR2LJQvgCXhN1Kg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ZO_MHVDiQZc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA9C5D-4Z5qbBjdlDE8ft2sZ1payw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC3eP48LEsxo4moTFYrOrG9A", + name: "FiNCH", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(107497), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("DREiNACHTEN EP STREAMEN► https://wtw.lnk.to/dreinachten\nALBUM JETZT VORBESTELLEN► https://schlussmitlustig.shop/\nTiCKETS ZUR ARENA TOUR 2025 BESTELLEN► http://finch-live.de/\nKANAL ABONNiEREN..."), + ), + VideoItem( + id: "kNZAnOQ8Y4w", + name: "FiNCH - NEVER STOP (Visualizer)", + duration: Some(136), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/kNZAnOQ8Y4w/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBXHKJhk_MKmOxKe4uTQ6ylbK6eGg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kNZAnOQ8Y4w/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBYXPOsFcoBk6hIpDPQN1BuEIRyBA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kNZAnOQ8Y4w/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD-6xH064PYerFcJwFKhtBZkDKWvA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC3eP48LEsxo4moTFYrOrG9A", + name: "FiNCH", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(180744), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("DREiNACHTEN EP STREAMEN► https://wtw.lnk.to/dreinachten\nALBUM JETZT VORBESTELLEN► https://schlussmitlustig.shop/\nTiCKETS ZUR ARENA TOUR 2025 BESTELLEN► http://finch-live.de/\nKANAL ABONNiEREN..."), + ), + VideoItem( + id: "usMaoeE1gKE", + name: "FiNCH - GMKH", + duration: Some(130), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/usMaoeE1gKE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA0DygVcaf6UGlrtpzYvBZxaTJCzg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/usMaoeE1gKE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAWRnX2L-EHkgNFufEpjcej5yoE_g", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/usMaoeE1gKE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB4D7vShYWo7DhM2e4sCqp0Uug47g", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC3eP48LEsxo4moTFYrOrG9A", + name: "FiNCH", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(154057), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("DREiNACHTEN EP STREAMEN► https://wtw.lnk.to/dreinachten\nALBUM JETZT VORBESTELLEN► https://schlussmitlustig.shop/\nTiCKETS ZUR ARENA TOUR 2025 BESTELLEN► http://finch-live.de/\nKANAL ABONNiEREN..."), + ), + VideoItem( + id: "PcnWneULGAQ", + name: "Is Buying a PETABYTE on Ebay Stupid?", + duration: Some(1093), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/PcnWneULGAQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAXZd7_Fr3Up9XkHn6QNezPKcGS9w", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/PcnWneULGAQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLARoTX17ApJ3ZedvOJSTxaBQ_eVrA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/PcnWneULGAQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAVxhfeqfetPC2F_4JNV2ScR0FQeA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCXuqSBlHAE6Xw-yeJA0Tunw", + name: "Linus Tech Tips", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(1749525), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Go to https://ground.news/ltt to get 50% off the Ground News Vantage plan. Outsmart algorithms and optimize the way you read the news.\n\nCheckout MSI’s laptops deals at https://msi.gm/S621A5A8..."), + ), + VideoItem( + id: "X6sbHrfIcYI", + name: "Avicii - I’m Tim | Sneak Peek | Netflix", + duration: Some(62), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/X6sbHrfIcYI/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCRrrvfgSDQ7YId4coVIbrOmaWpMQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/X6sbHrfIcYI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDF4VH-N9slpMTRxRTQEqtKGdHRRg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/X6sbHrfIcYI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBmQHzIEm9OsDoaSFhqH3TvB8-PuQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCWOA1ZGywLbqmigxE4Qlvuw", + name: "Netflix", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(41189), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("From small clubs to the world’s biggest stages – Avicii took the world by storm with Levels. Discover Tim Bergling\'s story and see where it all began in the documentary Avicii - I’m Tim..."), + ), + VideoItem( + id: "pDMVpVXDfbg", + name: "ICON LEAGUE GEWONNEN! & mein Gastauftritt beim TREAM Konzert", + duration: Some(900), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/pDMVpVXDfbg/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCbkoBPVDAPLuirTPvu0WqibNCZpg", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pDMVpVXDfbg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC94o5W7ctvHtu5ysr3p_nBI2Pvng", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pDMVpVXDfbg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDTaKt5IduG29C20ASuYhCZA87hUg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCJl-cGDSoGlB86vB_3scwAQ", + name: "bausashaus", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/in43p8oqmcxvsiLuIj3hJZwU-ToArJZg-jdzfF534h5hmKNHO7e2JPN_r7g0y2Fp2xSJ_HnOrN0=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(11137), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("► Komm auf meine Tour: https://bausa-tickets.com\n\n►VIDEO\nAbonniere Bausa auf YouTube, um kein neues Video zu verpassen: http://smarturl.it/BAUSA_YouTube \n\n►BAUSA IM NETZ\nTikTok: https://www.t..."), + ), + VideoItem( + id: "kf9e1o7rUeo", + name: "Don\'t Die: The Man Who Wants to Live Forever | Official Trailer | Netflix", + duration: Some(133), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/kf9e1o7rUeo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAGmAdhoe2RXjEKZaEIXZLK1SgEiw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kf9e1o7rUeo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDguPfkCwUek0D5K8rBKnjrrxXA5A", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kf9e1o7rUeo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDEJ_m8eYz4muYrcscYc-hmkDOOig", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCWOA1ZGywLbqmigxE4Qlvuw", + name: "Netflix", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("5 days ago"), + view_count: Some(203200), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("How far would you go to live forever - or even just slow down the aging process? This startling documentary by Chris Smith (Fyre, 100 Foot Wave) is told through intimate access to Bryan Johnson,..."), + ), + VideoItem( + id: "PUZBEpPffV4", + name: "The Weeknd, Anitta - São Paulo (The Making of \'São Paulo\' | Vevo Footnotes)", + duration: Some(204), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/PUZBEpPffV4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDePeTeD9en_RluckBW5r_9okOlNQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/PUZBEpPffV4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCRHd2wvCWEYnqEqg8yRdGwqTJBdA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/PUZBEpPffV4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDGuEDZYrpeyzuKgfCYkEBgTigKOg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC0WP5P-ufpRfjbNrmOWwLBQ", + name: "The Weeknd", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/WHvw1ak1FcJaHeEiTmG2iN0dqEjjPxAtT_tA8ruJ3MlNr9I-RHsAur1iAenYeQN_d6LNPH2Z8Ic=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: artist, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("6 days ago"), + view_count: Some(96209), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Music video by The Weeknd, Anitta performing São Paulo (The Making of \'São Paulo\' | Vevo Footnotes).© 2024 The Weeknd XO Music ULC, marketed by Republic Records, a division of UMG Recordings, Inc."), + ), + VideoItem( + id: "-hlwlML6pEg", + name: "The INSANE Tech behind MrBeast’s Biggest Video Ever", + duration: Some(2112), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/-hlwlML6pEg/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCQ9oGROGnCmdKKxpvo_N7oZ7WBXQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/-hlwlML6pEg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDExO_OU8M9_Bhwhjiu88UNB80eog", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/-hlwlML6pEg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAm9-mKlP4vO38XSlkXBjYPGkE9eQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCMiJRAwDNSNzuYeN2uWa0pA", + name: "Mrwhosetheboss", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/enyLBm1Sy8mVRXJJLWHT2z64nqxJGt2g61A9xnxpUjO2YAUovHaY_JT3rnAg0j6Qij9iaHQlAg=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("6 days ago"), + view_count: Some(2848369), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("So yeah, the MrBeast Beast Games are wilder than you think - I have NEVER seen Tech like this just to make ONE YOUTUBE VIDEO\n\nI spend a LOT of time trying to make my videos as concise, polished..."), + ), + VideoItem( + id: "gs8qfL9PNac", + name: "2,000 People Fight For $5,000,000", + duration: Some(1485), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/gs8qfL9PNac/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCzS16uP4cvK5DiFh9wr-qlrjG95A", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/gs8qfL9PNac/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDW2cuqfOIMKq-9zmjXaaDLXwn5zg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/gs8qfL9PNac/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDVXNvdoLQtrim9tkoS6hOMD-iJ8A", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCX6OQ3DkcsbYNE6H8uQQuVA", + name: "MrBeast", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/fxGKYucJAVme-Yz4fsdCroCFCrANWqw0ql4GYuvx8Uq4l_euNJHgE-w9MTkLQA805vWCi-kE0g=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("6 days ago"), + view_count: Some(102498876), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Watch Beast Games now on Prime Video: https://unfur.ly/BeastGames\nThank you to @MoneyLion for partnering with me on Beast Games. You can enter the MoneyLion Beast Games Giveaway where over..."), + ), + VideoItem( + id: "nUUr_UkTrVE", + name: "America\'s Team: The Gambler and His Cowboys | First Look | Netflix", + duration: Some(45), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/nUUr_UkTrVE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLByLJeZstt86AtcBdGG6dYl8iDvmw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/nUUr_UkTrVE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAyZBR7Imjdq5-lJVCwdO0qvx2EuQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/nUUr_UkTrVE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBu3HtVjGVcNSOqnRy98F060rN2IA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCWOA1ZGywLbqmigxE4Qlvuw", + name: "Netflix", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("6 days ago"), + view_count: Some(26152), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("In 2025 go inside the story of the Dallas Cowboys owner, president and general manager Jerry Jones risked everything for a chance at transforming and leading the franchise to three NFL titles..."), + ), + VideoItem( + id: "4OVJekZzNyo", + name: "EYE on NPI - Raspberry Pi Compute Module 5 #EYEonNPI #DigiKey #adafruit @DigiKey @raspberrypiorg", + duration: Some(762), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/4OVJekZzNyo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCXNG8hMN1q8M9ls9ybU9DgDenBVQ", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/4OVJekZzNyo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCou-3rAuICeV7BcvguulBSVic7BA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/4OVJekZzNyo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA-JtVXsMWbRNRLOuftX_EW_ujUgQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("6 days ago"), + view_count: Some(1332), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("This week\'s EYE ON NPI is an EYE ON A PI - it\'s the Raspberry Pi Compute Module 5 (https://www.digikey.com/en/product-highlight/r/raspberry-pi/raspberry-pi-compute-module-5), the latest update..."), + ), + VideoItem( + id: "YYCtqaP8aw4", + name: "Adafruit Top Secret for December 18, 2024 #adafruit", + duration: Some(916), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/YYCtqaP8aw4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDElyw9dR964qms-rDtDnxNaJCxag", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/YYCtqaP8aw4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD-Pu_X63_7H9h_-ichnzh4HHC2zw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/YYCtqaP8aw4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCkSuXPMWHgSvgmRLlVYy3XeSky7A", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("6 days ago"), + view_count: Some(1811), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("The hush-hush news from Adafruit in Industry City, Brooklyn, New York. Broadcast December 18, 2024\n\nThese are items or concept products that may/might/could be introduced into the Adafruit..."), + ), + VideoItem( + id: "HJcvJjTh1gU", + name: "Python on Hardware weekly video for December 18, 2024", + duration: Some(234), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/HJcvJjTh1gU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCd-xrQb52Fy8iEebtT68IuyxCR-g", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/HJcvJjTh1gU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB5xWaRLC0dn1xsl1nYMs_qVpcEVw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/HJcvJjTh1gU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAt12TmSnuGSHpA1rECp7ghVpCwbw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("6 days ago"), + view_count: Some(320), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("The wonderful world of Python on hardware! Episode 301 (December 18, 2024). This is our weekly Python video highlights! Ladyada and PT review the Python on hardware news of the week.\n\nThe news..."), + ), + VideoItem( + id: "5J9yh1i0sog", + name: "FRAMEWORK 16: an almost perfect Linux laptop", + duration: Some(1188), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/5J9yh1i0sog/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB0fECDa34hlxwkuCDQVOFNx9x4Gw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5J9yh1i0sog/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLALX0F2qb45rXSath5qZ8p82osQ9Q", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5J9yh1i0sog/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAddj0wDC-AxfMUPPF5zqXTIQrSoQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC5UAwBUum7CPN5buc-_N1Fw", + name: "The Linux Experiment", + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_lAKf-vZLoTI-gZUoP5Y3gbdGd07E4eDHUhTee6aOzDCnU=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("6 days ago"), + view_count: Some(54920), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Try out Proton Mail, the secure email that protects your privacy: https://proton.me/mail/TheLinuxEXP\n\n👏 SUPPORT THE CHANNEL:\nGet access to:\n- a Daily Linux News show\n- a weekly patroncast..."), + ), + VideoItem( + id: "ybzJy_jdJgA", + name: "Gabriel Iglesias: Legend of Fluffy | Official Trailer | Netflix", + duration: Some(71), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ybzJy_jdJgA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMgRM-ruPs_5XwliLtOLie_xSVrw", + width: 210, + height: 118, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ybzJy_jdJgA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB-1CYJp2X5xMI4d_idpyXvtU8pfA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ybzJy_jdJgA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAcFJESbHyVp3hlErAfVAsQLip5Bw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCWOA1ZGywLbqmigxE4Qlvuw", + name: "Netflix", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("6 days ago"), + view_count: Some(156642), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Gabriel “Fluffy” Iglesias’s new stand-up special, LEGEND OF FLUFFY, will premiere globally on January 7, 2025!\n\nIn Gabriel Iglesias: Legend of Fluffy (which marks his 27th year in comedy!),..."), + ), + ], + ctoken: Some("4qmFsgKSARIPRkVzdWJzY3JpcHRpb25zGmJDR1Y2UUc5d1QwUjNkMnR4U1dkM1NYcGZWM2QxZDFsUk1Vb3lkbWhuU1hsR1VXOUhRMUJFY0d0TWMwZEZaM1ExV1c1d1MyVldPWEZhUlhCdVVWUnBVVUV3YUd6SUJnQSUzRJoCGmJyb3dzZS1mZWVkRkVzdWJzY3JpcHRpb25z"), + endpoint: browse, + authenticated: true, +) diff --git a/src/client/snapshots/rustypipe__client__music_history__tests__map_history.snap b/src/client/snapshots/rustypipe__client__music_history__tests__map_history.snap new file mode 100644 index 0000000..8ffb946 --- /dev/null +++ b/src/client/snapshots/rustypipe__client__music_history__tests__map_history.snap @@ -0,0 +1,748 @@ +--- +source: src/client/music_history.rs +expression: map_res.c +--- +Paginator( + count: Some(23), + items: [ + TrackItem( + id: "-gBtW4GhF3Y", + name: "O Du fröhliche", + duration: Some(214), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + name: "Helene Fischer", + ), + ], + artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + album: Some(AlbumId( + id: "MPREb_IBxM8XVyrqh", + name: "Weihnachten", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "nsV9bCW3sLM", + name: "Stille Nacht", + duration: Some(264), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + name: "Helene Fischer", + ), + ], + artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + album: Some(AlbumId( + id: "MPREb_IBxM8XVyrqh", + name: "Weihnachten", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "3-oqGxnJTrA", + name: "Ihr Kinderlein kommet", + duration: Some(195), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + name: "Helene Fischer", + ), + ], + artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + album: Some(AlbumId( + id: "MPREb_IBxM8XVyrqh", + name: "Weihnachten", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "xBby89eXe1g", + name: "Tochter Zion", + duration: Some(186), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + name: "Helene Fischer", + ), + ], + artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + album: Some(AlbumId( + id: "MPREb_IBxM8XVyrqh", + name: "Weihnachten", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "ikyIeWgP6i4", + name: "Adeste Fideles", + duration: Some(236), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + name: "Helene Fischer", + ), + ], + artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + album: Some(AlbumId( + id: "MPREb_IBxM8XVyrqh", + name: "Weihnachten", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "u54XYn1nCZ8", + name: "Das Polizeiboot", + duration: Some(187), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/-IzX3AN3btJwzM7YzUtDRu8-40B_qNcQlckN26aHVFNopjA4wiRGLuDfiTPrSx8X-ULA-GdkcbGU57M=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/-IzX3AN3btJwzM7YzUtDRu8-40B_qNcQlckN26aHVFNopjA4wiRGLuDfiTPrSx8X-ULA-GdkcbGU57M=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UC_WzOax81EduoCiIrWQCrTw"), + name: "SpongeBob Schwammkopf", + ), + ], + artist_id: Some("UC_WzOax81EduoCiIrWQCrTw"), + album: Some(AlbumId( + id: "MPREb_M2trHaS2Z39", + name: "Quallendisco", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "acOEjiOH2v8", + name: "We Made It", + duration: Some(212), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/kpuoWhUjjFS0CR_Bz7OY4JSHXIYzbYTa9FWalcXudTAETr1EioLtSa5ua5vNcla0_aAbVjUe0zv-OQxWsw=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/kpuoWhUjjFS0CR_Bz7OY4JSHXIYzbYTa9FWalcXudTAETr1EioLtSa5ua5vNcla0_aAbVjUe0zv-OQxWsw=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCi3H2bHgaTFwrfwx_GOJyZw"), + name: "t-low", + ), + ArtistId( + id: Some("UCrWB2JlLx3-q8CUUiVXgedg"), + name: "Miksu / Macloud", + ), + ], + artist_id: Some("UCi3H2bHgaTFwrfwx_GOJyZw"), + album: Some(AlbumId( + id: "MPREb_fkur1VEwyKR", + name: "Percocet Party", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "Xg5dn6o-mME", + name: "Misfit Toys", + duration: Some(190), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Xg5dn6o-mME/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n1aZ8j7_o-eQbVtcbLCm2KSK2I6A", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: Some("UCr4IKNkUPPmkwE_LAjtho0g"), + name: "Pusha T", + ), + ], + artist_id: Some("UCr4IKNkUPPmkwE_LAjtho0g"), + album: None, + view_count: None, + track_type: episode, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "Smy4qcyPMEc", + name: "Remember Me (Intro)", + duration: Some(101), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCGr1UQ4CwzRMmYoQfHQQWTg"), + name: "d4vd", + ), + ], + artist_id: Some("UCGr1UQ4CwzRMmYoQfHQQWTg"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "cmEIneYW2yk", + name: "Paint The Town Blue (from the series Arcane League of Legends)", + duration: Some(115), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCn3fPGV_gVYAmpgb1APyQug"), + name: "Ashnikko", + ), + ], + artist_id: Some("UCn3fPGV_gVYAmpgb1APyQug"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "HFVM4QE1qBA", + name: "To Ashes and Blood (from the series Arcane League of Legends)", + duration: Some(246), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCqishLHg7u5voH0sEmR-l6Q"), + name: "Woodkid", + ), + ], + artist_id: Some("UCqishLHg7u5voH0sEmR-l6Q"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "O0qHqHt3JiY", + name: "Hellfire (from the series Arcane League of Legends)", + duration: Some(165), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCqRcnDXGwIt_mCXNuzKVqqg"), + name: "Fever 333", + ), + ], + artist_id: Some("UCqRcnDXGwIt_mCXNuzKVqqg"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "rfDBTQNdj-M", + name: "Renegade (We Never Run) (from the series Arcane League of Legends) (feat. Jarina De Marco)", + duration: Some(162), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCm9GDfNgJCv-FJkWTIaiFIg"), + name: "Raja Kumari", + ), + ArtistId( + id: Some("UCfW0_9uspt55KDtOZNPcSFg"), + name: "Stefflon Don", + ), + ], + artist_id: Some("UCm9GDfNgJCv-FJkWTIaiFIg"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "_M409k9cOcg", + name: "특 S-Class", + duration: Some(196), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/MiN4KEyFzPNKECd0md-d4FtMpzbpVChSp_lWmh4w14CTfcLix05BOgS3TD5nQlrllMvp2_6T_e3lIJaD=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/MiN4KEyFzPNKECd0md-d4FtMpzbpVChSp_lWmh4w14CTfcLix05BOgS3TD5nQlrllMvp2_6T_e3lIJaD=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: Some(AlbumId( + id: "MPREb_zR25p24PqIC", + name: "5-STAR", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "MpG_ft84IoE", + name: "Sucker (from the series Arcane League of Legends)", + duration: Some(225), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UC5xpuW4UI520aDhKXGaJYgQ"), + name: "Marcus King", + ), + ], + artist_id: Some("UC5xpuW4UI520aDhKXGaJYgQ"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "g7W7MisCKWk", + name: "I Can\'t Hear It Now (from the series Arcane League of Legends)", + duration: Some(162), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCw5G4AVjJ_YI9BOTjj-v1iw"), + name: "Freya Ridings", + ), + ], + artist_id: Some("UCw5G4AVjJ_YI9BOTjj-v1iw"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "B-XivnZunVM", + name: "Heavy Is The Crown (Original Score)", + duration: Some(102), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCjZCpUyBTuYRQhkYKZR_mdg"), + name: "Mike Shinoda", + ), + ArtistId( + id: Some("UCCDcGPkq3rOACsM5_j5QiHg"), + name: "Emily Armstrong", + ), + ], + artist_id: Some("UCjZCpUyBTuYRQhkYKZR_mdg"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "ZeIneYtQ1rw", + name: "CASE 143", + duration: Some(192), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/gHEirg29K3Qf3JREf5nXADzhEsWvG60jF3qzOBTZ-ZLGRdNp64_lcj-pI5GMrkhy1JPU5EIDE4WgmpU=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/gHEirg29K3Qf3JREf5nXADzhEsWvG60jF3qzOBTZ-ZLGRdNp64_lcj-pI5GMrkhy1JPU5EIDE4WgmpU=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: Some(AlbumId( + id: "MPREb_NuxPbSpDTkj", + name: "MAXIDENT", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "8Go0B7mNcsU", + name: "Railway (방찬) Railway (Bang Chan)", + duration: Some(174), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: Some(AlbumId( + id: "MPREb_hVsLiyk7ZIe", + name: "合 (HOP) HOP", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "of7yhvIadWo", + name: "Walkin On Water (HIP Ver.)", + duration: Some(176), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: Some(AlbumId( + id: "MPREb_hVsLiyk7ZIe", + name: "合 (HOP) HOP", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "iqeY3sz8ldk", + name: "U (feat. TABLO)", + duration: Some(164), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: Some(AlbumId( + id: "MPREb_hVsLiyk7ZIe", + name: "合 (HOP) HOP", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "vRmkqYlH-nA", + name: "Bounce Back", + duration: Some(184), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: Some(AlbumId( + id: "MPREb_hVsLiyk7ZIe", + name: "合 (HOP) HOP", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "ovHoY8UBIu8", + name: "Walkin On Water", + duration: Some(172), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ovHoY8UBIu8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nT3hLBjoOobwzYb9uspvK59B2j7A", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ArtistId( + id: None, + name: "26M views", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + ], + ctoken: None, + endpoint: music_browse, + authenticated: true, +) diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_saved_albums.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_saved_albums.snap new file mode 100644 index 0000000..2caf366 --- /dev/null +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_saved_albums.snap @@ -0,0 +1,63 @@ +--- +source: src/client/pagination.rs +expression: paginator +--- +Paginator( + count: Some(2), + items: [ + AlbumItem( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album_type: album, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_IRSjexVmMMl", + name: "21", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/y6b4yT6dCKEVmzBvATUWodOFLYc81vwxuK0nTgE-scZ3BvyuY9639NL_UyGc6zc_ASoELG67fDUNta0=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/y6b4yT6dCKEVmzBvATUWodOFLYc81vwxuK0nTgE-scZ3BvyuY9639NL_UyGc6zc_ASoELG67fDUNta0=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCRw0x9_EfawqmgDI2IgQLLg"), + name: "Adele", + ), + ], + artist_id: Some("UCRw0x9_EfawqmgDI2IgQLLg"), + album_type: album, + year: None, + by_va: false, + ), + ], + ctoken: None, + endpoint: music_browse, +) diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_saved_artists.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_saved_artists.snap new file mode 100644 index 0000000..1222d61 --- /dev/null +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_saved_artists.snap @@ -0,0 +1,436 @@ +--- +source: src/client/pagination.rs +expression: paginator +--- +Paginator( + count: None, + items: [ + ArtistItem( + id: "UCbUG4bsuazynh4cqGUs4oOA", + name: "Tom Twers", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/BTkzjLKIpmDl6cqtfHtIpJfywBSc7Rl_ttA1Np6gBqnZv1F5wh0bvZ-7DESc55qgBMKX3jjD-SacdMk8xQ=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/BTkzjLKIpmDl6cqtfHtIpJfywBSc7Rl_ttA1Np6gBqnZv1F5wh0bvZ-7DESc55qgBMKX3jjD-SacdMk8xQ=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCAhzIe-pG3XuZzGzoF3X0YA", + name: "KATI K", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/a-/ALV-UjWIQp0M5CuQM_KurfNoyLdT20hSRlTnoNs8x-9LRLVQy2TOKRjr=w60-h60-l90-rj-dcpWWY7KUI", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/a-/ALV-UjWIQp0M5CuQM_KurfNoyLdT20hSRlTnoNs8x-9LRLVQy2TOKRjr=w120-h120-l90-rj-dcpWWY7KUI", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCXJkrGR8Pq2PsrpAKzmGnLA", + name: "TOBIAS", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/MxIerzIwMIzXl-K6VkcJyeZFFZ9CrJOjOEL5kkQescyaLxIhI2sh44GBhnisDifYzHabuKGtQbmRJOJFlQ=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/MxIerzIwMIzXl-K6VkcJyeZFFZ9CrJOjOEL5kkQescyaLxIhI2sh44GBhnisDifYzHabuKGtQbmRJOJFlQ=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCp1Rxq0nIVoeljRfJn8yKbg", + name: "KAYEF", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/p_S4WXz6nJaC6yj7GkVHB3jCMV7at_9kfnAYmE3BfHpcmqUfmdYiA9xqs4tmrHfcjplPMWpy4IXvY9Y=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/p_S4WXz6nJaC6yj7GkVHB3jCMV7at_9kfnAYmE3BfHpcmqUfmdYiA9xqs4tmrHfcjplPMWpy4IXvY9Y=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UC7e8YXFjQLnKmxqRBZ7IwWw", + name: "Monet192", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/W1PqoAb7rcFIVlAdFMRV97gQ42yXnvKnO8M4-RKkiI486MPO7Yfrt-SMRDruclBAMpzK35GF6Gk5RaU=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/W1PqoAb7rcFIVlAdFMRV97gQ42yXnvKnO8M4-RKkiI486MPO7Yfrt-SMRDruclBAMpzK35GF6Gk5RaU=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCCLOqu8H6HeY3iShcAPn-qA", + name: "Mathea", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/yHpC193aCbr41gj0YZXiEjbgqFMuQTByVAORuBHr9bF9SahUy3UlMcIFLUY1Aw2PBCenM2uM50Zqbg=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/yHpC193aCbr41gj0YZXiEjbgqFMuQTByVAORuBHr9bF9SahUy3UlMcIFLUY1Aw2PBCenM2uM50Zqbg=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCDC9A-NGJwoEMyzULQWf4kw", + name: "Pantha", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/SLaGBWrx951kbmc5pPN_Z1x0rjPJP1ViOyMphH0bM1XAXPOBtPAYHnw7qOTThNPy2QL4wWwBGW2Xq2o=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/SLaGBWrx951kbmc5pPN_Z1x0rjPJP1ViOyMphH0bM1XAXPOBtPAYHnw7qOTThNPy2QL4wWwBGW2Xq2o=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCgosMU69MpoCqhuS1JZj6Cw", + name: "Sido", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/HZpnexwxNS5FkIrpz6hdHZuNhBS-GKjs0C9NU8nDSTmHFlPaviqxV-dDLS_ubSEbpEvu0m2P2WT3kaQ=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/HZpnexwxNS5FkIrpz6hdHZuNhBS-GKjs0C9NU8nDSTmHFlPaviqxV-dDLS_ubSEbpEvu0m2P2WT3kaQ=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCK2ZLsY9Mb_dxZiZfKE3lGg", + name: "AnnenMayKantereit", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/UIiP1HBod3H5OsOTyhPZPdfuU5-eslS9Wr8vy8aBphF1g22bk3QNK7O5vX5wjm3iZXQtZc-sYyw3BbM=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/UIiP1HBod3H5OsOTyhPZPdfuU5-eslS9Wr8vy8aBphF1g22bk3QNK7O5vX5wjm3iZXQtZc-sYyw3BbM=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCA-uIWGyE0n9YvJ-titY8zA", + name: "LOTTE", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/l_pq6m1w2cJiBfmK7Vqzv5rYJOrG_4IAaZFmQg4AogonohFXbTVfDTvXcc0h8IBc351ccbZ-QtwDnSU=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/l_pq6m1w2cJiBfmK7Vqzv5rYJOrG_4IAaZFmQg4AogonohFXbTVfDTvXcc0h8IBc351ccbZ-QtwDnSU=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCZwxolUWIeUty9Ru39pKNIw", + name: "Revolverheld", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/cTkCPvR4t9FpuODFJpRYKn1YHq_wfTRIWwRCKZze5snlrC_9DZ6GNFL5P4i4UypIRjFiTqEDiSc3NW0=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/cTkCPvR4t9FpuODFJpRYKn1YHq_wfTRIWwRCKZze5snlrC_9DZ6GNFL5P4i4UypIRjFiTqEDiSc3NW0=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCgM_Xg_Fmud497MdTPA3vTQ", + name: "Civo", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/a-/ALV-UjUxmCuTsP_JsJVV9c8lymt9auPNUk0QA1F1uXi7kA41JH4_O2U=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/a-/ALV-UjUxmCuTsP_JsJVV9c8lymt9auPNUk0QA1F1uXi7kA41JH4_O2U=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UC47yhBXrBIM5glZahA2nHqA", + name: "ENNIO", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/QXs3QaafSYpgbZtO-HHuiGJUq9Q66l6r3TwrKxantR1JNGV9rLNyoL75D6U7C1ctPHruYrGtOn0AXQzh=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/QXs3QaafSYpgbZtO-HHuiGJUq9Q66l6r3TwrKxantR1JNGV9rLNyoL75D6U7C1ctPHruYrGtOn0AXQzh=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCtKjWSYT3K5Kapp8ijffdqg", + name: "Esther Graf", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/IJuCGSYAWOqH5n6YnQ3SnyKelJklN3zfowm7Av9tKEXwWuBQ326HPhURvqXO5vDV9dHaWfBu-J_8aZM=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/IJuCGSYAWOqH5n6YnQ3SnyKelJklN3zfowm7Av9tKEXwWuBQ326HPhURvqXO5vDV9dHaWfBu-J_8aZM=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UC4OHFyfFMFfJAVDwPhgWPQg", + name: "AYLIVA", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/a-/ALV-UjVX1hMbTYzmBtTWYR728KdQ3H-_Q8FUWFzpW6YT7wajtbyHBz0=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/a-/ALV-UjVX1hMbTYzmBtTWYR728KdQ3H-_Q8FUWFzpW6YT7wajtbyHBz0=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCKvQnv9ldMbsIQcv1nEd8hw", + name: "TeeageBeatz", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/msZATojvcifqpwJYwA3OhiCqGx3bEQ3QT3c22myd8vtCOwNRE3XTc4vhYVaOUA4_E5xL3ZaXCtjDX_4=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/msZATojvcifqpwJYwA3OhiCqGx3bEQ3QT3c22myd8vtCOwNRE3XTc4vhYVaOUA4_E5xL3ZaXCtjDX_4=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UC6w-5zGi-f14mEqaZ1ELNSg", + name: "H1", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/zoiAmwuTz4s9G852ylrpFP83yPFvmAM0QkQO1SlvYS4RSBifC2pzSJ6kOomFW6VhgDrbNC3KAEmbH9k=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/zoiAmwuTz4s9G852ylrpFP83yPFvmAM0QkQO1SlvYS4RSBifC2pzSJ6kOomFW6VhgDrbNC3KAEmbH9k=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCBNkQnYHkB48rIsYc2E05KA", + name: "Emilio", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/aLlAoBcb_LgKaj6FowCIpnAXp6UWtSya1mHNQSBTheXi_yy-TrWi6cULoF5j1yyJfHKDzkpWontLz_bP=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/aLlAoBcb_LgKaj6FowCIpnAXp6UWtSya1mHNQSBTheXi_yy-TrWi6cULoF5j1yyJfHKDzkpWontLz_bP=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCe84h-P4fPif21lyK5vLcww", + name: "Georg Stengel", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/C7QW5VlGgogqLMT2idOC5DG4FVITp9Twfakxp30jw0Q3oFoGMRh-uzvilDy8VwmvSl9YxRIMhwxtrQP8=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/C7QW5VlGgogqLMT2idOC5DG4FVITp9Twfakxp30jw0Q3oFoGMRh-uzvilDy8VwmvSl9YxRIMhwxtrQP8=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UC4olRzWJj1o2mgbyTBmeaBw", + name: "Gregor Hägele", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/4srE8F_wmdCpoSLTtp2Tz2uBWA6bEqRwx4aVbbyhMrqJXuU8XD0An1vcntKZT2YvVy1aXU064iqGRZZb=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/4srE8F_wmdCpoSLTtp2Tz2uBWA6bEqRwx4aVbbyhMrqJXuU8XD0An1vcntKZT2YvVy1aXU064iqGRZZb=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCvxPDEZ_Mn0UVKgGrQ-4ZFQ", + name: "DUEJA", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/ShIWzUmvGOdfHZINYLVaZ0MsGLQJx0BIjVNY7Ao_GQIkYmWmWVlWoxV4MDrFRB-QR3GN7vvDcRC0Ug=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/ShIWzUmvGOdfHZINYLVaZ0MsGLQJx0BIjVNY7Ao_GQIkYmWmWVlWoxV4MDrFRB-QR3GN7vvDcRC0Ug=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCxO_-oK9EPp4hXj42aY1aVQ", + name: "Julia Meladin", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/WXPOsPYwCCFA-sMCmV7gXlJqSUrR70odOeHbYt9ACCLXWsU8lhPcFDRd8qtFnD7rqUZ9x5aHjcfazNQ=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/WXPOsPYwCCFA-sMCmV7gXlJqSUrR70odOeHbYt9ACCLXWsU8lhPcFDRd8qtFnD7rqUZ9x5aHjcfazNQ=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UClWYTAbTNH9p80shT8yPHqg", + name: "Alexander Eder", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/WCv6cD-rwjI2gYRwYjAskLaNK0kVJgzypcLOV-7nSfPwwYCzruldKpcnGDRbz8UQm6XzLx6MZqPor80=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/WCv6cD-rwjI2gYRwYjAskLaNK0kVJgzypcLOV-7nSfPwwYCzruldKpcnGDRbz8UQm6XzLx6MZqPor80=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCE7_p3lcXA-YXRZp2PjrgYw", + name: "Helene Fischer", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/mwiYuHAa4o3m8FELdQ1PTIXzXo3F34BR5QBIIVdpqbWGjRriygOZ7yTSg5v40W-gZvxLry0nrwmAkw=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/mwiYuHAa4o3m8FELdQ1PTIXzXo3F34BR5QBIIVdpqbWGjRriygOZ7yTSg5v40W-gZvxLry0nrwmAkw=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ArtistItem( + id: "UCLnMizH28AmXN6mqbAKwfgQ", + name: "Marina Marx", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/Zbq4nSO176iOzElPCIU3jfjhS5ybKugXrODxWTZIEyzDcLquFUeS-aFDTc_r3xBP1rwYwZbW9-rBJFqv=w60-h60-p-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/Zbq4nSO176iOzElPCIU3jfjhS5ybKugXrODxWTZIEyzDcLquFUeS-aFDTc_r3xBP1rwYwZbW9-rBJFqv=w120-h120-p-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: None, + ), + ], + ctoken: Some("4qmFsgJiEh5GRW11c2ljX2xpYnJhcnlfY29ycHVzX2FydGlzdHMaQENCbDZJME5vWjB0R1FXOUZRMEZCVVVGU1NVMURUM3BHYjNKelIwVk5RMjU2Y1ZWRVIwRkJnZ01HS2dRSUFCQUI%3D"), + endpoint: music_browse, +) diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_saved_playlists.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_saved_playlists.snap new file mode 100644 index 0000000..678094a --- /dev/null +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_saved_playlists.snap @@ -0,0 +1,71 @@ +--- +source: src/client/pagination.rs +expression: paginator +--- +Paginator( + count: Some(3), + items: [ + MusicPlaylistItem( + id: "LM", + name: "Liked Music", + thumbnail: [ + Thumbnail( + url: "https://www.gstatic.com/youtube/media/ytm/images/pbg/liked-music-@192.png", + width: 192, + height: 192, + ), + Thumbnail( + url: "https://www.gstatic.com/youtube/media/ytm/images/pbg/liked-music-@576.png", + width: 576, + height: 576, + ), + ], + channel: None, + track_count: None, + from_ytm: true, + is_podcast: false, + ), + MusicPlaylistItem( + id: "RDCLAK5uy_k8X5cgTG2AnXbnkwEV7uQFptEKvSRmkjU", + name: "Lautstark: German Indie & Rock Hits", + thumbnail: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/NTyTuhySZTQhdmlh19HQBI7hg_PtS1bLATodAepPXjyF1et8SXiqLtJxmVRszGdpXOwkQSIUsMOWgSo=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/NTyTuhySZTQhdmlh19HQBI7hg_PtS1bLATodAepPXjyF1et8SXiqLtJxmVRszGdpXOwkQSIUsMOWgSo=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + channel: None, + track_count: None, + from_ytm: false, + is_podcast: false, + ), + MusicPlaylistItem( + id: "SE", + name: "Episodes for Later", + thumbnail: [ + Thumbnail( + url: "https://www.gstatic.com/youtube/media/ytm/images/pbg/saved-episodes-@192.png", + width: 192, + height: 192, + ), + Thumbnail( + url: "https://www.gstatic.com/youtube/media/ytm/images/pbg/saved-episodes-@576.png", + width: 576, + height: 576, + ), + ], + channel: None, + track_count: None, + from_ytm: true, + is_podcast: false, + ), + ], + ctoken: None, + endpoint: music_browse, +) diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_saved_tracks.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_saved_tracks.snap new file mode 100644 index 0000000..65aea83 --- /dev/null +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_saved_tracks.snap @@ -0,0 +1,811 @@ +--- +source: src/client/pagination.rs +expression: paginator +--- +Paginator( + count: None, + items: [ + TrackItem( + id: "02UC3iagcJQ", + name: "Brüder, lasst uns gehen (Instrumental)", + duration: Some(148), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "0uSu-jHdDd4", + name: "Westwind", + duration: Some(188), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "11pkE_azpBQ", + name: "Leave her, Johnny (feat. The O\'Reillys and the Paddyhats)", + duration: Some(173), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "1tJPy7XlfCQ", + name: "Felsenfest", + duration: Some(180), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "2JpUBTLjfPA", + name: "Dreht sich der Wind (Instrumental)", + duration: Some(178), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "6WiuMIp9B6Y", + name: "Westwind (Instrumental)", + duration: Some(189), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "8nfNNAlsTTA", + name: "My Love\'s in Germany (Instrumental)", + duration: Some(195), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "C1U6oXpz4As", + name: "Wein & Wahrheit", + duration: Some(190), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "DvKw0jTUN-s", + name: "Teufelsgeiger", + duration: Some(206), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "GDSVX--bsRU", + name: "Korobeiniki\u{a0}\u{a0}\u{a0}\u{a0}\u{a0}\u{a0}", + duration: Some(174), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "I-ArzgPbNx8", + name: "Merseburger Zauberspruch (feat. Luc Arbogast)", + duration: Some(225), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "OElgvIuT8TY", + name: "Trink mein Freund", + duration: Some(172), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "RGlOEBJyhrc", + name: "Drei schwarze Reiter (Instrumental)", + duration: Some(189), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "UUCM1WR611g", + name: "Tanz in den Mai", + duration: Some(199), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "WlzrZsEtWbs", + name: "Tanz in den Mai (Instrumental)", + duration: Some(199), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "apY7iYoYtD8", + name: "Dreht sich der Wind", + duration: Some(177), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "azSEPwrxG2c", + name: "Bella Ciao (Versione italiana - Instrumental)", + duration: Some(188), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "b9FNHTk-tAM", + name: "Merseburger Zauberspruch (Instrumental)", + duration: Some(224), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "eAeGr78VYxM", + name: "Auld Lang Syne\u{a0}\u{a0}\u{a0}\u{a0} (Instrumental)", + duration: Some(175), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "efCzrXOWM0Q", + name: "Freiheit & Tod\u{a0}", + duration: Some(195), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "fbmHQLiF1qs", + name: "Vino griego", + duration: Some(209), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "h0qhAXLom-Y", + name: "C\'est la vie (English Version - Instrumental)", + duration: Some(198), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "hTL2vAvAbNM", + name: "Teufelsgeiger (Instrumental)", + duration: Some(206), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "hptOG4EVgMs", + name: "Wein & Wahrheit (Instrumental)", + duration: Some(190), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "iRIlHsC8xL8", + name: "Pulverdampf & Donnergroll\'n", + duration: Some(202), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + name: "dArtagnan", + ), + ], + artist_id: Some("UCWOw75Vmryv3D_WdzE2DbKA"), + album: Some(AlbumId( + id: "MPREb_yYq4IkZhG9j", + name: "Felsenfest", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + ], + ctoken: Some("4qmFsgJcEhRGRW11c2ljX2xpa2VkX3ZpZGVvcxpEQ0JwNkprTkNhMUZIVW05SlEwRkZVVUZvYjBOYVZ6UnBSRUZxWXpsaVF6ZENhRU4yT1ZwdFRVRjNnZ01HS2dRSUFCQUI%3D"), + endpoint: music_browse, +) diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_subscriptions.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_subscriptions.snap new file mode 100644 index 0000000..1140359 --- /dev/null +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_subscriptions.snap @@ -0,0 +1,1751 @@ +--- +source: src/client/pagination.rs +expression: paginator +--- +Paginator( + count: Some(87), + items: [ + ChannelItem( + id: "UCpOlOeQjj7EsVnDh3zuCgsA", + name: "Adafruit Industries", + handle: Some("@adafruit"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(454000), + short_description: "Adafruit was founded in 2005 by MIT engineer, Limor \"Ladyada\" Fried. Her goal was to create the best place online for learning electronics and making the best designed products for makers of all ages and skill levels. In the last 10 years, Adafruit has grown to over 100+ employees in the heart of NYC with a 50,000+ sq ft. factory. Adafruit has expanded offerings to include tools, equipment, and electronics that Limor personally selects, tests, and approves before going in to the Adafruit store. Adafruit is a 100% woman owned manufacturing company, a certified Minority and Woman-owned Business Enterprise (M/WBE), a certified Women’s Business Enterprise (WBE), and WOSB.\n\nDuring the COVID-19 outbreak Adafruit Industries is operating as an essential service and manufacturing business: NYC – Executive Order 202.6 making PPE and medical device components. In 2020 Adafruit was appointed to the Small Business Sector Advisory Council by the City of New York.\n", + ), + ChannelItem( + id: "UCSRCm4zHuETCS7jHWMiWNog", + name: "Adel Tawil", + handle: Some("@adeltawil"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/gP4biZPhz7HcfAs2QH5PEumEOkCAToYuFuWrt-xVSO205o51I8vVMPwMANhVWHcFw3WXZAHT=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/gP4biZPhz7HcfAs2QH5PEumEOkCAToYuFuWrt-xVSO205o51I8vVMPwMANhVWHcFw3WXZAHT=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(576000), + short_description: "This is the official YouTube Channel of Adel Tawil. ", + ), + ChannelItem( + id: "UCsRM0YB_dabtEPGPTKo-gcw", + name: "Adele", + handle: Some("@adele"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/YuRHl_4murHobFsrHDkpJANVHzXYTgP68zysfrsNPIRMr8fKSzEP_4y6cFeE5WfpWOdxVH4sO-8=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/YuRHl_4murHobFsrHDkpJANVHzXYTgP68zysfrsNPIRMr8fKSzEP_4y6cFeE5WfpWOdxVH4sO-8=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(32000000), + short_description: "The official YouTube channel of ADELE.", + ), + ChannelItem( + id: "UC9GtSLeksfK4yuJ_g1lgQbg", + name: "aespa", + handle: Some("@aespa"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/6CGtw27YRSZesaZSxp2fpT_KhH_Px_OOTWSq4igylqyibV1xpIZeazWBtepjhw1qeUkXDOVF=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/6CGtw27YRSZesaZSxp2fpT_KhH_Px_OOTWSq4igylqyibV1xpIZeazWBtepjhw1qeUkXDOVF=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(6770000), + short_description: "aespa 에스파 The 5th Mini Album 〖Whiplash〗\n\nWelcome to aespa Official YouTube Channel!\nYou can enjoy aespa\'s latest videos on aespa Official YouTube Channel.\n", + ), + ChannelItem( + id: "UC_1HVMnw-610qx54iEiWk7A", + name: "akidearest", + handle: Some("@akidearest"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_ktld7JEURejIWXjEKhRjbiZGxX3TKPnRLUB5lbtltJvek=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_ktld7JEURejIWXjEKhRjbiZGxX3TKPnRLUB5lbtltJvek=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(2860000), + short_description: "\n\nFor Business Inquiries or Conventions, please email me: akidearest.business@gmail.com", + ), + ChannelItem( + id: "UCxAS_aK7sS2x_bqnlJHDSHw", + name: "America\'s Test Kitchen", + handle: Some("@AmericasTestKitchen"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/6pPZQkBWoQ-UAu5sT-Z47ID6vhPr-nnfziSpR84unn9vsDUzz5_iNS3WkuXSdKUKhkVGQerE=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/6pPZQkBWoQ-UAu5sT-Z47ID6vhPr-nnfziSpR84unn9vsDUzz5_iNS3WkuXSdKUKhkVGQerE=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(2500000), + short_description: "The mission of America’s Test Kitchen (ATK) is to empower and inspire confidence, community, and creativity in the kitchen. Founded in 1992, the company is the leading multimedia cooking resource serving millions of fans with TV shows (America’s Test Kitchen, Cook\'s Country, and America’s Test Kitchen: The Next Generation), magazines (Cook’s Illustrated and Cook’s Country), cookbooks, a podcast (Proof), FAST channels, short-form video series, and the ATK All-Access subscription for digital content. Based in a state-of-the-art 15,000-square-foot test kitchen in Boston’s Seaport District, ATK has earned the trust of home cooks and culinary experts alike thanks to its one-of-a-kind processes and best-in-class techniques. Fifty full-time (admittedly very meticulous) test cooks, editors, and product testers spend their days tweaking every variable to find the very best recipes, equipment, ingredients, and techniques. Learn more at https://www.americastestkitchen.com/.\n", + ), + ChannelItem( + id: "UCn4NWJa3ZCVolXXUO7AZ_Zw", + name: "Andreas Bourani", + handle: Some("@andreasbourani"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_nMl-wh8tx00hvGxYTRs83SnjSZXqbAjC4mO8SEbYVVgpU=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_nMl-wh8tx00hvGxYTRs83SnjSZXqbAjC4mO8SEbYVVgpU=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(49000), + short_description: "Der offizielle Andreas Bourani YouTube Kanal\n\n☆ Ich bin eine Idee", + ), + ChannelItem( + id: "UCBL7ZxVX4GvW4CFiES_-0YA", + name: "Anne-Marie", + handle: Some("@annemarie"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/KRCIz_ERiPPmVzl6AQygt0QLhY3l92AUM3fGlnZ3LCN6uMT2HGRyO36vXvGMns65cchWTbuO=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/KRCIz_ERiPPmVzl6AQygt0QLhY3l92AUM3fGlnZ3LCN6uMT2HGRyO36vXvGMns65cchWTbuO=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(11500000), + short_description: "Anne-Marie has proved to be one of the UK’s most exciting and successful British breakthrough popstars of recent years. A former 3x world karate champion and West End child star-turned 9x BRIT Award nominee, A-M’s rise has been nothing short of meteoric. In 2018 Anne-Marie released her debut album, ‘Speak Your Mind’ which featured the hit singles \'Alarm\', \'Ciao Adios\', \'Heavy\', \'Friends\', \'2002\' and \'Perfect to Me\'. She subsequently ended that year as as the UK’s biggest-selling debut artist, selling out headline shows and playing stadium dates supporting long-time friend and champion Ed Sheeran in the process.\n\nShe has also sang on and co-written many other hits such as Birthday, Rockabye, Don\'t Leave Me Alone, To Be Young, f*ck, i\'m lonely and Don\'t Play, collaborating with the likes of Clean Bandit, Marshmello, David Guetta, Lauv, Rudimental, Doja Cat and KSI, as well as starring on The Greatest Showman: Reimagined soundtrack performing Rewrite the stars alongside James Arthur.\n", + ), + ChannelItem( + id: "UCoGJ6tHb493zmR2yZaPszcQ", + name: "Au/Ra", + handle: Some("@HeyItsAuRa"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_mHye5peDSnqTLakApIUK14vGbYV8mVeA5XfkE0lWNinbY=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_mHye5peDSnqTLakApIUK14vGbYV8mVeA5XfkE0lWNinbY=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(568000), + short_description: "A dork who writes songs and sometimes makes things you can watch. ^_–✩", + ), + ChannelItem( + id: "UChWv6Pn_zP0rI6lgGt3MyfA", + name: "AvE", + handle: Some("@arduinoversusevil2025"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: none, + subscriber_count: Some(1440000), + short_description: "Err\nand err\nand err again\nbut less\nand less\nand less.\n\n-Piet Hein\n\n\n", + ), + ChannelItem( + id: "UCrj6DZ5z6dyAvJadLRcM7vA", + name: "bartlebeats - Topic", + handle: None, + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/o5aoJHWhJa7GNje1lx_9j3n6p7ak7Mj_dmQhPE-56DpOv2MRtlgeKZnOMAi0MBnYVLDDj9w9yg=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/o5aoJHWhJa7GNje1lx_9j3n6p7ak7Mj_dmQhPE-56DpOv2MRtlgeKZnOMAi0MBnYVLDDj9w9yg=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: none, + subscriber_count: Some(70), + short_description: "", + ), + ChannelItem( + id: "UCJl-cGDSoGlB86vB_3scwAQ", + name: "bausashaus", + handle: Some("@BausashausDe"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/in43p8oqmcxvsiLuIj3hJZwU-ToArJZg-jdzfF534h5hmKNHO7e2JPN_r7g0y2Fp2xSJ_HnOrN0=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/in43p8oqmcxvsiLuIj3hJZwU-ToArJZg-jdzfF534h5hmKNHO7e2JPN_r7g0y2Fp2xSJ_HnOrN0=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(579000), + short_description: "Willkommen im offiziellen Channel von BAUSA!", + ), + ChannelItem( + id: "UCtOcDBKgyr-f50SgbMErFkQ", + name: "BINI Official", + handle: Some("@BINIPH"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/JUvHJvdoccdG9aX_h9gOovEoMOT9gDquwjWpN_zEwv75ENRJns35kLZuUsr-Ft3oXdh8ciG6TQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/JUvHJvdoccdG9aX_h9gOovEoMOT9gDquwjWpN_zEwv75ENRJns35kLZuUsr-Ft3oXdh8ciG6TQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(2730000), + short_description: "BINI is an 8-member girl group composed of young, modern Filipinas who aspire to share their talent & passion with the world.\n\nIf you like our videos, don\'t forget to subscribe to our channel - http://bit.ly/BINIPH\n\nConnect, follow, and have a conversation with us on our social media accounts:\nFacebook: https://www.fb.com/biniph.official\nInstagram: https://www.instagram.com/bini_ph/\nTwitter: https://www.twitter.com/bini_ph\nTiktok: https://www.tiktok.com/@bini_ph\nKumu: bini_ph\n", + ), + ChannelItem( + id: "UCOmHUn--16B90oW2L6FRR3A", + name: "BLACKPINK", + handle: Some("@BLACKPINK"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/U3VrCkKjzTpQ3VYv4SCPjNfDHeJV-swGNnhLYhr0nV4lZz_GVUNzK4EB-HFRfKv9S5VNh14uAg=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/U3VrCkKjzTpQ3VYv4SCPjNfDHeJV-swGNnhLYhr0nV4lZz_GVUNzK4EB-HFRfKv9S5VNh14uAg=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(95400000), + short_description: "BLACKPINK Official YouTube Channel\n블랙핑크 공식 유튜브 채널입니다.\n\nJISOO, JENNIE, ROSÉ, LISA\n지수, 제니, 로제, 리사", + ), + ChannelItem( + id: "UCtHoTrH0GgJ9fBrzmTqk7Pg", + name: "CARYS", + handle: Some("@CARYSOfficial"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/CJjKNo35VgpL1-uM2-6fkzrf608yKIzbfBxC4wLcrvii-n8oLBri69PkjEswoMlcRoLvoDsLug=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/CJjKNo35VgpL1-uM2-6fkzrf608yKIzbfBxC4wLcrvii-n8oLBri69PkjEswoMlcRoLvoDsLug=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(307000), + short_description: "Official YouTube channel of CARYS.\n\nLinktree: https://linktr.ee/xcarysx\n\nConnect with CARYS: \nSubscribe on YouTube: https://www.youtube.com/carysofficial?sub_confirmation=1\nGaming Youtube Channel: https://www.youtube.com/channel/UCu9vHZwJWpfoDozFDjMW9fg\nWebsite: https://www.carysofficial.com/\nInstagram: https://www.instagram.com/carysofficial/ \nFacebook: https://www.facebook.com/carysofficial/ \nTwitter: https://twitter.com/carysofficial\nTikTok: https://www.tiktok.com/@carysofficial\n\n", + ), + ChannelItem( + id: "UCOvEMf00DnwdkpOCRWdc6uA", + name: "Charli xcx", + handle: Some("@officialcharlixcx"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ct7MWGDuGe3sko82M14qN6eOH7fW5wLh2xxBhnTiDMzVELeKHtCz8gJ_HA_GpxwlwDE2v13rPg=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ct7MWGDuGe3sko82M14qN6eOH7fW5wLh2xxBhnTiDMzVELeKHtCz8gJ_HA_GpxwlwDE2v13rPg=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(3490000), + short_description: "The official YouTube Channel of Charli xcx\n\nCharli xcx is an iconic figure in the arts, having helped expand the landscape of popular music over the last decade by seamlessly traversing the underground and the mainstream with her artistic output. A singer, songwriter, documentary maker, radio host and record label boss, Charli’s story is one of an artist who continues to succeed without compromise, earning critical acclaim for her forward-thinking music style and entrepreneurial spirit.\n\nHer incredible catalogue includes the studio albums True Romance, SUCKER, Charli, how i\'m feeling now, CRASH, and BRAT. These have spawned hit singles such as Boom Clap, Break The Rules, Doing It, After The Afterparty, 1999, Blame It On Your Love , Gone, Good Ones and has seen Charli collaborate with global superstars such as BTS, Lizzo, Troye Sivan and HAIM as well as future game changers such as Kim Petras, Christine and the Queens, Yaeji and Clairo.\n", + ), + ChannelItem( + id: "UCpvCJWgUNwZArGtJ00kDS1A", + name: "CHASE ATLANTIC", + handle: Some("@chaseatlantic"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/f9FCKd7XMHVUQ_zxhspIwoyUCEk986YiXm-0NuvmGeD3oD-9uRM91_rOvn1HGVptCQklWvUfB1U=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/f9FCKd7XMHVUQ_zxhspIwoyUCEk986YiXm-0NuvmGeD3oD-9uRM91_rOvn1HGVptCQklWvUfB1U=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(2460000), + short_description: "LOST IN HEAVEN OUT NOW", + ), + ChannelItem( + id: "UChCWmgEgUXwS5QEZZ-iWN-Q", + name: "Cheat Codes", + handle: Some("@CheatCodes"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/m8NTmy6jGdmct02X6EM3Lf_Q5uSzF4BkXn-5IJ5q7pWuHX-28HemhElO3ynyHQm60OzYT90M=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/m8NTmy6jGdmct02X6EM3Lf_Q5uSzF4BkXn-5IJ5q7pWuHX-28HemhElO3ynyHQm60OzYT90M=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(753000), + short_description: "TYSM 🗡\u{fe0f} w/ @salemilese out 11/22 🖤\n", + ), + ChannelItem( + id: "UCz1mQ-4_wui83UfT3ylqmpw", + name: "CRO", + handle: Some("@cro"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/X8cpJTOX9am0tmIlD6dwsiqQV6uwlNlRgX6R7WzIpkf688EbjD6lFfkPtAkCyGIQjgumIvYXJQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/X8cpJTOX9am0tmIlD6dwsiqQV6uwlNlRgX6R7WzIpkf688EbjD6lFfkPtAkCyGIQjgumIvYXJQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(561000), + short_description: "Offizieller YouTube-Kanal von CRO\n\nKanal abonnieren: http://bit.ly/CroYouTube\n\nCheck CRO im Netz:\n►TikTok: https://cromusik.lnk.to/socialsAY/tiktok\n►Instagram: https://cromusik.lnk.to/socialsAY/instagram\n►Facebook: https://cromusik.lnk.to/socialsAY/facebook\n►X: https://cromusik.lnk.to/socialsAY/twitter\n► 🤖: https://t.me/r2dcro_bot", + ), + ChannelItem( + id: "UC_x8HoD18XJkILQBreVENUQ", + name: "DJ Snake", + handle: Some("@DJSnake"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/uTXyQUSez8rz1TYr6F_S6o8x-4lebrWy_ioSR7R9m_OhpXvpSnwiZb4ritKWkP_9uBNkFgvJbQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/uTXyQUSez8rz1TYr6F_S6o8x-4lebrWy_ioSR7R9m_OhpXvpSnwiZb4ritKWkP_9uBNkFgvJbQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(24600000), + short_description: "Official YouTube Channel of DJ Snake. \n\nOfficial Store: https://djsnake.store/\n\nFollow DJ Snake\nWebsite: http://djsnake.com/ \nInstagram: http://www.instagram.com/djsnake\nTiktok: https://www.tiktok.com/@djsnake\nFacebook: http://www.facebook.com/djsnake.fr\nTwitter: http://www.twitter.com/djsnake\nSoundcloud: http://www.soundcloud.com/djsnake", + ), + ChannelItem( + id: "UC0C-w0YjGpqDXGB8IHb662A", + name: "Ed Sheeran", + handle: Some("@EdSheeran"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/emA0C_i9tUyJgxrfVpJ31e0QCU2MlovjYvQkAC9mDuSJyhl6h8PkFj5-ozRzz2vFtpbnls8s1W4=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/emA0C_i9tUyJgxrfVpJ31e0QCU2MlovjYvQkAC9mDuSJyhl6h8PkFj5-ozRzz2vFtpbnls8s1W4=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(55600000), + short_description: "Ed Sheeran x\n\n+-=÷× (Tour Collection: Live) | 27th Dec - Pre-order now\n", + ), + ChannelItem( + id: "UC7VSImgZ4Ar_eIxLMMR9S9w", + name: "Emiliana Torrini", + handle: Some("@EmilianaTorrini1"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/FybHfKRd27YCtT3qrcwPR3KeNKhMq56CnTlGfQHG_yt2Hvdq-pvCqjgvHLMeLRnt3oAqyddnlQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/FybHfKRd27YCtT3qrcwPR3KeNKhMq56CnTlGfQHG_yt2Hvdq-pvCqjgvHLMeLRnt3oAqyddnlQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(23900), + short_description: "Emilíana\'s Official Youtube Channel", + ), + ChannelItem( + id: "UCFeqAfEuKm7lIg2ddQzh61A", + name: "Emirichu", + handle: Some("@Emirichu"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/7n_8uX4SlhW8lOmV1GjnOg70WnT5fOipvILzN8BA-fzAtsNZyUVCSBwSN8XHRd1PPinE6GdL=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/7n_8uX4SlhW8lOmV1GjnOg70WnT5fOipvILzN8BA-fzAtsNZyUVCSBwSN8XHRd1PPinE6GdL=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(3500000), + short_description: "Hi, I like drawing and I\'m using this channel to be more active with my hobby.\nI\'m not an animator. (I occasionally make animatics, but those arent the same as animations.)\n\nThanks for stopping by!~ I don\'t really know what I\'m doing but I\'m trying. \n\nMerch!: https://emirichu.store/\nInstagram: https://www.instagram.com/emirichuu/\nTwitter: https://twitter.com/EmirichuYT\n\nBusiness Inquiries: emirichu@geexplus.co.jp", + ), + ChannelItem( + id: "UC3eP48LEsxo4moTFYrOrG9A", + name: "FiNCH", + handle: Some("@FiNCHOFFiCiAL"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(531000), + short_description: "Offizieller YouTube Account von FiNCH\nFiNCH Kanal abonnieren: https://ytb.li/Finch\nFiNCH auf Social Media folgen: https://www.instagram.com/finch\n\n\n", + ), + ChannelItem( + id: "UCRLR2Jo3YiRwwTp0eWdG8nA", + name: "FOURTY", + handle: Some("@fourty6748"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/xAzcB2ZsuLeLTP9-lHvVWzVe01DhMMH8r9xH-3vHd_11GfQAaG0_Hd5Ek6vUJSBq7_qLBVdjFQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/xAzcB2ZsuLeLTP9-lHvVWzVe01DhMMH8r9xH-3vHd_11GfQAaG0_Hd5Ek6vUJSBq7_qLBVdjFQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(12400), + short_description: "", + ), + ChannelItem( + id: "UC9Kl5Xy-kDY_z9CD9epW63g", + name: "HE/RO", + handle: Some("@YouAreHero"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/cJrddNdqCNkj9No1bG_9zOYjs9nRitBTaGw_69P6dgKIAZa6JpDgFEA-P0EN5JCF-j8VfxYHJA=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/cJrddNdqCNkj9No1bG_9zOYjs9nRitBTaGw_69P6dgKIAZa6JpDgFEA-P0EN5JCF-j8VfxYHJA=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(299000), + short_description: "YOU ARE HE/RO. \n\n\n\n", + ), + ChannelItem( + id: "UCn3yU2bHX_8HMCfXOBTkXCg", + name: "Helene Fischer (Official)", + handle: Some("@helenefischer"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/CHqviE7of-sFlBxamsxFId6RHNEV_p-DMQJvC-bfdFtEXNYxpi-D7BF74nhm46RXEZjbhbAHJg=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/CHqviE7of-sFlBxamsxFId6RHNEV_p-DMQJvC-bfdFtEXNYxpi-D7BF74nhm46RXEZjbhbAHJg=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(1090000), + short_description: "Der offizielle Helene Fischer YouTube Channel\n\n#helenefischer | Mehr Infos: https://www.helene-fischer.de\n\nKanal abonnieren http://bitly.com/HeleneFischerOfficial", + ), + ChannelItem( + id: "UCT9zcQNlyht7fRlcjmflRSA", + name: "ImagineDragons", + handle: Some("@ImagineDragons"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/1DTGWKanZjHTM_N9ieyxm2np0Dtk7gTDOXBKHuGlMEbvgmi5Mv-A47rJApN1dRBC_JEyXazBkQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/1DTGWKanZjHTM_N9ieyxm2np0Dtk7gTDOXBKHuGlMEbvgmi5Mv-A47rJApN1dRBC_JEyXazBkQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(32300000), + short_description: "LOOM. our sixth studio album. Listen and purchase now: https://imaginedragons.lnk.to/loom \nShop LOOM merch & music products: https://imaginedragons.lnk.to/loomstore \nGet the target exclusive orange vinyl: https://imaginedragons.lnk.to/loom/target \nGet the walmart exclusive pink vinyl: https://imaginedragons.lnk.to/loom/walmart \nGet the indie exclusive curacao vinyl: https://imaginedragons.lnk.to/LOOM/recordstoreday\n", + ), + ChannelItem( + id: "UC-Fnix71vRP64WXeo0ikd0Q", + name: "IVE", + handle: Some("@IVEstarship"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/Fg5o4LNedtb4kLRjRZ2waWSG_xnAU-IvdO8_HyNGoxC7a1OPYwDFkxFLjpDmb35dPgdhkaYGoVE=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/Fg5o4LNedtb4kLRjRZ2waWSG_xnAU-IvdO8_HyNGoxC7a1OPYwDFkxFLjpDmb35dPgdhkaYGoVE=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(3940000), + short_description: "아이브(IVE) Official Youtube Channel\n아이브(IVE) 공식 유튜브 채널\n", + ), + ChannelItem( + id: "UCWFKCr40YwOZQx8FHU_ZqqQ", + name: "JerryRigEverything", + handle: Some("@JerryRigEverything"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_lgA3xMKNY0-d05dSmj3zt7CeTS1QSS5jVgOWqD03VsSm4=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_lgA3xMKNY0-d05dSmj3zt7CeTS1QSS5jVgOWqD03VsSm4=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(9040000), + short_description: "I review technology from the inside. \nEcoFlow Global Ambassador.\nAnker is the Official Charging Partner of JerryRigEverything!\n\nI review technology from the inside. \n\nSEND ME STUFF: \n125 E Main St. Suite 335\nAmerican Fork, Ut. \n84003\n\nANYTHING SENT TO THE ABOVE ADDRESS will not be returned. \nContact: JerryRigEverything at gmail dot com\n\nVideos are for Entertainment Purposes only. Attempt any repairs at your own risk. \n\nJerryRigEverything is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to amazon.com.\n", + ), + ChannelItem( + id: "UCVZlxkKqlvVqzRJXhAGq42Q", + name: "JoergSprave", + handle: Some("@Slingshotchannel"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_kKQv93ELRWu1XsqlnRBDswoC56a8lQEbBWtQrbJR02w18=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_kKQv93ELRWu1XsqlnRBDswoC56a8lQEbBWtQrbJR02w18=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(3070000), + short_description: "This channel is all about launchers. \n\nMost of them are powered by rubber, a fascinating material that converts muscle energy into kinetic energy! But we also present bladed weapons and launchers powered by other energy sources. \n\nInventions, reviews, stunts and destruction - if that is what you want, you came to the right place for sure!\n\nI am also the CEO and part owner of the GoGun GmbH, a distributor and online sales organization specialized in archery equipment, airguns and knives. Therefore all my videos are marked as \"Werbung\" (advertizement) throughout the whole runtime. \n\nLegal Disclosure\nInformation in accordance with Section 5 TMG and § 55 section 2 RStV\nJörg Sprave\nc/o GoGun GmbH\nKrablerstraße 127/Hall 9 \n45326 Essen\nGermany\n\nContact Information\nTelephone: 015156342943\nemail: jsprave@macrosystem.de\nVAT identification number in accordance with Section 27 a of the German VAT act DE305798007", + ), + ChannelItem( + id: "UCX3IrV7uIir6yzMM9kOtH1Q", + name: "Kenya Grace", + handle: Some("@kenyagracebaby"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/p4ekeRYzj_6n6LnMJGqGW3m7cH3H1Kyx73MJhck3ibFdPPGXcEXqR6QPTJOnT6EngxdD9rlaQO4=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/p4ekeRYzj_6n6LnMJGqGW3m7cH3H1Kyx73MJhck3ibFdPPGXcEXqR6QPTJOnT6EngxdD9rlaQO4=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(262000), + short_description: "I like making songs✨ Insta: kenyagrace Tiktok: kenyagracebaby", + ), + ChannelItem( + id: "UCv2M31TPUGjbrfjrOYp7ShQ", + name: "Kim Wilde", + handle: Some("@OfficialKimWilde"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/IPJmQSBRlYFTgP7nVAthn-zdyPXO7vhmYgnHZHJuq8APh0jUTRGCvyKG53Pd9734Q3VU1iST=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/IPJmQSBRlYFTgP7nVAthn-zdyPXO7vhmYgnHZHJuq8APh0jUTRGCvyKG53Pd9734Q3VU1iST=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(228000), + short_description: "Kim Wilde needs no introduction, having registered a staggering 30 hits on the UK charts since 1981, and selling over 30 million records globally.\n\n2024 - The Kim Wilde European Tour\nFrance - Belgium - Holland - Sweden - Denmark - Portugal - Slovakia and more...\n", + ), + ChannelItem( + id: "UC436PxqEZc_vN-w-Op9aokw", + name: "Körner - Topic", + handle: None, + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/IlfVAE1TEZ4No2fke8xH2llEJ2Y18GFlgXvyncuHdT_oDfPEESkEGfqGWv7Yzaah4Icj5-FaoQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/IlfVAE1TEZ4No2fke8xH2llEJ2Y18GFlgXvyncuHdT_oDfPEESkEGfqGWv7Yzaah4Icj5-FaoQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: none, + subscriber_count: Some(223), + short_description: "", + ), + ChannelItem( + id: "UCNL1ZadSjHpjm4q9j2sVtOA", + name: "Lady Gaga", + handle: Some("@LadyGaga"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/GItB-g3kPf6WOCfcSaHwuiNFsdJRNu5EeuQfhbwKNnNWIOS2Nhwx4g-JeARQLtrhO6uAnjq2=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/GItB-g3kPf6WOCfcSaHwuiNFsdJRNu5EeuQfhbwKNnNWIOS2Nhwx4g-JeARQLtrhO6uAnjq2=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(25600000), + short_description: "ladygaga.com\nhauslabs.com", + ), + ChannelItem( + id: "UCs-QBT4qkj_YiQw1ZntDO3g", + name: "LE SSERAFIM", + handle: Some("@LESSERAFIM_official"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/4qrLd3kEQp0HKI5kKfewXXHxR_WxBAb7r2-Dp_V4ZHp9XVvLfDQ9OpBa3Nhr1lgkOQuodZzymyU=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/4qrLd3kEQp0HKI5kKfewXXHxR_WxBAb7r2-Dp_V4ZHp9XVvLfDQ9OpBa3Nhr1lgkOQuodZzymyU=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(5670000), + short_description: "LE SSERAFIM Official Youtube\n르세라핌 공식 유튜브\n", + ), + ChannelItem( + id: "UCLQNVUIJXJ2ejVHuSlBtmGQ", + name: "LEA", + handle: Some("@thisislealea"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/lAhFqB2fZcOq0Xv4v5FZRSTqx5y4jYbDU5cce2dDAmBuK2CgOzgx6Y2vHcynL3vSDq4rkR_7iQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/lAhFqB2fZcOq0Xv4v5FZRSTqx5y4jYbDU5cce2dDAmBuK2CgOzgx6Y2vHcynL3vSDq4rkR_7iQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(674000), + short_description: "LEA: Singer Songwriterin", + ), + ChannelItem( + id: "UC1S-Nw10RYc9H0AH6iV_81g", + name: "Lena", + handle: Some("@Lenameyerlandrut"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/GGzSkYic__-Wx8uyECHpfTfDG8uZshjaHvCF5v45GwWbyVxaZ1v6n6XCNxKWYcToqcWZCXy5QA=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/GGzSkYic__-Wx8uyECHpfTfDG8uZshjaHvCF5v45GwWbyVxaZ1v6n6XCNxKWYcToqcWZCXy5QA=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(815000), + short_description: "Loyal to myself - new album - out now 💕: \n► https://shop.lena-meyer-landrut.de \n\nKanal abonnieren: http://bit.ly/LenaYouTube\n\nExklusive Inhalte von Lena gibt\'s hier: \n►The Lenaverse: https://www.thelenaverse.de/\n\nLENA LIVE 2024: \n► https://www.ticketmaster.de/artist/lena-tickets/964725?camefrom=BTA\n\nLena Merch bekommt ihr hier:\n► Website: https://www.thelenashop.com/\n► Instagram: https://www.instagram.com/thelenashop/\n\nImpressum: http://www.universal-music.de/service/rechtliche-hinweise/impressum", + ), + ChannelItem( + id: "UCwTpSCdRCT_zpJtNgo1P4PQ", + name: "lenkatv", + handle: Some("@lenkatv"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_kz89gxfVz-P2lK71j8ubMe-SP58OAPbNTN_rbVEVolbg=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_kz89gxfVz-P2lK71j8ubMe-SP58OAPbNTN_rbVEVolbg=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(741000), + short_description: "", + ), + ChannelItem( + id: "UCTMD22pIImmgGSxddcxXPcg", + name: "Leony", + handle: Some("@leony"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ejz5OKmWMub0qjYjWRrC8awK5VhBjEY0RtDqzBZ-9hILM73Cmm37eCtU-F6cn_XiGrfD-CEynQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ejz5OKmWMub0qjYjWRrC8awK5VhBjEY0RtDqzBZ-9hILM73Cmm37eCtU-F6cn_XiGrfD-CEynQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(182000), + short_description: "", + ), + ChannelItem( + id: "UCaz5LK4WvEsga60uaq0ixtA", + name: "LINA", + handle: Some("@lina_official"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/CUPvAefhDSOoeZCiJON6Pu3G3yABXadjJqOTSBLqwhAu55nPBwI4dCo5Tf5GsWNhRiH6Iy75rA=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/CUPvAefhDSOoeZCiJON6Pu3G3yABXadjJqOTSBLqwhAu55nPBwI4dCo5Tf5GsWNhRiH6Iy75rA=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(427000), + short_description: "Meine neue neues Album \"24/1\" Out now! ☀\u{fe0f}\n\nLina Larissa Strahl ist Singer-Songwriterin und Schauspielerin (u.a. Bibi und Tina, The Lodge, Alle für Ella). Ihr gesangliches Talent begeistert seit Anbeginn ihre Fans mit Alben und Songs wie “Egoist”, “Egal”, “Hype”. Die besondere Bindung die über die Jahre zwischen Sängerin und Fans entstanden ist, zeigt sich besonders bei LINAs Konzerten. Jedes Mal entsteht vom ersten Ton an eine Welle der Begeisterung, die alle trägt. Pure Euphorie! Alles gut! Alles rosa!\n\nFolgt mir auf: \n💎 INSTAGRAM: https://www.instagram.com/_lina_official_\n💎 TIKTOK: https://www.tiktok.com/@_lina_official_tiktok\n💎 FACEBOOK: https://www.facebook.com/lina.offiziell \n💎 SNAPCHAT: @okitsreallyme", + ), + ChannelItem( + id: "UCXuqSBlHAE6Xw-yeJA0Tunw", + name: "Linus Tech Tips", + handle: Some("@LinusTechTips"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(16100000), + short_description: "Linus Tech Tips is a passionate team of \"professionally curious\" experts in consumer technology and video production who aim to educate and entertain.\n\nSponsorship Inquiries: sales@linusmediagroup.com\n", + ), + ChannelItem( + id: "UCIvqWqjC4aLvp7zI8hzARrA", + name: "Little Mix", + handle: Some("@LittleMix"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/1xIQVcPpPQG-MU_tkfA9FU8jlWf5KG1RxJKm3YGAm0g3MTlG7NsMgNk4GTd1aO2-NZPLoo7PRw=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/1xIQVcPpPQG-MU_tkfA9FU8jlWf5KG1RxJKm3YGAm0g3MTlG7NsMgNk4GTd1aO2-NZPLoo7PRw=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(16400000), + short_description: "Our new album Between Us is out now 🤍\n", + ), + ChannelItem( + id: "UCSJ4gkVC6NrvII8umztf0Ow", + name: "Lofi Girl", + handle: Some("@LofiGirl"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/3vLpU5nkaTB3w9YYB_FD6PWbqJX3TZsEr4uWsBcOUSotELT0-6L5KPeoc-FEJ977HhA1p8wRvKo=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/3vLpU5nkaTB3w9YYB_FD6PWbqJX3TZsEr4uWsBcOUSotELT0-6L5KPeoc-FEJ977HhA1p8wRvKo=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(14700000), + short_description: "Connecting people through music 🌎\n\n🎧 | Listen on Spotify, Apple music and more\n→ https://fanlink.tv/lofigirl-music\n\n💬 | Join the Lofi Girl community \n→ https://bit.ly/lofigirl-discord\n→ https://bit.ly/lofigirl-reddit\n\n🌐 | Lofi Girl on all social media\n→ https://bit.ly/lofigirl-sociaI\n", + ), + ChannelItem( + id: "UCv011hIm-QqpgDGt32xrIRA", + name: "Maggie Lindemann", + handle: Some("@maggielindemann"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/8_MhK1SfsgjtlkybondRLggXbimGOFg_5kxkfDm-Q201hl1fl48QPHuhb78bBKYLQEChdbsf=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/8_MhK1SfsgjtlkybondRLggXbimGOFg_5kxkfDm-Q201hl1fl48QPHuhb78bBKYLQEChdbsf=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(2360000), + short_description: "HEADSPLIT as a title came to Maggie late in the process. “On the one hand, and in the eyes of so many people out there, I\'m so happy and everything\'s perfect,” she says. “And then there\'s like this other part of me that\'s self-sabotaging, saying, ‘Everything\'s not perfect and you ruin everything and you\'re always wrong.’ But then again, getting older and being actually proud of myself has definitely helped me soften up a little bit. So my head is always split like that, so that concept lent itself really neatly to what I was trying to do with the music itself.”\n\n", + ), + ChannelItem( + id: "UCvEB_-xM91PBJURpVBvVXrA", + name: "Marina Marx", + handle: Some("@marina_marx"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/hjQvYoBGTHnzQaO_JTRkzUvxd61jyDYzLragjUyH84dYQiUIKxX7_RYTkzEW2tMInFoiI6TAsA=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/hjQvYoBGTHnzQaO_JTRkzUvxd61jyDYzLragjUyH84dYQiUIKxX7_RYTkzEW2tMInFoiI6TAsA=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(14300), + short_description: "Offizieller Kanal von MARINA MARX\n______________________________________________________________________\n\nVertreten durch: \n\nManagement & Booking:\nAME.Media GmbH\nSchloss Zweibrüggen \n52531 Übach-Palenberg \n", + ), + ChannelItem( + id: "UCLyAYe-pk6HGmfyT94ouBcA", + name: "Mark Forster", + handle: Some("@MarkForsterOfficial"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/JN2rIU-am-ll0hZ-rmpt9G-nKsxycb8RBJoteE0IhgYCc92e3sguzEx7A7SLcyaCwxXvEbmdmAs=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/JN2rIU-am-ll0hZ-rmpt9G-nKsxycb8RBJoteE0IhgYCc92e3sguzEx7A7SLcyaCwxXvEbmdmAs=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(876000), + short_description: "Willkommen auf dem offiziellen YouTube Kanal von Mark Forster!\n", + ), + ChannelItem( + id: "UCEdvpU2pFRCVqU6yIPyTpMQ", + name: "Marshmello", + handle: Some("@marshmello"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/yJlMNr2TRPPNCkijsPlW_urjXKEXg44NBhZhz5j3jy4OCJTg5WPhnEQKamrd6bNTqh48-_rtZ7E=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/yJlMNr2TRPPNCkijsPlW_urjXKEXg44NBhZhz5j3jy4OCJTg5WPhnEQKamrd6bNTqh48-_rtZ7E=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(57600000), + short_description: "Marshmello\'s Official YouTube Channel", + ), + ChannelItem( + id: "UCZygMGbIE8JNE1_qqtmIXhA", + name: "Max Giesinger", + handle: Some("@MaxGiesingerOfficial"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/yvEiUbbyIiK22ieCfmxo3u8LTFe5WTQTKfSnU4RYXjMzSQ0BgRSscv_dolgezovOogo7EN8m=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/yvEiUbbyIiK22ieCfmxo3u8LTFe5WTQTKfSnU4RYXjMzSQ0BgRSscv_dolgezovOogo7EN8m=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(351000), + short_description: "Das ist der offizielle YouTube Kanal von Max Giesinger.\n\nEs ist gute acht Jahre her, als Max Giesinger sich als „Der Junge, der rennt“ in das Gedächtnis der Musikwelt gebrannt hat. Der Albumtitel ist immer noch programmatisch, der Mann ist deutlich mehr unterwegs als zu Hause – zu Fuß auf dem Weg durch Hamburg, allein auf fremden Kontinenten u.a. für das TV Format „Sing meinen Song - das Tauschkonzert“ und mit seinen Jungs auf großen Bühnen auf Tour. Über 800 Konzerte hat Max im vergangenen Jahrzehnt gespielt, hat Deutschland und die Welt in all seinen Facetten kennengelernt. \n \nDie neuen Songs „Menschen“ und „Flugangst“ sind der Auftakt für ein neues Album, das im Mai 2025 kommen wird. Mit frischer Musik, die an einen Roadtrip erinnert. Ein Trip, der nicht geradlinig ist, ungeplant, mit Zwischenstopps. Mit von Max ungehörten Sounds und Texten, die tief gehen. Max ist der Reiseführer dieses Trips. Begleite ihn unbedingt: hier, auf Tour und auf seinen Socials!\n", + ), + ChannelItem( + id: "UChsDCPpjdh6L7rNr1b7s1BQ", + name: "MoTrip", + handle: Some("@OfficialMoTripTV"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_mJeEtvS5npnE7GWsxbZjvWm6OiLV22sVnJIJrOcjzdGQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_mJeEtvS5npnE7GWsxbZjvWm6OiLV22sVnJIJrOcjzdGQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(115000), + short_description: "Offizieller Kanal von MoTrip\n\nMehr zu MoTrip\n► Instagram: https://www.instagram.com/motrip/\n► Facebook: https://www.facebook.com/OfficialMoTrip/\n► Twitter: https://twitter.com/OfficialMoTrip\n► Website: https://www.motrip.de/", + ), + ChannelItem( + id: "UCX6OQ3DkcsbYNE6H8uQQuVA", + name: "MrBeast", + handle: Some("@MrBeast"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/fxGKYucJAVme-Yz4fsdCroCFCrANWqw0ql4GYuvx8Uq4l_euNJHgE-w9MTkLQA805vWCi-kE0g=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/fxGKYucJAVme-Yz4fsdCroCFCrANWqw0ql4GYuvx8Uq4l_euNJHgE-w9MTkLQA805vWCi-kE0g=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(338000000), + short_description: "Go Watch Beast Games! https://unfur.ly/BeastGames\nSUBSCRIBE FOR A COOKIE!\n\nAccomplishments:\n- Raised $20,000,000 To Plant 20,000,000 Trees\n- Removed 30,000,000 pounds of trash from the ocean\n- Helped 2,000 people walk again\n- Helped 1,000 blind people see\n- Helped 1,000 deaf people hear\n- Built wells in Africa\n- Built and gave away 100 houses\n- Adopted every dog in a shelter (twice)\n- Given millions to charity\n- Started my own snack company Feastables\n- Started my own software company Viewstats\n- Started Lunchly, a tasty, better-for-you lunch option\n- Gave away a private island (twice)\n- Gave away 1 million meals\n- Gave away a chocolate factory\n- I counted to 100k\n- Ran a marathon in the world\'s largest shoes\n- Survived 50 hours in Antarctica\n- Recreated Squid Game in real life\n- Created the largest competition show with 1000 people (Beast Games)\n- Gave $5,000,000 to one person\n- Passed T-Series to become most subscribed YouTube channel 🥹\nyou get it, I appreciate all of you so much :)\n", + ), + ChannelItem( + id: "UCMiJRAwDNSNzuYeN2uWa0pA", + name: "Mrwhosetheboss", + handle: Some("@Mrwhosetheboss"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/enyLBm1Sy8mVRXJJLWHT2z64nqxJGt2g61A9xnxpUjO2YAUovHaY_JT3rnAg0j6Qij9iaHQlAg=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/enyLBm1Sy8mVRXJJLWHT2z64nqxJGt2g61A9xnxpUjO2YAUovHaY_JT3rnAg0j6Qij9iaHQlAg=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(20300000), + short_description: "Let\'s become the Greatest Tech Community on the Planet 🌍\n\nI\'m Arun Maini, I\'m a 28 year old Economics graduate whose life\'s passion is Technology, and I\'m on a mission to make the most FUN and USEFUL Tech videos on the Planet! 🙏\n\n\n\n", + ), + ChannelItem( + id: "UCRrLWhcrm7jrOMiuU0HmNRA", + name: "Namika", + handle: Some("@Namikamusik"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/klATX6VRYvvYsLAO0s5D89FqLpVMwbQpNj-LVKjOnNfUlGB92c79DDx3G2Qh7V-Aj3zv1vVI_g=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/klATX6VRYvvYsLAO0s5D89FqLpVMwbQpNj-LVKjOnNfUlGB92c79DDx3G2Qh7V-Aj3zv1vVI_g=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(772000), + short_description: "Namika steht für einen ganz eigenen Stil, der seinesgleichen sucht. Nach ihrem 2015 erschienen Debüt „Nador“ mit der Nummer 1 Single „Lieblingsmensch“ sowie ihrem Nachfolger-Album „Que Walou“, welches ebenfalls zahlreiche Preise erhielt und Platz 1 der Charts erreichte, erscheint 2023 mit „Wie geht’s dir?“ ihr neues Album. Entstanden sind die Songs in den letzten drei Jahren. Nicht nur eine intensive Zeit für Namika sondern auch eine weltweite Pandemie, die das Leben aller Menschen gehörig durcheinanderbringt. „Ich bin in dieser Zeit oft von Außenstehenden gefragt worden, wie es mir geht und ich mich öfters dabei ertappt habe, wie ich einfach nur ‚Alles gut‘ entgegnet habe“, erinnert sich Namika „Und so wurde mir erst klar, dass die Artund Weise wie wir diese Frage im Alltag verwenden, nicht mal annähernd ihrer Tiefgründigkeit gerecht wird\". Auf „Wie geht’s dir?“ hat NAMIKA genau das getan, sich auf die Suche nach Antworten gemacht – und diese fallen ganz unterschiedlich aus.\n\n", + ), + ChannelItem( + id: "UCWOA1ZGywLbqmigxE4Qlvuw", + name: "Netflix", + handle: Some("@Netflix"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(29500000), + short_description: "COBRA KAI NEVER DIES\n\n\n\nNetflix is one of the world\'s leading entertainment services, with 283 million paid memberships in over 190 countries enjoying TV series, films and games across a wide variety of genres and languages. Members can play, pause and resume watching as much as they want, anytime, anywhere, and can change their plans at any time.\n", + ), + ChannelItem( + id: "UC2y0t3AAHuZxb8IgNm-A-yA", + name: "Nina Chuba", + handle: Some("@NinaChuba"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/IHPUf1xe9NV2R0TArNaIxCtmeTJz4MZ1D_c9FrohPe2I_NsEl0_e3CgkQzoA3-1sX0bBqFlpEQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/IHPUf1xe9NV2R0TArNaIxCtmeTJz4MZ1D_c9FrohPe2I_NsEl0_e3CgkQzoA3-1sX0bBqFlpEQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(297000), + short_description: "Official Nina Chuba YouTube Channel 🖤\n\n\n", + ), + ChannelItem( + id: "UCi4EDAgjULwwNBHOg1aaCig", + name: "OneRepublic", + handle: Some("@OneRepublic"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/9nEm0mi6FUORmK_tFVZ9OKdeLC_WB8Oa4pvTK1tIxGVpDPCbtmLGVHfBjwaD7lU0yoCMQXDYpg=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/9nEm0mi6FUORmK_tFVZ9OKdeLC_WB8Oa4pvTK1tIxGVpDPCbtmLGVHfBjwaD7lU0yoCMQXDYpg=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(10900000), + short_description: "🌹🪩👁\u{fe0f}🌵 Artificial Paradise Super Deluxe Out Now! 🌵👁\u{fe0f}🪩🌹\n\nOneRepublic is Ryan Tedder, Zach Filkins, Drew Brown, Brent Kutzle, and Eddie Fisher", + ), + ChannelItem( + id: "UCE5yTn9ljzSnC_oMp9Jnckg", + name: "P!NK", + handle: Some("@PinkVideoVault"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/Ls0xL7cdFhQaptfwj_iWSuzrbjoCpzG51upcwTFdS_twic6gVyNnx9mEo8YtJMinnGoOSUVmzQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/Ls0xL7cdFhQaptfwj_iWSuzrbjoCpzG51upcwTFdS_twic6gVyNnx9mEo8YtJMinnGoOSUVmzQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(12700000), + short_description: "It\'s all happening", + ), + ChannelItem( + id: "UCRuODyyCo2YSQhJea9FAFLw", + name: "Pfulsk X Die Akademie", + handle: Some("@Pfulsk"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/_hZEaH2GeEhTzIZRXSv-vJDufdxZs_q53li8n1394by0Jx0Y1nc172Gaqz36JkqXt4OS6m00J0A=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/_hZEaH2GeEhTzIZRXSv-vJDufdxZs_q53li8n1394by0Jx0Y1nc172Gaqz36JkqXt4OS6m00J0A=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: none, + subscriber_count: Some(7420), + short_description: "Ich stelle hier meine Covers und Lieder vor. \nAußerdem könnt Ihr hier die Beiträge der Mitglieder der Akademie hören, solange diese noch keinen eigenen YouTube-Kanal haben. \nDie mp3-Downloads meiner Lieder findet Ihr auf https://t.me/Pfulsk ", + ), + ChannelItem( + id: "UCRiy7IsqFucvH3Ilj7qf5Rg", + name: "Phoebe Ryan", + handle: Some("@phoeberyanmusic"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/tx-jmIypBNNBQIFS3OqTVJ6YJgjNdDZiwb5ZHH7qcERptxYSdrExOgygogc6KcJdexTW3utKwlg=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/tx-jmIypBNNBQIFS3OqTVJ6YJgjNdDZiwb5ZHH7qcERptxYSdrExOgygogc6KcJdexTW3utKwlg=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(199000), + short_description: "All things Phoebe Ryan~*", + ), + ChannelItem( + id: "UCxTHCMaxURhapisCMBv8y0A", + name: "Plankton", + handle: Some("@plankton.mp4"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/Cdlsy3IXgis5hNYRwvohPB9AIxH8tNdEo9CwxXK1i3QEUO7YN3p4YJ_cd5ruGsmNhvoX7803=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/Cdlsy3IXgis5hNYRwvohPB9AIxH8tNdEo9CwxXK1i3QEUO7YN3p4YJ_cd5ruGsmNhvoX7803=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(1050000), + short_description: "Meine Mama sagt meine Videos sind ganz nett.\n\n✉\u{fe0f} plankton@enkime.de\n\nImpressum ⬇\u{fe0f}\nhttps://beacons.ai/plankton.gif\n", + ), + ChannelItem( + id: "UCaJ84U5xsjX9KT1mIF3B22w", + name: "Rev says desu", + handle: Some("@Revsaysdesu"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: none, + subscriber_count: Some(711000), + short_description: "Hey what\'s up guys, Rev here. On this channel I cover a wide range of topics including anime news, vtuber news, drama, bad social media takes, memes, and much more!\n\nMake sure to subscribe and turn on notifications for daily uploads!\n\nMostly satire, don\'t take things too seriously. Come chill and have a relaxing time with this great community.\n", + ), + ChannelItem( + id: "UCfSAqqftdc7FM1SY5vJjKfA", + name: "Rita Ora", + handle: Some("@ritaora"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ErY96sZoGCbxiHXArPUrRfYb0EPifFGEebw7ccLW3NoFK4LCpoJO2ALU9rKN1BU-JKFLITOloA=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ErY96sZoGCbxiHXArPUrRfYb0EPifFGEebw7ccLW3NoFK4LCpoJO2ALU9rKN1BU-JKFLITOloA=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(4200000), + short_description: "The Official Rita Ora YouTube channel!\n\nMy new album ‘YOU & I’ is OUT NOW 🔒❤\u{fe0f}\nBuy now ⬇\u{fe0f}\nritaora.lnk.to/YouAndIID\n", + ), + ChannelItem( + id: "UCw5J0_EUnV5iXKVMUGHsQ0A", + name: "Rosa Linn", + handle: Some("@rosalinn"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/kB4pK4zqUP5Ta8gxolb1_-tGmw9ocyJOb8YURWzMTzDdwI3cTNNRkNNJi-MHOTZlz5W93au_wA=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/kB4pK4zqUP5Ta8gxolb1_-tGmw9ocyJOb8YURWzMTzDdwI3cTNNRkNNJi-MHOTZlz5W93au_wA=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(484000), + short_description: "The official Youtube channel of Rosa Linn.\nDebut EP “Lay Your Hands Upon My Heart” is out everywhere! \n", + ), + ChannelItem( + id: "UCkdc7gHpavxpgGalxKbgSHA", + name: "Sean Paul", + handle: Some("@AllSeanPaul"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/aNFqe9rfndkFjS-bS0wO8wmy1kR679MMKOYTe10YsL8s8275b1326BtUbiLkwf9vyVa766rtIQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/aNFqe9rfndkFjS-bS0wO8wmy1kR679MMKOYTe10YsL8s8275b1326BtUbiLkwf9vyVa766rtIQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(4930000), + short_description: "Welcome to the official Sean Paul YouTube channel. Sean Paul began his musical career in 1996 and has attracted international attention that has seen him releasing six studio albums. The international dancehall artiste and producer has been given the nod of approval by numerous international musical governing bodies and boasts 7 Grammy nominations as well as the 2006 American Music Award for favorite Pop/Rock Male Artiste.", + ), + ChannelItem( + id: "UCf1jBHk4oofSwXzoWG8lgWg", + name: "Stereoact Official", + handle: Some("@StereoactOfficial"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/SKio4KZErvVJI7S27CiJzHXGaFVoWZXbMI7KZF3SMg1cRaFZyC82wEu17DHwjL-YkMA39lz8=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/SKio4KZErvVJI7S27CiJzHXGaFVoWZXbMI7KZF3SMg1cRaFZyC82wEu17DHwjL-YkMA39lz8=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(58100), + short_description: "Das mit 7-fach Gold & 3-fach Platin ausgezeichnete und für 3 Echos nominierte Duo Stereoact sind das erfolgreicheste deutsche DJ-Duo des Jahres. Die Produzenten und DJ`s aus dem Erzgebirge landen seit etwa drei Jahren regelmäßig auf den vorderen Plätzen der Bestenlisten.\nIhr gemeinsam mit der Singer-Songwriterin Kerstin Ott produzierter Hit „Die immer lacht“ avancierte zur erfolgreichsten deutschsprachigen Single des Jahres 2016 und das Video dazu wurde das erfolgreichste in deutscher Sprache ÜBERHAUPT mit 200 Millionen.\n\nManagement & Booking: info@13th-sounds.ch\n\nHomepage: http://www.stereoact.de/\nFan-Shop: https://kappenschmiede.de/merchandise/stereoact/\nFacebook: https://www.facebook.com/stereoactmusic/\nSoundcloud: https://soundcloud.com/stereoact\nSpotify: https://goo.gl/CYmkVs\nYou Tube: https://www.youtube.com/c/StereoactOfficial\nImpressum: https://www.stereoact.de/impressum/", + ), + ChannelItem( + id: "UCOiG4UoE0-CBZKlDVgw1eTA", + name: "Stonedeafproduction", + handle: Some("@Stonedeafproduction"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_nyArqKRzgfxSX1WApFPtYr59H2ILATvZiOZl4N-SCtoqg=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_nyArqKRzgfxSX1WApFPtYr59H2ILATvZiOZl4N-SCtoqg=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(714000), + short_description: "SDP ist eine Zwei-Mann-Band aus Spandau, Berlin. Die beiden Allround-Musiker bedienen sich vieler verschiedener Stile, die sie miteinander kombinieren. In ihren deutschsprachigen Texten verarbeiten SDP Alltäglichkeiten und weltpolitische Fragen nebeneinander, allerdings oft mit einem satirischen und ironischen Unterton.", + ), + ChannelItem( + id: "UC9rMiEjNaCSsebs31MRDCRA", + name: "Stray Kids", + handle: Some("@StrayKids"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(18800000), + short_description: "Stray Kids Official YouTube", + ), + ChannelItem( + id: "UCj1VqrHhDte54oLgPG4xpuQ", + name: "Stuff Made Here", + handle: Some("@StuffMadeHere"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_mzfzJ9E1WEzyt1YlPXemHOwGBBnVCKzXva_mzmS5qqMg=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_mzfzJ9E1WEzyt1YlPXemHOwGBBnVCKzXva_mzmS5qqMg=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(4600000), + short_description: "I\'ve been building things for as long as I can remember. It all started when my dad exposed me to plastic model building and soldering when I was around 4 years old. That set me on a path to building increasingly complex things and becoming an engineer. My goal is to do the same for as many people as possible by exposing them to the joy of engineering, fabricating and creating things out of nothing. If I\'m lucky a few people may become engineers, which would be great for the world. Engineering is awesome.\n\nIf you\'re interested in sending me something:\n\nP.O. Box 78470\nCharlotte, NC 28271\n", + ), + ChannelItem( + id: "UCWH4JkQWioU3vTAritHDnAA", + name: "sydsnap", + handle: Some("@sydsnap"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_ltVeBIuP0YJIFSzAiI6f30nf882OfAdV_CeD-h0mVasLU=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_ltVeBIuP0YJIFSzAiI6f30nf882OfAdV_CeD-h0mVasLU=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: none, + subscriber_count: Some(811000), + short_description: "Anime/ manga / visual+light novel addicted youtuber. My quirk is yelling loudly.", + ), + ChannelItem( + id: "UCi3H2bHgaTFwrfwx_GOJyZw", + name: "t-low - Topic", + handle: None, + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/Eu_Ek1vTScAtdhB5OCAP67sRRfsAjN74BEVmPO3NcDQjBbmsLzJtSxBAbwNwrrG5ih0ywpAY4fk=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/Eu_Ek1vTScAtdhB5OCAP67sRRfsAjN74BEVmPO3NcDQjBbmsLzJtSxBAbwNwrrG5ih0ywpAY4fk=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: none, + subscriber_count: Some(65500), + short_description: "T-Low ist ein deutscher Rapper. Sein Stil ist eine Mischung aus autotunelastigem Trap, Punk Rap und Cloud Rap mit Einflüssen aus Dream Pop. Mit den Songs Sehnsucht und We Made It erreichte er im März bzw. April 2022 jeweils die Spitze der Singlecharts in Deutschland.", + ), + ChannelItem( + id: "UCqECaJ8Gagnn7YCbPEzWH6g", + name: "Taylor Swift", + handle: Some("@TaylorSwift"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/PFmecESWwRnrbIFZ04vG6UbdXKzjyC3vQkufqqEYEHpXlwHFRMDN8RuvG7A1WRnbGKVZTcyFYQ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/PFmecESWwRnrbIFZ04vG6UbdXKzjyC3vQkufqqEYEHpXlwHFRMDN8RuvG7A1WRnbGKVZTcyFYQ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(60500000), + short_description: "All’s fair in love and poetry... New album THE TORTURED POETS DEPARTMENT. \nOut April 19 🤍\n\n", + ), + ChannelItem( + id: "UCEy_Fzl4jE1AF_a2R98yKsw", + name: "Test with Sanjaa", + handle: Some("@TestwithSanjaa"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_lbopSbgcvTQ8376dROCfVnF3WSndiYxJc7WEnsWskRB6Q=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_lbopSbgcvTQ8376dROCfVnF3WSndiYxJc7WEnsWskRB6Q=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: none, + subscriber_count: Some(77500), + short_description: "Test and Taste with Sanjaa", + ), + ChannelItem( + id: "UC5UAwBUum7CPN5buc-_N1Fw", + name: "The Linux Experiment", + handle: Some("@TheLinuxEXP"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_lAKf-vZLoTI-gZUoP5Y3gbdGd07E4eDHUhTee6aOzDCnU=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_lAKf-vZLoTI-gZUoP5Y3gbdGd07E4eDHUhTee6aOzDCnU=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(373000), + short_description: "Making Linux accessible: no techno babble, no super technical content. Just Linux desktop news, simple tutorials, application spotlights, and opinion pieces trying to stay positive, without gatekeeping.\n\n👏 SUPPORT THE CHANNEL:\nGet access to a weekly podcast, vote on the next topics I cover, and get your name in the credits:\n\nYouTube: https://www.youtube.com/channel/UC5UAwBUum7CPN5buc-_N1Fw/join\nPatreon: https://www.patreon.com/thelinuxexperiment\n\nOr, you can donate whatever you want: https://paypal.me/thelinuxexp?locale.x=fr_FR\n\n🏆 FOLLOW ME ELSEWHERE:\nMastodon: https://mastodon.social/web/@thelinuxEXP\nPixelfed: https://pixelfed.social/TLENick\nDiscord: https://discord.gg/xK7ukavWmQ\n", + ), + ChannelItem( + id: "UC0WP5P-ufpRfjbNrmOWwLBQ", + name: "The Weeknd", + handle: Some("@TheWeeknd"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/WHvw1ak1FcJaHeEiTmG2iN0dqEjjPxAtT_tA8ruJ3MlNr9I-RHsAur1iAenYeQN_d6LNPH2Z8Ic=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/WHvw1ak1FcJaHeEiTmG2iN0dqEjjPxAtT_tA8ruJ3MlNr9I-RHsAur1iAenYeQN_d6LNPH2Z8Ic=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(36700000), + short_description: "Official YouTube channel for The Weeknd.\nwww.theweeknd.com", + ), + ChannelItem( + id: "UCWu-IOxbeSD-MRM2Q87ZF0A", + name: "Think Before You Sleep", + handle: Some("@ThinkBeforeYouSleepYT"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/fN1RADbsG5oWViWlVyqto0Xn37kXN3O7l7FWfxaflsyRF-tzdDncV4i4g46jySCR6SZSzEOZ=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/fN1RADbsG5oWViWlVyqto0Xn37kXN3O7l7FWfxaflsyRF-tzdDncV4i4g46jySCR6SZSzEOZ=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(905000), + short_description: "\n\n\nIf you would like to make a topic request, then send an email to thinkbeforeyousleeprequests@gmail.com\n\nTopic requests should include an article, TV show, Movie, or Twitch Streamer, YouTube video/channel. Please be as specific as possible as to where the source material is. For example, if it\'s a TV show, I need to know what season and what episode. If you are requesting a video that is longer than 10 minutes, please include relevant time stamps to interesting things that were said during the video.\n\nThank you for your help.\n\nIf you have business dealings with me please use the business e-mail provided in the \"Details\" section below. Do not use the request e-mail because your message might not be seen. Any e-mails sent to the business e-mail that have nothing to do with business will be ignored.\n\n", + ), + ChannelItem( + id: "UCGexINHKQhnkwmMaympciYQ", + name: "Tim Bendzko", + handle: Some("@timbendzko"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/h3pJv5qBDKSjjNo8H998cZAdnXsF0S6vzf-MF9D8YZQoeOaMHrhON01TFrb0EcDcuhZgGfKjQw=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/h3pJv5qBDKSjjNo8H998cZAdnXsF0S6vzf-MF9D8YZQoeOaMHrhON01TFrb0EcDcuhZgGfKjQw=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(297000), + short_description: "Jetzt hast du lang genug gewartet...\n", + ), + ChannelItem( + id: "UCtiObj3CsEAdNU6ZPWDsddQ", + name: "TOMORROW X TOGETHER OFFICIAL", + handle: Some("@TXT_bighit"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/qhmEoqhG9u8lCm3NgdJc1hJ4yZYBPCZ8l2J-ia6cf_gSsnuFLo1sM_NUmFn48oPRAiJIkNUo=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/qhmEoqhG9u8lCm3NgdJc1hJ4yZYBPCZ8l2J-ia6cf_gSsnuFLo1sM_NUmFn48oPRAiJIkNUo=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(12400000), + short_description: "#투모로우바이투게더 공식 유튜브 입니다.\nThis is the official YouTube for #TOMORROW_X_TOGETHER", + ), + ChannelItem( + id: "UCZem9C5rWjSb0B8tV3k2EZg", + name: "Torque Test Channel", + handle: Some("@TorqueTestChannel"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_n3V8UR7V7bO4lbA8IhEYHO_sYqEwV3eByDzoB0RF8B_Q=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_n3V8UR7V7bO4lbA8IhEYHO_sYqEwV3eByDzoB0RF8B_Q=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(467000), + short_description: "On the Torque Test Channel our aim is to test old-school to modern tools on a level playing field to compare or reveal performance figures in understandable terms in order to shine some light on recent marketing trends.\n\nFAQ:\nYou should use ($120-250) battery on (X) brand! \nIf they package their kit that way. For now, they rate the tool\'s specs with the battery they provide so we test vs that. \n\nWhat air set-up do you have?\nIR 80gal compressor - 20ft 1\" cast iron pipe to 3ft 3/4\" pipe threaded into wall regulator (48 CFM max), 3/8\" NPT out to 3/8\" 25ft hose. 1/4\" Milton V Hi-Flo Pro fittings and Milton 5in1 hi-flo coupler (67 CFM max)\n\nWhy do you test up to 15 seconds (that\'s too long, too short): \nSee ep1, there\'s a standard for impact testing. \n\nCan I send you a tool and you send back?\nYes! TorqueTestChannel at gmail.com\n\nWhy not use a torque wrench?\nSee ep3 on nut-busting. \n\nIt\'s technically \"pounds-foot\" though\nWe tried saying it that way, it\'s pretty laborsome after awhile. \n\n\n\n", + ), + ChannelItem( + id: "UCC9192yGQD25eBZgFZ84MPw", + name: "Trailerpark", + handle: Some("@trailerpark"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_lYwM_1_M7MxhF_wY2lAem2tZM-P_cVA9JgaQeYewaeyw=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_lYwM_1_M7MxhF_wY2lAem2tZM-P_cVA9JgaQeYewaeyw=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(270000), + short_description: "Trailerpark ist das Sprachrohr für eine Jugend geprägt von Komasaufen, Youporn-Clips und exzessivem Nihilismus. Musik für Hartz4-Empfänger, Kinder mit Kindern und Minderbemittelte mit RTL-Realityshow-Erfahrung.", + ), + ChannelItem( + id: "UCcmxOGYGF51T1XsqQLewGtQ", + name: "Trash Taste", + handle: Some("@TrashTaste"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_kMwLH77YtyKHVCbKrQfzYYFSc4IQ5e5mILkvgvXSP0UpA=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_kMwLH77YtyKHVCbKrQfzYYFSc4IQ5e5mILkvgvXSP0UpA=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(1660000), + short_description: "A podcast with attitude that hits different.", + ), + ChannelItem( + id: "UCsQBsZJltmLzlsJNG7HevBg", + name: "Tyler, The Creator", + handle: Some("@TylerTheCreator"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/-1Bt8eufq601KzmA0Rk1yrIzz372UDDeBkIpWytlztkcAyh1w6g2bNfXVnR6hadnezvUCq0XICA=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/-1Bt8eufq601KzmA0Rk1yrIzz372UDDeBkIpWytlztkcAyh1w6g2bNfXVnR6hadnezvUCq0XICA=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(6550000), + short_description: "CHROMAKOPIA is out now: https://tylerthecreator.lnk.to/chromakopia \n", + ), + ChannelItem( + id: "UC_7HfGUn1OVNlu0p8F2Cmwg", + name: "Wincent Weiss", + handle: Some("@WincentWeissMusic"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ZRbrlo_XK-wxrLumtq8gcBrhDCBDoqg2VgEVjHC4iNnPtXBk3o_kGGorlom_tXgmPwqmkzOVgw=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ZRbrlo_XK-wxrLumtq8gcBrhDCBDoqg2VgEVjHC4iNnPtXBk3o_kGGorlom_tXgmPwqmkzOVgw=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(450000), + short_description: "Wir würden uns sehr freuen, wenn ihr uns bei unserer Tour besucht :)\nhttps://www.ticketmaster.de/artist/wincent-weiss-tickets/977408?camefrom=BTA\n\nEventim:\nhttps://www.eventim.de/artist/wincent-weiss/wincent-weiss-tour-2025-3471325/\n\nHier geht es zu unserem Merchshop:\nhttps://shop.wincentweiss.de\n\nKanal abonnieren: http://bit.ly/WincentWeissYT\n\nFolgt mir auch hier:\nInstagram: https://www.instagram.com/wincentweiss/\nFacebook: http://www.facebook.com/WincentWeissOfficial\nSpotify: https://play.spotify.com/artist/12xme1fwd3iGEW7rF9b6tp\nTwitter: https://twitter.com/Wincent_Weiss\nSnapchat: Wincenweiss\n\n#Wlog #Wincent Weiss \n", + ), + ChannelItem( + id: "UC7QteRlErpm27bkZ6izFwKg", + name: "World Friends", + handle: Some("@worldfriends77"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(1540000), + short_description: "Hello! This is World Friends :)\n\nSponsor a video: worldfriends.kr@gmail.com\n\n제작 : 어썸엔터테인먼트 (주)\nⓒ2024. Awesome Entertainment All rights reserved.\n\n", + ), + ChannelItem( + id: "UCiSj5lGGYhpIxoWrwotQBEA", + name: "X-Plane. Org Videos and Reviews", + handle: Some("@x-plane"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_m0XEcsPovACCjGbdOfwwtsd03OWAxzFKMIa8xrHONFSw=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_m0XEcsPovACCjGbdOfwwtsd03OWAxzFKMIa8xrHONFSw=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: none, + subscriber_count: Some(8130), + short_description: "Official Channel for X-Plane.org \n\n\n\n\n\n\n", + ), + ChannelItem( + id: "UC0sytTpk1adR_cfjHhiJ08Q", + name: "ZacksJerryRig", + handle: Some("@ZacksJerryRig"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_mYOtq_5qxOdFfAH-RIOtdUIj7Sfuak--6Ir2FKWZ2FUA=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/ytc/AIdro_mYOtq_5qxOdFfAH-RIOtdUIj7Sfuak--6Ir2FKWZ2FUA=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: verified, + subscriber_count: Some(234000), + short_description: "Primary Channel: YouTube.com/user/JerryRigEverything\n\nMy primary channel is for my projects. ZacksJerryRig, is for my travels, vlogs, and things that I just find interesting.", + ), + ChannelItem( + id: "UC3PdiRW5dUA4V70ueeR1eHA", + name: "zayn", + handle: Some("@Zayn"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/pv17akWLCW5NxKTbRyBNIJo9K6i0aXk0_vHUU1pIj5H73Q_UgYquVVB2-p0GoAxFMBnW9-Ij6w=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/pv17akWLCW5NxKTbRyBNIJo9K6i0aXk0_vHUU1pIj5H73Q_UgYquVVB2-p0GoAxFMBnW9-Ij6w=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(15900000), + short_description: "ROOM UNDER THE STAIRS\nOUT NOW\n\n", + ), + ChannelItem( + id: "UCQam2rlpwMx1YlvBN8PSS2A", + name: "Zoe Wees", + handle: Some("@zoewees"), + avatar: [ + Thumbnail( + url: "//yt3.googleusercontent.com/Jo4JxTnN7Pa_rA5-BBEHEPVAtNw9eqJVGdCNH9c6DNmzl5EJZIcg9048X-BYmqEJlSJo8Zjg=s88-c-k-c0x00ffffff-no-rj-mo", + width: 88, + height: 88, + ), + Thumbnail( + url: "//yt3.googleusercontent.com/Jo4JxTnN7Pa_rA5-BBEHEPVAtNw9eqJVGdCNH9c6DNmzl5EJZIcg9048X-BYmqEJlSJo8Zjg=s176-c-k-c0x00ffffff-no-rj-mo", + width: 176, + height: 176, + ), + ], + verification: artist, + subscriber_count: Some(731000), + short_description: "\'Therapy’ the debut album out now 🤍\nhttps://bio.to/zoewees\n", + ), + ], + ctoken: None, + endpoint: browse, +) diff --git a/src/client/video_details.rs b/src/client/video_details.rs index 2c81e69..e91a890 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -359,6 +359,7 @@ impl MapResponse for response::VideoDetails { comment_ctoken, visitor_data.clone(), ContinuationEndpoint::Next, + false, ), latest_comments: Paginator::new_ext( comment_count, @@ -366,6 +367,7 @@ impl MapResponse for response::VideoDetails { latest_comments_ctoken, visitor_data.clone(), ContinuationEndpoint::Next, + false, ), visitor_data, }, @@ -484,6 +486,7 @@ fn map_recommendations( mapper.ctoken, visitor_data, ContinuationEndpoint::Next, + false, ), warnings: mapper.warnings, } diff --git a/src/model/paginator.rs b/src/model/paginator.rs index a59e377..f4b5358 100644 --- a/src/model/paginator.rs +++ b/src/model/paginator.rs @@ -1,5 +1,7 @@ //! Wrapper model for progressively fetched items +use std::ops::Not; + use serde::{Deserialize, Serialize}; /// Wrapper around progressively fetched items @@ -33,6 +35,9 @@ pub struct Paginator { pub visitor_data: Option, /// YouTube API endpoint to fetch continuations from pub endpoint: ContinuationEndpoint, + /// True if the paginator should be fetched with YouTube credentials + #[serde(default, skip_serializing_if = "<&bool>::not")] + pub authenticated: bool, } impl Default for Paginator { @@ -43,6 +48,7 @@ impl Default for Paginator { ctoken: None, visitor_data: None, endpoint: ContinuationEndpoint::Browse, + authenticated: false, } } } @@ -82,7 +88,14 @@ impl ContinuationEndpoint { impl Paginator { pub(crate) fn new(count: Option, items: Vec, ctoken: Option) -> Self { - Self::new_ext(count, items, ctoken, None, ContinuationEndpoint::Browse) + Self::new_ext( + count, + items, + ctoken, + None, + ContinuationEndpoint::Browse, + false, + ) } pub(crate) fn new_ext( @@ -91,6 +104,7 @@ impl Paginator { ctoken: Option, visitor_data: Option, endpoint: ContinuationEndpoint, + authenticated: bool, ) -> Self { Self { count: match ctoken { @@ -101,6 +115,7 @@ impl Paginator { ctoken, visitor_data, endpoint, + authenticated, } } diff --git a/src/serializer/text.rs b/src/serializer/text.rs index f0009bd..51ba3cb 100644 --- a/src/serializer/text.rs +++ b/src/serializer/text.rs @@ -319,7 +319,9 @@ fn map_text_component( browse_id: watch_playlist_endpoint.playlist_id, verification, }, - None => TextComponent::Text { text, style }, + None | Some(NavigationEndpoint::CreatePlaylist { .. }) => { + TextComponent::Text { text, style } + } } } diff --git a/src/util/mod.rs b/src/util/mod.rs index 9349e07..a50cb7d 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -12,7 +12,6 @@ use std::{ str::{FromStr, SplitWhitespace}, }; -use base64::Engine; use fancy_regex::RegexBuilder; use once_cell::sync::Lazy; use rand::Rng; @@ -20,7 +19,7 @@ use regex::Regex; use url::Url; use crate::{ - error::Error, + error::{AuthError, Error, ExtractionError}, param::{Country, Language, COUNTRIES}, serializer::text::TextComponent, }; @@ -502,11 +501,11 @@ pub fn video_id_from_thumbnail_url(url: &str) -> Option { } pub fn b64_encode>(input: T) -> String { - base64::engine::general_purpose::URL_SAFE.encode(input) + data_encoding::BASE64URL.encode(input.as_ref()) } -pub fn b64_decode>(input: T) -> Result, base64::DecodeError> { - base64::engine::general_purpose::URL_SAFE.decode(input) +pub fn b64_decode>(input: T) -> Result, data_encoding::DecodeError> { + data_encoding::BASE64URL.decode(input.as_ref()) } /// Get the country from its English name @@ -597,6 +596,18 @@ where } } +/// Map error when fetching an internal playlist +/// +/// If no user is logged in, YouTube returns a "NotFound" error. This has to be corrected +/// into a NoLogin error. +pub fn map_internal_playlist_err(e: Error) -> Error { + if let Error::Extraction(ExtractionError::NotFound { .. }) = e { + Error::Auth(AuthError::NoLogin) + } else { + e + } +} + #[cfg(test)] pub(crate) mod tests { use std::{fs::File, io::BufReader, path::PathBuf}; diff --git a/testfiles/channel/channel_playlists.json b/testfiles/channel/channel_playlists.json new file mode 100644 index 0000000..87794d2 --- /dev/null +++ b/testfiles/channel/channel_playlists.json @@ -0,0 +1,7812 @@ +{ + "contents": { + "twoColumnBrowseResultsRenderer": { + "tabs": [ + { + "tabRenderer": { + "content": { + "sectionListRenderer": { + "disablePullToRefresh": true, + "trackingParams": "CFAQui8iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "endpoint": { + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "canonicalBaseUrl": "/@EEVblog", + "params": "EghmZWF0dXJlZA%3D%3D" + }, + "clickTrackingParams": "CE8Q8JMBGAUiEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@EEVblog/featured", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "selected": false, + "title": "Home", + "trackingParams": "CE8Q8JMBGAUiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + { + "tabRenderer": { + "content": { + "sectionListRenderer": { + "disablePullToRefresh": true, + "trackingParams": "CE4Qui8iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "endpoint": { + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "canonicalBaseUrl": "/@EEVblog", + "params": "EgZ2aWRlb3M%3D" + }, + "clickTrackingParams": "CE0Q8JMBGAYiEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@EEVblog/videos", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "selected": false, + "title": "Videos", + "trackingParams": "CE0Q8JMBGAYiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + { + "tabRenderer": { + "content": { + "sectionListRenderer": { + "disablePullToRefresh": true, + "trackingParams": "CEwQui8iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "endpoint": { + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "canonicalBaseUrl": "/@EEVblog", + "params": "EgZzaG9ydHM%3D" + }, + "clickTrackingParams": "CEsQ8JMBGAciEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@EEVblog/shorts", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "selected": false, + "title": "Shorts", + "trackingParams": "CEsQ8JMBGAciEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + { + "tabRenderer": { + "content": { + "sectionListRenderer": { + "disablePullToRefresh": true, + "trackingParams": "CEoQui8iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "endpoint": { + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "canonicalBaseUrl": "/@EEVblog", + "params": "EgdzdHJlYW1z" + }, + "clickTrackingParams": "CEkQ8JMBGAgiEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@EEVblog/streams", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "selected": false, + "title": "Live", + "trackingParams": "CEkQ8JMBGAgiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + { + "tabRenderer": { + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "gridRenderer": { + "items": [ + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHvQr28klnTUYNb_7zb9R_cS", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4141880, + "lightTheme": 4141880 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/Gr6gBjDxP5M/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAA5HELaUXaEkcveQ9AYJ3VlXgu_w", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 3352877, + "lightTheme": 3352877 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "9 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9664386, + "lightTheme": 10058631 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvQr28klnTUYNb_7zb9R_cS" + }, + "clickTrackingParams": "CEgQ0sQMGAAiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHvQr28klnTUYNb_7zb9R_cS", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Alkaline Battery Leakage" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEgQ0sQMGAAiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Gr6gBjDxP5M&list=PLvOlSehNtuHvQr28klnTUYNb_7zb9R_cS", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2UXIyOGtsblRVWU5iXzd6YjlSX2NT" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHvQr28klnTUYNb_7zb9R_cS", + "videoId": "Gr6gBjDxP5M", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&odepv=1&id=1abea00630f13f93&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343578 + }, + "trackingParams": "CEgQ0sQMGAAiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHv268f0mW5m1t_hq_RVGRSA", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 2963775, + "lightTheme": 2963775 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/XYdmX8w8xwI/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCqmf6TGfDinNXhgU29ZxOkv2u9sQ", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2370867, + "lightTheme": 2370867 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "5 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 7768467, + "lightTheme": 7113113 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHv268f0mW5m1t_hq_RVGRSA" + }, + "clickTrackingParams": "CEcQ0sQMGAEiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHv268f0mW5m1t_hq_RVGRSA", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Jellybean Components Series" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEcQ0sQMGAEiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=XYdmX8w8xwI&list=PLvOlSehNtuHv268f0mW5m1t_hq_RVGRSA", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2MjY4ZjBtVzVtMXRfaHFfUlZHUlNB" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHv268f0mW5m1t_hq_RVGRSA", + "videoId": "XYdmX8w8xwI", + "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&odepv=1&id=5d87665fcc3cc702&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343577 + }, + "trackingParams": "CEcQ0sQMGAEiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHu46I7nFuUg3LC3PpiWTR4f", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 1326898, + "lightTheme": 1326898 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/uUXxY6gA-7g/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAlIVvQ4Axx40Xa_i8F56qmppXEXg", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 796190, + "lightTheme": 796190 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "11 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 7376003, + "lightTheme": 7051659 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHu46I7nFuUg3LC3PpiWTR4f" + }, + "clickTrackingParams": "CEYQ0sQMGAIiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHu46I7nFuUg3LC3PpiWTR4f", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Tandy Electronics / Radio Shack & Computers" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEYQ0sQMGAIiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=uUXxY6gA-7g&list=PLvOlSehNtuHu46I7nFuUg3LC3PpiWTR4f", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1NDZJN25GdVVnM0xDM1BwaVdUUjRm" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHu46I7nFuUg3LC3PpiWTR4f", + "videoId": "uUXxY6gA-7g", + "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&odepv=1&id=b945f163a800fbb8&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343576 + }, + "trackingParams": "CEYQ0sQMGAIiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHuS01_RNCnvpzyk7bycYCmM", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4144959, + "lightTheme": 4144959 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/m_8jh_MpWBE/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBx6U5iikp5rSO78dIWdy1RQ_BLNQ", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 3355443, + "lightTheme": 3355443 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "4 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9211020, + "lightTheme": 10066329 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHuS01_RNCnvpzyk7bycYCmM" + }, + "clickTrackingParams": "CEUQ0sQMGAMiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHuS01_RNCnvpzyk7bycYCmM", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Open Source Hardware" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEUQ0sQMGAMiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=m_8jh_MpWBE&list=PLvOlSehNtuHuS01_RNCnvpzyk7bycYCmM", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1UzAxX1JOQ252cHp5azdieWNZQ21N" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHuS01_RNCnvpzyk7bycYCmM", + "videoId": "m_8jh_MpWBE", + "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&odepv=1&id=9bff2387f3295811&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343575 + }, + "trackingParams": "CEUQ0sQMGAMiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHuwwQ1fpquOJuA5MSfD4iD6", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4144959, + "lightTheme": 4144959 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/ymJc5oxthlw/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDAOiw39aJajjAdroLnuj_fh60Ryw", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2500134, + "lightTheme": 2500134 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "22 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9211020, + "lightTheme": 10066329 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHuwwQ1fpquOJuA5MSfD4iD6" + }, + "clickTrackingParams": "CEQQ0sQMGAQiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHuwwQ1fpquOJuA5MSfD4iD6", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Fluke Multimeters" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEQQ0sQMGAQiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ymJc5oxthlw&list=PLvOlSehNtuHuwwQ1fpquOJuA5MSfD4iD6", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1d3dRMWZwcXVPSnVBNU1TZkQ0aUQ2" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHuwwQ1fpquOJuA5MSfD4iD6", + "videoId": "ymJc5oxthlw", + "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&odepv=1&id=ca625ce68c6d865c&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343574 + }, + "trackingParams": "CEQQ0sQMGAQiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHs2LwEdDwTp3n7mxb-MyBbo", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 2766399, + "lightTheme": 2766399 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/lJ3q9RHIatU/hqdefault.jpg?sqp=-oaymwExCOADEI4CSFryq4qpAyMIARUAAIhCGAHwAQH4Af4JgALQBYoCDAgAEAEYQyBXKGUwDw==&rs=AOn4CLBaaQaTJzi7H-zjwSsTlNJdBsyqvQ", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2239283, + "lightTheme": 2239283 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "5 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 7767955, + "lightTheme": 7046553 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHs2LwEdDwTp3n7mxb-MyBbo" + }, + "clickTrackingParams": "CEMQ0sQMGAUiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHs2LwEdDwTp3n7mxb-MyBbo", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "EEVacademy Digital Design Tutorial Series" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEMQ0sQMGAUiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=lJ3q9RHIatU&list=PLvOlSehNtuHs2LwEdDwTp3n7mxb-MyBbo", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUhzMkx3RWREd1RwM243bXhiLU15QmJv" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHs2LwEdDwTp3n7mxb-MyBbo", + "videoId": "lJ3q9RHIatU", + "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&odepv=1&id=949deaf511c86ad5&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343573 + }, + "trackingParams": "CEMQ0sQMGAUiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHu2v8THrRMt8E9ziHtRXPm7", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 3947580, + "lightTheme": 3947580 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/g5_Ts9SWbYs/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBmZPW6EiAvTCsI86BFg4BxXLj66A", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2500134, + "lightTheme": 2500134 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "3 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9211020, + "lightTheme": 10066329 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHu2v8THrRMt8E9ziHtRXPm7" + }, + "clickTrackingParams": "CEIQ0sQMGAYiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHu2v8THrRMt8E9ziHtRXPm7", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "AI / ChatGPT" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEIQ0sQMGAYiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=g5_Ts9SWbYs&list=PLvOlSehNtuHu2v8THrRMt8E9ziHtRXPm7", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1MnY4VEhyUk10OEU5emlIdFJYUG03" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHu2v8THrRMt8E9ziHtRXPm7", + "videoId": "g5_Ts9SWbYs", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&odepv=1&id=839fd3b3d4966d8b&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343572 + }, + "trackingParams": "CEIQ0sQMGAYiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHvXuXRmoBUys09Dwi1heNii", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 2570841, + "lightTheme": 2570841 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/ndvJtQ8nxV4/hqdefault.jpg?sqp=-oaymwExCOADEI4CSFryq4qpAyMIARUAAIhCGAHwAQH4AbYIgAKAD4oCDAgAEAEYNyBTKH8wDw==&rs=AOn4CLDD0qOLs38KPJtqdG6zCeVLQMf62Q", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 1450291, + "lightTheme": 1450291 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "3 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 7766419, + "lightTheme": 7044505 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvXuXRmoBUys09Dwi1heNii" + }, + "clickTrackingParams": "CEEQ0sQMGAciEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHvXuXRmoBUys09Dwi1heNii", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Shorts" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEEQ0sQMGAciEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ndvJtQ8nxV4&list=PLvOlSehNtuHvXuXRmoBUys09Dwi1heNii", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2WHVYUm1vQlV5czA5RHdpMWhlTmlp" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHvXuXRmoBUys09Dwi1heNii", + "videoId": "ndvJtQ8nxV4", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&odepv=1&id=9ddbc9b50f27c55e&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343571 + }, + "trackingParams": "CEEQ0sQMGAciEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHv3gxNg5BGoZJJu9htoAGB6", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 605999, + "lightTheme": 605999 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/L9Wrv7nW-S8/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDiAT5izyig1ntMSUhvSOVuYSsG1Q", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 337436, + "lightTheme": 337436 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "1 video" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 7376003, + "lightTheme": 7051659 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHv3gxNg5BGoZJJu9htoAGB6" + }, + "clickTrackingParams": "CEAQ0sQMGAgiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHv3gxNg5BGoZJJu9htoAGB6", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Microcontrollers" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEAQ0sQMGAgiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=L9Wrv7nW-S8&list=PLvOlSehNtuHv3gxNg5BGoZJJu9htoAGB6", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2M2d4Tmc1QkdvWkpKdTlodG9BR0I2" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHv3gxNg5BGoZJJu9htoAGB6", + "videoId": "L9Wrv7nW-S8", + "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&odepv=1&id=2fd5abbfb9d6f92f&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343570 + }, + "trackingParams": "CEAQ0sQMGAgiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHvllTQ-vwvY26E3Bvrov93Y", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4143153, + "lightTheme": 4143153 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/1xicZF9glH0/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAFb2FcbpdtAG1xLjmdkdIm1hFvgA", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 3353895, + "lightTheme": 3353895 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "4 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9667958, + "lightTheme": 10061686 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvllTQ-vwvY26E3Bvrov93Y" + }, + "clickTrackingParams": "CD8Q0sQMGAkiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHvllTQ-vwvY26E3Bvrov93Y", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Bypass Capacitors" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CD8Q0sQMGAkiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=1xicZF9glH0&list=PLvOlSehNtuHvllTQ-vwvY26E3Bvrov93Y", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2bGxUUS12d3ZZMjZFM0J2cm92OTNZ" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHvllTQ-vwvY26E3Bvrov93Y", + "videoId": "1xicZF9glH0", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&odepv=1&id=d7189c645f60947d&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343569 + }, + "trackingParams": "CD8Q0sQMGAkiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHtOV3AEwhuea4TnviddKfAj", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 2766143, + "lightTheme": 2766143 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/4yosozyeIP4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAkwsCiJjFkWhYxtcg5NgfnQbkZrA", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2173491, + "lightTheme": 2173491 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "3 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 7767443, + "lightTheme": 7045785 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHtOV3AEwhuea4TnviddKfAj" + }, + "clickTrackingParams": "CD4Q0sQMGAoiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHtOV3AEwhuea4TnviddKfAj", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "MacGyver Project" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CD4Q0sQMGAoiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=4yosozyeIP4&list=PLvOlSehNtuHtOV3AEwhuea4TnviddKfAj", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0T1YzQUV3aHVlYTRUbnZpZGRLZkFq" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHtOV3AEwhuea4TnviddKfAj", + "videoId": "4yosozyeIP4", + "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&odepv=1&id=e32a2ca33c9e20fe&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343568 + }, + "trackingParams": "CD4Q0sQMGAoiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 3489595, + "lightTheme": 3489595 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/S3R4r2xvVYQ/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLB7HH5drG-33c1SyRe9kyZBrXvm3A", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2106915, + "lightTheme": 2106915 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "1 video" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 7703682, + "lightTheme": 8427918 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF" + }, + "clickTrackingParams": "CD0Q0sQMGAsiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Calculators" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CD0Q0sQMGAsiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=S3R4r2xvVYQ&list=PLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1dkhFNUdRclFKeFdYSGRtVzJsNUlG" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF", + "videoId": "S3R4r2xvVYQ", + "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&odepv=1&id=4b7478af6c6f5584&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343567 + }, + "trackingParams": "CD0Q0sQMGAsiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4142388, + "lightTheme": 4142388 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/WPyEFB4cHkA/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAzBuQFV8T9hM8adlPvv58C9TeDug", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 3353129, + "lightTheme": 3353129 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "9 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9665400, + "lightTheme": 10059644 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ" + }, + "clickTrackingParams": "CDwQ0sQMGAwiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "BM235" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDwQ0sQMGAwiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=WPyEFB4cHkA&list=PLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUhzNndSd1ZTYUVyVTBCRW5MaUhmbktK" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ", + "videoId": "WPyEFB4cHkA", + "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&odepv=1&id=58fc84141e1c1e40&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343566 + }, + "trackingParams": "CDwQ0sQMGAwiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4144439, + "lightTheme": 4144439 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/uus_cpZiqsU/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCqdsjWVFaLOkEcXgbZD2Eca8MnuQ", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2631459, + "lightTheme": 2631459 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "3 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9209977, + "lightTheme": 12564901 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu" + }, + "clickTrackingParams": "CDsQ0sQMGA0iEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Vibration Measurement" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDsQ0sQMGA0iEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=uus_cpZiqsU&list=PLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1NGswWmtLRkxzeXNTQjVpYXZhNlF1" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu", + "videoId": "uus_cpZiqsU", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&odepv=1&id=baeb3f729662aac5&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343565 + }, + "trackingParams": "CDsQ0sQMGA0iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4139562, + "lightTheme": 4139562 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/uq1DMWtjL2U/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAbgb1Jdb5P69JGdZQ-a8asLLyYdA", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 3351073, + "lightTheme": 3351073 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "6 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9664374, + "lightTheme": 10054763 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI" + }, + "clickTrackingParams": "CDoQ0sQMGA4iEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Component Selection" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDoQ0sQMGA4iEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=uq1DMWtjL2U&list=PLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0ZFFGLW01VUZaNUdFakFCYWRJM2tJ" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI", + "videoId": "uq1DMWtjL2U", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&odepv=1&id=baad43316b632f65&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343564 + }, + "trackingParams": "CDoQ0sQMGA4iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4143917, + "lightTheme": 4143917 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/oIImmlfCyzo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBxApgyGu3dNXRGoqLctVUnESpEIA", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2630940, + "lightTheme": 2630940 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "23 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9209200, + "lightTheme": 12562823 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9" + }, + "clickTrackingParams": "CDkQ0sQMGA8iEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Solar Roadways" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDkQ0sQMGA8iEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=oIImmlfCyzo&list=PLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0bG5kUFVTT1Bnc3VqVWRxMWM1TXI5" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9", + "videoId": "oIImmlfCyzo", + "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&odepv=1&id=a082269a57c2cb3a&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343563 + }, + "trackingParams": "CDkQ0sQMGA8iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4142646, + "lightTheme": 4142646 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/rrPtvYYJ2-g/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBEVc71xxSjJ-xlA_dDQaYIjdHyUw", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 3353387, + "lightTheme": 3353387 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "3 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9666173, + "lightTheme": 10060674 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-" + }, + "clickTrackingParams": "CDgQ0sQMGBAiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Electronics Tutorials - AC Circuit Theory Series" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDgQ0sQMGBAiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=rrPtvYYJ2-g&list=PLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2RDZNXzdXZU4wNzFPVnNaRkUwX3Et" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-", + "videoId": "rrPtvYYJ2-g", + "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&odepv=1&id=aeb3edbd8609dbe8&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343562 + }, + "trackingParams": "CDgQ0sQMGBAiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4143159, + "lightTheme": 4143159 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/xSRe_4TQbuo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDP4V24_MG6vzvUZsHep9WFSCCY6Q", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 3353900, + "lightTheme": 3353900 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "8 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9206905, + "lightTheme": 10061700 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK" + }, + "clickTrackingParams": "CDcQ0sQMGBEiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Electronics Tutorial - DC Fundamentals" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDcQ0sQMGBEiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=xSRe_4TQbuo&list=PLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0VkxxMk1EUEl6ODJCV01JWmN1d2hL" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK", + "videoId": "xSRe_4TQbuo", + "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&odepv=1&id=c5245eff84d06eea&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343561 + }, + "trackingParams": "CDcQ0sQMGBEiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4144959, + "lightTheme": 4144959 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/OiAmER1OJh4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAXeGAvEc8y3pEsPUxWdsNIP9UmPw", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 3355443, + "lightTheme": 3355443 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "14 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9211020, + "lightTheme": 10066329 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE" + }, + "clickTrackingParams": "CDYQ0sQMGBIiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Oscilloscope Probing" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDYQ0sQMGBIiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=OiAmER1OJh4&list=PLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2SURmVzN4MnA0Qlk2bDRSWWdmQkpF" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE", + "videoId": "OiAmER1OJh4", + "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&odepv=1&id=3a2026111d4e261e&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343560 + }, + "trackingParams": "CDYQ0sQMGBIiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 5842213, + "lightTheme": 5842213 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/8ruFVmxf0zs/hqdefault.jpg?sqp=-oaymwExCOADEI4CSFryq4qpAyMIARUAAIhCGAHwAQH4Af4JgALQBYoCDAgAEAEYfyA1KDUwDw==&rs=AOn4CLD6PMawyYXKe8KT1-Y6vWjQc2xIDw", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 3347733, + "lightTheme": 3347733 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "9 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9664118, + "lightTheme": 10054507 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu" + }, + "clickTrackingParams": "CDUQ0sQMGBMiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Thermal Design" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDUQ0sQMGBMiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=8ruFVmxf0zs&list=PLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1NkpqYjhVODJlS1FmdktoSlZsMEJ1" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu", + "videoId": "8ruFVmxf0zs", + "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&odepv=1&id=f2bb85566c5fd33b&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343559 + }, + "trackingParams": "CDUQ0sQMGBMiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4141362, + "lightTheme": 4141362 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/CPcZm1Tu5VI/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCsm8De0QaHPaeCZqxMp_F464fWzg", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 3352360, + "lightTheme": 3352360 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "9 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9664120, + "lightTheme": 10057593 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC" + }, + "clickTrackingParams": "CDQQ0sQMGBQiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Electric Cars" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDQQ0sQMGBQiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=CPcZm1Tu5VI&list=PLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUhzLVgyQXdnMzNQQ0JOclAyQkdGVmhD" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC", + "videoId": "CPcZm1Tu5VI", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&odepv=1&id=08f7199b54eee552&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343558 + }, + "trackingParams": "CDQQ0sQMGBQiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 3355443, + "lightTheme": 3355443 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/0AEVilxXAAo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCjotFuRjPPBHd2LWzt3lviPj9HaA", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2500134, + "lightTheme": 2500134 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "3 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9211020, + "lightTheme": 10066329 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa" + }, + "clickTrackingParams": "CDMQ0sQMGBUiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Designing a better uCurrent" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDMQ0sQMGBUiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=0AEVilxXAAo&list=PLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1TE9ETFRlcTNQTS1PSlJQMm56TlVh" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa", + "videoId": "0AEVilxXAAo", + "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&odepv=1&id=d001158a5c57000a&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343557 + }, + "trackingParams": "CDMQ0sQMGBUiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4144959, + "lightTheme": 4144959 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/lYmfVMWbIHQ/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBtygEqMXx7Lwe5SuBWt2q0CSahYA", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2500134, + "lightTheme": 2500134 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "8 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9211020, + "lightTheme": 10066329 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA" + }, + "clickTrackingParams": "CDIQ0sQMGBYiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "EMC Compliance & Measurement" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDIQ0sQMGBYiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=lYmfVMWbIHQ&list=PLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0dlRLUDRSVE5XMS0wOEttenkxcHZB" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA", + "videoId": "lYmfVMWbIHQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&odepv=1&id=95899f54c59b2074&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343556 + }, + "trackingParams": "CDIQ0sQMGBYiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4342338, + "lightTheme": 4342338 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/nTpE1Nw3Yy4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAbPl28_i7isizY6A1t2_c6gV8BAQ", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2500134, + "lightTheme": 2500134 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "2 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9211020, + "lightTheme": 10066329 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv" + }, + "clickTrackingParams": "CDEQ0sQMGBciEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Power Counter Display Project" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDEQ0sQMGBciEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=nTpE1Nw3Yy4&list=PLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1VVRwQ3JUVlg3QmRVNjhsMmFWcU12" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv", + "videoId": "nTpE1Nw3Yy4", + "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&odepv=1&id=9d3a44d4dc37632e&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343555 + }, + "trackingParams": "CDEQ0sQMGBciEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHvm120Tq40nKrM5SUBlolN3", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4143923, + "lightTheme": 4143923 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/gQ7TTuiDH1M/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBMnucUil90WeDSIeFz8mZCOtEv9g", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2631201, + "lightTheme": 2631201 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "3 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9208690, + "lightTheme": 12563099 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvm120Tq40nKrM5SUBlolN3" + }, + "clickTrackingParams": "CDAQ0sQMGBgiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHvm120Tq40nKrM5SUBlolN3", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Live - Ask Dave" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDAQ0sQMGBgiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=gQ7TTuiDH1M&list=PLvOlSehNtuHvm120Tq40nKrM5SUBlolN3", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2bTEyMFRxNDBuS3JNNVNVQmxvbE4z" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHvm120Tq40nKrM5SUBlolN3", + "videoId": "gQ7TTuiDH1M", + "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&odepv=1&id=810ed34ee8831f53&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343554 + }, + "trackingParams": "CDAQ0sQMGBgiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4142380, + "lightTheme": 4142380 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/r45r4rV5JOI/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCn4kGWcjBOhk3vN8QPMDa9L3mkKA", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 3353379, + "lightTheme": 3353379 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "10 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9667702, + "lightTheme": 10060139 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC" + }, + "clickTrackingParams": "CC8Q0sQMGBkiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Padauk Microcontroller" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CC8Q0sQMGBkiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=r45r4rV5JOI&list=PLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUhzaUY5M0tPTG9GMUtBSEFybUlXOWxD" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC", + "videoId": "r45r4rV5JOI", + "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&odepv=1&id=af8e6be2b57924e2&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343553 + }, + "trackingParams": "CC8Q0sQMGBkiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4143905, + "lightTheme": 4143905 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/WopuF9vD7KE/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBv5buh3qMs4feQaPj6Fy6bxl_vuA", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2630933, + "lightTheme": 2630933 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "1 video" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9209968, + "lightTheme": 12564101 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED" + }, + "clickTrackingParams": "CC4Q0sQMGBoiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Other Debunking Videos" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CC4Q0sQMGBoiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=WopuF9vD7KE&list=PLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh2eFR6Qkx3VUZ3NE15NHJ0ck5GekVE" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED", + "videoId": "WopuF9vD7KE", + "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&odepv=1&id=5a8a6e17dbc3eca1&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343552 + }, + "trackingParams": "CC4Q0sQMGBoiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 3618615, + "lightTheme": 3618615 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/qHbkw0Gm7pk/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCJBYXTDttGHTm51j3bfwqxOqVFig", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2631720, + "lightTheme": 2631720 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "9 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9211020, + "lightTheme": 12566463 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q" + }, + "clickTrackingParams": "CC0Q0sQMGBsiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Audio & Speakers" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CC0Q0sQMGBsiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=qHbkw0Gm7pk&list=PLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0MnBKN1g1dHVtdU00V2EzcjFPQzdR" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q", + "videoId": "qHbkw0Gm7pk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&odepv=1&id=a876e4c341a6ee99&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343551 + }, + "trackingParams": "CC0Q0sQMGBsiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 3424056, + "lightTheme": 3424056 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/g9umAQ1-an4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCB5jNm9U-rypnpthK_N321LpYWew", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 2041377, + "lightTheme": 2041377 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "16 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 7507068, + "lightTheme": 8231303 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi" + }, + "clickTrackingParams": "CCwQ0sQMGBwiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Cameras" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCwQ0sQMGBwiEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=g9umAQ1-an4&list=PLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh0WDdPZWFyV2RtcUd6cWl1NERIS1dp" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi", + "videoId": "g9umAQ1-an4", + "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&odepv=1&id=83dba6010d7e6a7e&ip=79.205.219.142&initcwndbps=2530000&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343550 + }, + "trackingParams": "CCwQ0sQMGBwiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "lockupViewModel": { + "contentId": "PLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv", + "contentImage": { + "collectionThumbnailViewModel": { + "primaryThumbnail": { + "thumbnailViewModel": { + "backgroundColor": { + "darkTheme": 4143668, + "lightTheme": 4143668 + }, + "image": { + "sources": [ + { + "height": 270, + "url": "https://i.ytimg.com/vi/ibPgfzd9zd8/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDe3IXT88HR3XxnxfqrpAxh6pfYMg", + "width": 480 + } + ] + }, + "overlays": [ + { + "thumbnailOverlayBadgeViewModel": { + "position": "THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END", + "thumbnailBadges": [ + { + "thumbnailBadgeViewModel": { + "backgroundColor": { + "darkTheme": 3354153, + "lightTheme": 3354153 + }, + "badgeStyle": "THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT", + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAYLISTS" + } + } + ] + }, + "text": "7 videos" + } + } + ] + } + }, + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "text": { + "content": "Play all", + "styleRuns": [ + { + "length": 8, + "startIndex": 0 + } + ] + } + } + } + ] + } + }, + "stackColor": { + "darkTheme": 9668217, + "lightTheme": 10062717 + } + } + }, + "contentType": "LOCKUP_CONTENT_TYPE_PLAYLIST", + "metadata": { + "lockupMetadataViewModel": { + "metadata": { + "contentMetadataViewModel": { + "delimiter": " • ", + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "commandRuns": [ + { + "length": 18, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "VLPLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv" + }, + "clickTrackingParams": "CCsQ0sQMGB0iEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "View full playlist", + "styleRuns": [ + { + "length": 18, + "startIndex": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + } + ] + } + }, + "title": { + "content": "Cryptocurrency" + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCsQ0sQMGB0iEwjenomis8OKAxVyzkkHHSt3L8kyBmctaGlnaFoYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RmgEFEPI4GGg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ibPgfzd9zd8&list=PLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTHZPbFNlaE50dUh1LVRhTlJwMjdfUGlYakJHNXdZOUd2" + } + }, + "params": "OAI%3D", + "playlistId": "PLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv", + "videoId": "ibPgfzd9zd8", + "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&odepv=1&id=89b3e07f377dcddf&ip=79.205.219.142&initcwndbps=2556250&mt=1735145597&oweuc=" + } + } + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 205394, + "veCounter": 400343549 + }, + "trackingParams": "CCsQ0sQMGB0iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + } + }, + { + "continuationItemRenderer": { + "continuationEndpoint": { + "clickTrackingParams": "CCoQ6IsCGAAiEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "sendPost": true + } + }, + "continuationCommand": { + "request": "CONTINUATION_REQUEST_TYPE_BROWSE", + "token": "4qmFsgLCARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGnRFZ2x3YkdGNWJHbHpkSE1ZQXlBQk1BRTRBZW9EUEVOblRrUlJhbEZUU2tKSmFWVkZlREpVTW5oVVdsZG9UMlJJVmtsa1V6RlZXVlUxVTJORVNUTllNVUp3VjBkd1ExSjZWak5YVkd4SVpHbG5PQSUzRCUzRJoCL2Jyb3dzZS1mZWVkVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RcGxheWxpc3RzMTA0" + } + }, + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN" + } + } + ], + "targetId": "browse-feedUC2DjFE7Xf11URZqWBigcVOQplaylists104", + "trackingParams": "CCoQ6IsCGAAiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + ], + "trackingParams": "CCkQuy8YACITCN6eiaKzw4oDFXLOSQcdK3cvyQ==" + } + } + ], + "disablePullToRefresh": true, + "subMenu": { + "channelSubMenuRenderer": { + "contentTypeSubMenuItems": [ + { + "endpoint": { + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "canonicalBaseUrl": "/@EEVblog", + "params": "EglwbGF5bGlzdHMgAQ%3D%3D" + }, + "clickTrackingParams": "CCUQui8iEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@EEVblog/playlists?view=1", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "selected": true, + "title": "Created playlists" + } + ], + "sortSetting": { + "sortFilterSubMenuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Sort by" + } + }, + "icon": { + "iconType": "SORT" + }, + "subMenuItems": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "canonicalBaseUrl": "/@EEVblog", + "params": "EglwbGF5bGlzdHMYAyABMAE%3D" + }, + "clickTrackingParams": "CCgQ48AHGAAiEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@EEVblog/playlists?view=1&sort=dd&flow=grid", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "selected": true, + "title": "Date added (newest)", + "trackingParams": "CCgQ48AHGAAiEwjenomis8OKAxVyzkkHHSt3L8k=" + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "canonicalBaseUrl": "/@EEVblog", + "params": "EglwbGF5bGlzdHMYBCABMAE%3D" + }, + "clickTrackingParams": "CCcQ48AHGAEiEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@EEVblog/playlists?view=1&sort=lad&flow=grid", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "selected": false, + "title": "Last video added", + "trackingParams": "CCcQ48AHGAEiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + ], + "title": "Sort by", + "trackingParams": "CCYQgdoEIhMI3p6JorPDigMVcs5JBx0rdy_J" + } + } + } + }, + "targetId": "browse-feedUC2DjFE7Xf11URZqWBigcVOQplaylists", + "trackingParams": "CCUQui8iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "endpoint": { + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "canonicalBaseUrl": "/@EEVblog", + "params": "EglwbGF5bGlzdHM%3D" + }, + "clickTrackingParams": "CCQQ8JMBGAkiEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@EEVblog/playlists", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "selected": true, + "title": "Playlists", + "trackingParams": "CCQQ8JMBGAkiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + { + "tabRenderer": { + "content": { + "sectionListRenderer": { + "disablePullToRefresh": true, + "trackingParams": "CCMQui8iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "endpoint": { + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "canonicalBaseUrl": "/@EEVblog", + "params": "Egljb21tdW5pdHk%3D" + }, + "clickTrackingParams": "CCIQ8JMBGAoiEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@EEVblog/community", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "selected": false, + "title": "Posts", + "trackingParams": "CCIQ8JMBGAoiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + { + "tabRenderer": { + "content": { + "sectionListRenderer": { + "disablePullToRefresh": true, + "trackingParams": "CCEQui8iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "endpoint": { + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "canonicalBaseUrl": "/@EEVblog", + "params": "EgVzdG9yZQ%3D%3D" + }, + "clickTrackingParams": "CCAQ8JMBGAsiEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@EEVblog/store", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "selected": false, + "title": "Store", + "trackingParams": "CCAQ8JMBGAsiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + { + "expandableTabRenderer": { + "endpoint": { + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "canonicalBaseUrl": "/@EEVblog", + "params": "EgZzZWFyY2g%3D" + }, + "clickTrackingParams": "CAAQhGciEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@EEVblog/search", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "selected": false, + "title": "Search" + } + } + ] + } + }, + "header": { + "pageHeaderRenderer": { + "content": { + "pageHeaderViewModel": { + "actions": { + "flexibleActionsViewModel": { + "actionsRows": [ + { + "actions": [ + { + "buttonViewModel": { + "accessibilityText": "Subscribe", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "isFullWidth": false, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBkQjqULIhMI3p6JorPDigMVcs5JBx0rdy_J", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CBwQ_YYEIhMI3p6JorPDigMVcs5JBx0rdy_JMglzdWJzY3JpYmU=", + "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%252F%2540EEVblog%252Fplaylists%26continue_action%3DQUFFLUhqbFNzaWxPaHhXdk5sbjFtd0tWcTZKOHI2aUMyUXxBQ3Jtc0tuSUZrTDFZTUxkWDBSSHl2ZmM3SkVxSFE2WXVVUlpqNWJmc2N2aGpFQ2h2YnplY3JjRnlCME53aVV4VFdGa3h0ZnV3RXdnY1RDazBnNUlOdXRnQmx5WUwxSHdMTURrZjNZNG1XRHo4Nm94NklSbnVTWno5bV82eEdVbDN0c2YxNXVGejM1NUtBbWYwY01DSE5zb1lrb0dTSHRWLVhsLVV3alJUbnpqRHRQSkZlUTl5bjdfaGdpM0Rua0FnUmx6eGJtR3dJNlI&hl=en&ec=66429", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN" + } + }, + "signInEndpoint": { + "continueAction": "QUFFLUhqbFNzaWxPaHhXdk5sbjFtd0tWcTZKOHI2aUMyUXxBQ3Jtc0tuSUZrTDFZTUxkWDBSSHl2ZmM3SkVxSFE2WXVVUlpqNWJmc2N2aGpFQ2h2YnplY3JjRnlCME53aVV4VFdGa3h0ZnV3RXdnY1RDazBnNUlOdXRnQmx5WUwxSHdMTURrZjNZNG1XRHo4Nm94NklSbnVTWno5bV82eEdVbDN0c2YxNXVGejM1NUtBbWYwY01DSE5zb1lrb0dTSHRWLVhsLVV3alJUbnpqRHRQSkZlUTl5bjdfaGdpM0Rua0FnUmx6eGJtR3dJNlI", + "idamTag": "66429", + "nextEndpoint": { + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "canonicalBaseUrl": "/@EEVblog", + "params": "EglwbGF5bGlzdHM%3D" + }, + "clickTrackingParams": "CBwQ_YYEIhMI3p6JorPDigMVcs5JBx0rdy_J", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@EEVblog/playlists", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Sign in" + }, + "trackingParams": "CBwQ_YYEIhMI3p6JorPDigMVcs5JBx0rdy_J" + } + }, + "content": { + "simpleText": "Sign in to subscribe to this channel." + }, + "title": { + "simpleText": "Want to subscribe to this channel?" + } + } + } + } + } + }, + "state": "BUTTON_VIEW_MODEL_STATE_ACTIVE", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "title": "Subscribe", + "trackingParams": "CBkQjqULIhMI3p6JorPDigMVcs5JBx0rdy_J", + "type": "BUTTON_VIEW_MODEL_TYPE_FILLED" + } + }, + { + "buttonViewModel": { + "accessibilityText": "Join this channel", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "isFullWidth": false, + "loggingDirectives": { + "clientVeSpec": { + "uiType": 123681, + "veCounter": 400343546 + }, + "trackingParams": "CBoQocYHGAIiEwjenomis8OKAxVyzkkHHSt3L8k=", + "visibility": { + "types": "12" + } + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBoQocYHGAIiEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CBsQ8FsiEwjenomis8OKAxVyzkkHHSt3L8k=", + "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%3Dhttps%253A%252F%252Fwww.youtube.com%252Fyoutubei%252Fv1%252Fbrowse%253FprettyPrint%253Dfalse&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN" + } + }, + "signInEndpoint": { + "hack": true + } + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_BRAND", + "text": { + "simpleText": "Sign in" + }, + "trackingParams": "CBsQ8FsiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "content": { + "runs": [ + { + "text": "Sign in to become a member." + } + ] + }, + "title": { + "runs": [ + { + "text": "Want to join this channel?" + } + ] + } + } + } + } + } + }, + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "CBoQocYHGAIiEwjenomis8OKAxVyzkkHHSt3L8k=", + "logFlowLoggingEventCommand": { + "flowEventMetadata": { + "sponsorshipsPurchaseContext": { + "joinMethod": "SPONSORSHIPS_JOIN_METHOD_CHANNEL_PAGE_BUTTON" + } + }, + "flowEventNamespace": "FLOW_EVENT_NAMESPACE_SPONSORSHIPS_PURCHASE", + "flowEventType": 1, + "flowType": "FLOW_TYPE_SPONSORSHIPS_PURCHASE" + } + } + }, + "state": "BUTTON_VIEW_MODEL_STATE_ACTIVE", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "targetId": "sponsorships-button", + "title": "Join", + "trackingParams": "CBoQocYHGAIiEwjenomis8OKAxVyzkkHHSt3L8k=", + "type": "BUTTON_VIEW_MODEL_TYPE_OUTLINE" + } + } + ] + } + ], + "minimumRowHeight": 44, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 184974, + "veCounter": 400343545 + }, + "trackingParams": "CBkQjqULIhMI3p6JorPDigMVcs5JBx0rdy_J", + "visibility": { + "types": "12" + } + } + } + } + } + }, + "attribution": { + "attributionViewModel": { + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 184973, + "veCounter": 400343543 + }, + "trackingParams": "CA8QjaULIhMI3p6JorPDigMVcs5JBx0rdy_J", + "visibility": { + "types": "12" + } + } + } + }, + "suffix": { + "commandRuns": [ + { + "length": 17, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CA8QjaULIhMI3p6JorPDigMVcs5JBx0rdy_J", + "showEngagementPanelEndpoint": { + "engagementPanel": { + "engagementPanelSectionListRenderer": { + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "continuationEndpoint": { + "clickTrackingParams": "CBIQuy8YACITCN6eiaKzw4oDFXLOSQcdK3cvyQ==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "sendPost": true + } + }, + "continuationCommand": { + "request": "CONTINUATION_REQUEST_TYPE_BROWSE", + "token": "4qmFsgJgEhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1EaRDhnWXJHaW1hQVNZS0pEWTVZVGt4WVRrMExUQXdNREF0TWpjeVlpMDVaR1k1TFdRMFpqVTBOMlZsT1dGbVl3JTNEJTNE" + } + }, + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN" + } + } + ], + "sectionIdentifier": "69a91a94-0000-272b-9df9-d4f547ee9afc", + "targetId": "69a91a94-0000-272b-9df9-d4f547ee9afc", + "trackingParams": "CBIQuy8YACITCN6eiaKzw4oDFXLOSQcdK3cvyQ==" + } + } + ], + "scrollPaneStyle": { + "scrollable": true + }, + "trackingParams": "CBEQui8iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "header": { + "engagementPanelTitleHeaderRenderer": { + "title": { + "simpleText": "About" + }, + "trackingParams": "CBAQ040EIhMI3p6JorPDigMVcs5JBx0rdy_J", + "visibilityButton": { + "buttonRenderer": { + "accessibility": { + "label": "Close" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Close" + } + }, + "command": { + "changeEngagementPanelVisibilityAction": { + "targetId": "69a91a93-0000-272b-9df9-d4f547ee9afc", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN" + }, + "clickTrackingParams": "CBMQ8FsiEwjenomis8OKAxVyzkkHHSt3L8k=" + }, + "icon": { + "iconType": "CLOSE" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CBMQ8FsiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + }, + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "69a91a93-0000-272b-9df9-d4f547ee9afc" + }, + "targetId": "69a91a93-0000-272b-9df9-d4f547ee9afc" + } + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + }, + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "69a91a93-0000-272b-9df9-d4f547ee9afc" + } + } + } + }, + "startIndex": 0 + } + ], + "content": "and 12 more links", + "styleRuns": [ + { + "fontName": "", + "fontSize": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + }, + "text": { + "commandRuns": [ + { + "length": 11, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CA8QjaULIhMI3p6JorPDigMVcs5JBx0rdy_J", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 83769, + "url": "https://www.youtube.com/redirect?event=channel_header&redir_token=QUFFLUhqbUJveTM1S1pkbnhIeGNpN3VxNi1pWWxKNVNIUXxBQ3Jtc0ttSkpQb1JVRVlOOXdZd1g1WEhmdVpybWdfVVQ2MDhoSTliU2VBWTFTaVVXRTAwSTc3WW5XNkhuUi1Rd2kxb2VyV08yYjZGNE9PaWUxYU9Zby16ZjhLdVp3MGRHZWF3cmRwNzJfNTVacEpzMnBEQjE4QQ&q=http%3A%2F%2Fwww.eevblog.com", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN" + } + }, + "urlEndpoint": { + "target": "TARGET_NEW_WINDOW", + "url": "https://www.youtube.com/redirect?event=channel_header&redir_token=QUFFLUhqbUJveTM1S1pkbnhIeGNpN3VxNi1pWWxKNVNIUXxBQ3Jtc0ttSkpQb1JVRVlOOXdZd1g1WEhmdVpybWdfVVQ2MDhoSTliU2VBWTFTaVVXRTAwSTc3WW5XNkhuUi1Rd2kxb2VyV08yYjZGNE9PaWUxYU9Zby16ZjhLdVp3MGRHZWF3cmRwNzJfNTVacEpzMnBEQjE4QQ&q=http%3A%2F%2Fwww.eevblog.com" + } + } + }, + "startIndex": 0 + } + ], + "content": "eevblog.com", + "styleRuns": [ + { + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4282296063 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4278607828 + } + ] + } + }, + "weightLabel": "FONT_WEIGHT_NORMAL" + } + ] + } + } + }, + "banner": { + "imageBannerViewModel": { + "image": { + "sources": [ + { + "height": 175, + "url": "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 1060 + }, + { + "height": 188, + "url": "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1138-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 1138 + }, + { + "height": 283, + "url": "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1707-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 1707 + }, + { + "height": 351, + "url": "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2120-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 2120 + }, + { + "height": 377, + "url": "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2276-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 2276 + }, + { + "height": 424, + "url": "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 2560 + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 194845, + "veCounter": 400343542 + }, + "trackingParams": "CA4QnfILIhMI3p6JorPDigMVcs5JBx0rdy_J", + "visibility": { + "types": "12" + } + } + } + }, + "style": "IMAGE_BANNER_STYLE_INSET" + } + }, + "description": { + "descriptionPreviewViewModel": { + "alwaysShowTruncationText": true, + "description": { + "content": "NO SCRIPT, NO FEAR, ALL OPINION " + }, + "maxLines": 2, + "rendererContext": { + "accessibilityContext": { + "label": "Description. NO SCRIPT, NO FEAR, ALL OPINION...tap for more." + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBQQr_4KIhMI3p6JorPDigMVcs5JBx0rdy_J", + "showEngagementPanelEndpoint": { + "engagementPanel": { + "engagementPanelSectionListRenderer": { + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "continuationEndpoint": { + "clickTrackingParams": "CBcQuy8YACITCN6eiaKzw4oDFXLOSQcdK3cvyQ==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "sendPost": true + } + }, + "continuationCommand": { + "request": "CONTINUATION_REQUEST_TYPE_BROWSE", + "token": "4qmFsgJgEhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1EaRDhnWXJHaW1hQVNZS0pEWTVZVGt4WVRreUxUQXdNREF0TWpjeVlpMDVaR1k1TFdRMFpqVTBOMlZsT1dGbVl3JTNEJTNE" + } + }, + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN" + } + } + ], + "sectionIdentifier": "69a91a92-0000-272b-9df9-d4f547ee9afc", + "targetId": "69a91a92-0000-272b-9df9-d4f547ee9afc", + "trackingParams": "CBcQuy8YACITCN6eiaKzw4oDFXLOSQcdK3cvyQ==" + } + } + ], + "scrollPaneStyle": { + "scrollable": true + }, + "trackingParams": "CBYQui8iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "header": { + "engagementPanelTitleHeaderRenderer": { + "title": { + "simpleText": "About" + }, + "trackingParams": "CBUQ040EIhMI3p6JorPDigMVcs5JBx0rdy_J", + "visibilityButton": { + "buttonRenderer": { + "accessibility": { + "label": "Close" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Close" + } + }, + "command": { + "changeEngagementPanelVisibilityAction": { + "targetId": "69a91a91-0000-272b-9df9-d4f547ee9afc", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN" + }, + "clickTrackingParams": "CBgQ8FsiEwjenomis8OKAxVyzkkHHSt3L8k=" + }, + "icon": { + "iconType": "CLOSE" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CBgQ8FsiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + } + }, + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "69a91a91-0000-272b-9df9-d4f547ee9afc" + }, + "targetId": "69a91a91-0000-272b-9df9-d4f547ee9afc" + } + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + }, + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "69a91a91-0000-272b-9df9-d4f547ee9afc" + } + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 180015, + "veCounter": 400343544 + }, + "trackingParams": "CBQQr_4KIhMI3p6JorPDigMVcs5JBx0rdy_J", + "visibility": { + "types": "12" + } + } + } + }, + "truncationText": { + "content": "...more", + "styleRuns": [ + { + "length": 7, + "startIndex": 0, + "weight": 500 + } + ] + } + } + }, + "image": { + "decoratedAvatarViewModel": { + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_XL", + "image": { + "processor": { + "borderImageProcessor": { + "circular": true + } + }, + "sources": [ + { + "height": 72, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s72-c-k-c0x00ffffff-no-rj", + "width": 72 + }, + { + "height": 120, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s120-c-k-c0x00ffffff-no-rj", + "width": 120 + }, + { + "height": 160, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s160-c-k-c0x00ffffff-no-rj", + "width": 160 + } + ] + }, + "loggingDirectives": { + "trackingParams": "CB4Q6OENIhMI3p6JorPDigMVcs5JBx0rdy_J", + "visibility": { + "types": "12" + } + } + } + } + } + }, + "metadata": { + "contentMetadataViewModel": { + "delimiter": "•", + "metadataRows": [ + { + "metadataParts": [ + { + "enableTruncation": true, + "text": { + "content": "@EEVblog", + "styleRuns": [ + { + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + }, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + } + } + ] + }, + { + "metadataParts": [ + { + "text": { + "content": "955K subscribers" + } + }, + { + "text": { + "content": "2K videos", + "styleRuns": [ + { + "length": 9, + "startIndex": 0 + } + ] + } + } + ] + } + ], + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 176757, + "veCounter": 400343547 + }, + "trackingParams": "CB0Q9eQKIhMI3p6JorPDigMVcs5JBx0rdy_J", + "visibility": { + "types": "12" + } + } + } + } + } + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 176034, + "veCounter": 400343541 + }, + "trackingParams": "CA0Qot8KIhMI3p6JorPDigMVcs5JBx0rdy_J", + "visibility": { + "types": "12" + } + } + } + }, + "title": { + "dynamicTextViewModel": { + "maxLines": 2, + "rendererContext": { + "accessibilityContext": { + "label": "EEVblog, Verified" + }, + "loggingContext": { + "loggingDirectives": { + "clientVeSpec": { + "uiType": 176655, + "veCounter": 400343548 + }, + "trackingParams": "CB8Qj-QKIhMI3p6JorPDigMVcs5JBx0rdy_J", + "visibility": { + "types": "12" + } + } + } + }, + "text": { + "attachmentRuns": [ + { + "alignment": "ALIGNMENT_VERTICAL_CENTER", + "element": { + "properties": { + "layoutProperties": { + "height": { + "unit": "DIMENSION_UNIT_POINT", + "value": 14 + }, + "margin": { + "left": { + "unit": "DIMENSION_UNIT_POINT", + "value": 8 + } + }, + "width": { + "unit": "DIMENSION_UNIT_POINT", + "value": 14 + } + } + }, + "type": { + "imageType": { + "image": { + "sources": [ + { + "clientResource": { + "imageName": "CHECK_CIRCLE_FILLED" + }, + "height": 14, + "width": 14 + } + ] + } + } + } + }, + "length": 0, + "startIndex": 7 + } + ], + "content": "EEVblog", + "styleRuns": [ + { + "startIndex": 7, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + } + } + ] + } + } + } + } + }, + "pageTitle": "EEVblog" + } + }, + "metadata": { + "channelMetadataRenderer": { + "androidAppindexingLink": "android-app://com.google.android.youtube/http/www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ", + "androidDeepLink": "android-app://com.google.android.youtube/http/www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ", + "availableCountryCodes": [ + "GF", + "KM", + "BG", + "BT", + "TL", + "MR", + "TK", + "ID", + "AF", + "SH", + "RS", + "JP", + "DE", + "MK", + "PM", + "AE", + "SJ", + "TT", + "BY", + "GU", + "KR", + "CD", + "BW", + "FJ", + "ZW", + "BF", + "LI", + "LK", + "WS", + "LB", + "FO", + "IN", + "TZ", + "SL", + "SM", + "CO", + "BI", + "AD", + "ES", + "ZA", + "NF", + "CG", + "SG", + "TM", + "SN", + "CV", + "AQ", + "LR", + "TC", + "MW", + "EG", + "GM", + "GB", + "AS", + "ER", + "KI", + "GH", + "GL", + "QA", + "CC", + "IE", + "PL", + "IS", + "CN", + "PS", + "UG", + "VG", + "NR", + "TG", + "LC", + "PY", + "GN", + "SY", + "ML", + "GG", + "VI", + "CK", + "PH", + "BB", + "VC", + "GQ", + "KY", + "MA", + "BR", + "SZ", + "MH", + "CU", + "PE", + "HK", + "UZ", + "WF", + "IO", + "MY", + "DO", + "EC", + "TN", + "KG", + "SS", + "AZ", + "CF", + "DK", + "GE", + "NG", + "CM", + "JM", + "SR", + "SV", + "MF", + "MO", + "PA", + "SA", + "SX", + "SE", + "DJ", + "RU", + "NP", + "SI", + "CW", + "VN", + "LA", + "GS", + "PG", + "MM", + "CH", + "LY", + "BH", + "MU", + "SK", + "CL", + "TJ", + "BQ", + "IM", + "DZ", + "FK", + "BN", + "NA", + "GT", + "AU", + "TD", + "EH", + "GA", + "PK", + "EE", + "CY", + "PR", + "OM", + "BJ", + "LS", + "LT", + "BM", + "PF", + "GI", + "YT", + "MZ", + "MC", + "IT", + "CX", + "AT", + "AR", + "MD", + "MX", + "BO", + "ME", + "VE", + "MN", + "JO", + "NE", + "AI", + "AX", + "TW", + "PT", + "GD", + "HR", + "IR", + "AL", + "RO", + "KW", + "BA", + "MS", + "ST", + "PW", + "FM", + "UY", + "SC", + "LU", + "BV", + "AM", + "FR", + "MP", + "IL", + "KE", + "PN", + "NI", + "NC", + "AG", + "TR", + "HN", + "US", + "TO", + "ZM", + "UA", + "HU", + "NL", + "FI", + "TF", + "VU", + "MT", + "KH", + "BE", + "ET", + "SB", + "RE", + "GY", + "IQ", + "RW", + "BD", + "TH", + "CA", + "BS", + "HT", + "NO", + "KN", + "AW", + "GR", + "MG", + "CR", + "MV", + "GP", + "BL", + "UM", + "LV", + "AO", + "NU", + "YE", + "HM", + "SD", + "CZ", + "KZ", + "NZ", + "KP", + "SO", + "TV", + "VA", + "MQ", + "CI", + "BZ", + "JE", + "GW", + "DM" + ], + "avatar": { + "thumbnails": [ + { + "height": 900, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s900-c-k-c0x00ffffff-no-rj", + "width": 900 + } + ] + }, + "channelUrl": "https://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ", + "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", + "externalId": "UC2DjFE7Xf11URZqWBigcVOQ", + "facebookProfileId": "EEVblog", + "iosAppindexingLink": "ios-app://544007664/vnd.youtube/www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ", + "isFamilySafe": true, + "keywords": "electronics engineering maker hacker design circuit hardware pic atmel oscilloscope multimeter diy hobby review teardown microcontroller arduino video blog tutorial how-to interview rant industry news mailbag \"dumpster diving\" debunking", + "ownerUrls": [ + "http://www.youtube.com/@EEVblog" + ], + "rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UC2DjFE7Xf11URZqWBigcVOQ", + "title": "EEVblog", + "vanityChannelUrl": "http://www.youtube.com/@EEVblog" + } + }, + "microformat": { + "microformatDataRenderer": { + "androidPackage": "com.google.android.youtube", + "appName": "YouTube", + "availableCountries": [ + "GF", + "KM", + "BG", + "BT", + "TL", + "MR", + "TK", + "ID", + "AF", + "SH", + "RS", + "JP", + "DE", + "MK", + "PM", + "AE", + "SJ", + "TT", + "BY", + "GU", + "KR", + "CD", + "BW", + "FJ", + "ZW", + "BF", + "LI", + "LK", + "WS", + "LB", + "FO", + "IN", + "TZ", + "SL", + "SM", + "CO", + "BI", + "AD", + "ES", + "ZA", + "NF", + "CG", + "SG", + "TM", + "SN", + "CV", + "AQ", + "LR", + "TC", + "MW", + "EG", + "GM", + "GB", + "AS", + "ER", + "KI", + "GH", + "GL", + "QA", + "CC", + "IE", + "PL", + "IS", + "CN", + "PS", + "UG", + "VG", + "NR", + "TG", + "LC", + "PY", + "GN", + "SY", + "ML", + "GG", + "VI", + "CK", + "PH", + "BB", + "VC", + "GQ", + "KY", + "MA", + "BR", + "SZ", + "MH", + "CU", + "PE", + "HK", + "UZ", + "WF", + "IO", + "MY", + "DO", + "EC", + "TN", + "KG", + "SS", + "AZ", + "CF", + "DK", + "GE", + "NG", + "CM", + "JM", + "SR", + "SV", + "MF", + "MO", + "PA", + "SA", + "SX", + "SE", + "DJ", + "RU", + "NP", + "SI", + "CW", + "VN", + "LA", + "GS", + "PG", + "MM", + "CH", + "LY", + "BH", + "MU", + "SK", + "CL", + "TJ", + "BQ", + "IM", + "DZ", + "FK", + "BN", + "NA", + "GT", + "AU", + "TD", + "EH", + "GA", + "PK", + "EE", + "CY", + "PR", + "OM", + "BJ", + "LS", + "LT", + "BM", + "PF", + "GI", + "YT", + "MZ", + "MC", + "IT", + "CX", + "AT", + "AR", + "MD", + "MX", + "BO", + "ME", + "VE", + "MN", + "JO", + "NE", + "AI", + "AX", + "TW", + "PT", + "GD", + "HR", + "IR", + "AL", + "RO", + "KW", + "BA", + "MS", + "ST", + "PW", + "FM", + "UY", + "SC", + "LU", + "BV", + "AM", + "FR", + "MP", + "IL", + "KE", + "PN", + "NI", + "NC", + "AG", + "TR", + "HN", + "US", + "TO", + "ZM", + "UA", + "HU", + "NL", + "FI", + "TF", + "VU", + "MT", + "KH", + "BE", + "ET", + "SB", + "RE", + "GY", + "IQ", + "RW", + "BD", + "TH", + "CA", + "BS", + "HT", + "NO", + "KN", + "AW", + "GR", + "MG", + "CR", + "MV", + "GP", + "BL", + "UM", + "LV", + "AO", + "NU", + "YE", + "HM", + "SD", + "CZ", + "KZ", + "NZ", + "KP", + "SO", + "TV", + "VA", + "MQ", + "CI", + "BZ", + "JE", + "GW", + "DM" + ], + "description": "NO SCRIPT, NO FEAR, ALL OPINION An off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers Hosted by...", + "familySafe": true, + "iosAppArguments": "https://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ", + "iosAppStoreId": "544007664", + "linkAlternates": [ + { + "hrefUrl": "https://m.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ" + }, + { + "hrefUrl": "android-app://com.google.android.youtube/http/youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ" + }, + { + "hrefUrl": "ios-app://544007664/http/youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ" + } + ], + "noindex": false, + "ogType": "yt-fb-app:channel", + "schemaDotOrgType": "http://schema.org/http://schema.org/YoutubeChannelV2", + "siteName": "YouTube", + "tags": [ + "electronics", + "engineering", + "maker", + "hacker", + "design", + "circuit", + "hardware", + "pic", + "atmel", + "oscilloscope", + "multimeter", + "diy", + "hobby", + "review", + "teardown", + "microcontroller", + "arduino", + "video", + "blog", + "tutorial", + "how-to", + "interview", + "rant", + "industry", + "news", + "mailbag", + "dumpster diving", + "debunking" + ], + "thumbnail": { + "thumbnails": [ + { + "height": 200, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s200-c-k-c0x00ffffff-no-rj?days_since_epoch=20082", + "width": 200 + } + ] + }, + "title": "EEVblog", + "twitterCardType": "summary", + "twitterSiteHandle": "@YouTube", + "unlisted": false, + "urlApplinksAndroid": "vnd.youtube://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ?feature=applinks", + "urlApplinksIos": "vnd.youtube://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ?feature=applinks", + "urlApplinksWeb": "https://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ?feature=applinks", + "urlCanonical": "https://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ", + "urlTwitterAndroid": "vnd.youtube://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ?feature=twitter-deep-link", + "urlTwitterIos": "vnd.youtube://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ?feature=twitter-deep-link" + } + }, + "responseContext": { + "mainAppWebResponseContext": { + "loggedOut": true, + "trackingParam": "kx_fmPxhoPZRHSohbMPnAqAtULaBYse6A0Z1MhkCMsz1AMwRgkuswmIBwOcCE59TDtslLKPQ-SS" + }, + "maxAgeSeconds": 300, + "serviceTrackingParams": [ + { + "params": [ + { + "key": "route", + "value": "channel.playlists" + }, + { + "key": "is_owner", + "value": "false" + }, + { + "key": "is_alc_surface", + "value": "false" + }, + { + "key": "browse_id", + "value": "UC2DjFE7Xf11URZqWBigcVOQ" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "0" + }, + { + "key": "e", + "value": "23804281,23986021,24004644,24077241,24166867,24181174,24241378,24378828,24420425,24439361,24453989,24457856,24547317,24548629,24566687,24699899,39325854,39326986,39327050,39327564,39327855,39328150,39328170,39328208,39328258,51009781,51010235,51017346,51020570,51025415,51030101,51037342,51037351,51050361,51053689,51057842,51057853,51063643,51072748,51091058,51095478,51098299,51111738,51115184,51124104,51141472,51144926,51151423,51152050,51157411,51160545,51169118,51176511,51178320,51178337,51178348,51178355,51178982,51183909,51184990,51194137,51204329,51208678,51217504,51220161,51222382,51222973,51227037,51227778,51228850,51230478,51232637,51237842,51239093,51241028,51242448,51248255,51248734,51249751,51255676,51255743,51256074,51256084,51263449,51272458,51274583,51275785,51276557,51276565,51281227,51282792,51285052,51285717,51287196,51289920,51289931,51289938,51289952,51289963,51289974,51290406,51292055,51294322,51296439,51298020,51299710,51299724,51299971,51299999,51300018,51300176,51300241,51302680,51303432,51303667,51303669,51303789,51304155,51305839,51306256,51310741,51311029,51311034,51311505,51313109,51313767,51313802,51314158,51315910,51315921,51315924,51315933,51315942,51315949,51315956,51315963,51315972,51315975,51316748,51316846,51317942,51318845,51320165,51320716,51322669,51323298,51326208,51326282,51326932,51327138,51327161,51327178,51327613,51327615,51327636,51330194,51331485,51331502,51331516,51331535,51331538,51331549,51331554,51331559,51332801,51332896,51333543,51333878,51334535,51335366,51335392,51335594,51335928,51336633,51337186,51337272,51337349,51338524,51340613,51340662,51341214,51341228,51341730,51341974,51342857,51343368,51343796,51344663,51345295,51345629,51346352,51346803,51346808,51346827,51346844,51346851,51346866,51346881,51346894,51347325,51347575,51348208,51348672,51349880,51350816,51351446,51351459,51352980,51353052,51353231,51353361,51353393,51353453,51354114,51354124,51354507,51354567,51355199,51355257,51355268,51355273,51355291,51355307,51355318,51355333,51355344,51355417,51355679,51355912,51357475,51357477,51357762,51359177,51360104,51360125,51360138,51360208,51360217,51361727,51361828,51361846,51362040,51362071,51362455,51362643,51362674,51362857,51363725,51363734,51363741,51363752,51363763,51363768,51364270,51365401,51365459,51365716,51365751,51365987,51366423,51366620,51366864,51367318,51367489,51367603,51367993,51368558,51369324,51369559,51369908,51370738,51370986,51370997,51371006,51371044,51371294,51371521,51372698,51374438,51375168,51375719,51375867,51376515,51376812,51376878,51379007" + }, + { + "key": "visitor_data", + "value": "Cgt0VmlYTXUxcDl3VSj-w6q7BjIKCgJVUxIEEgAgaQ%3D%3D" + } + ], + "service": "GFEEDBACK" + }, + { + "params": [ + { + "key": "browse_id", + "value": "UC2DjFE7Xf11URZqWBigcVOQ" + }, + { + "key": "browse_id_prefix", + "value": "" + } + ], + "service": "GOOGLE_HELP" + }, + { + "params": [ + { + "key": "c", + "value": "WEB" + }, + { + "key": "cver", + "value": "2.20241219.01.01" + }, + { + "key": "yt_li", + "value": "0" + }, + { + "key": "GetChannelPage_rid", + "value": "0x3b61fd02cdb6ea43" + } + ], + "service": "CSI" + }, + { + "params": [ + { + "key": "logged_in", + "value": "0" + } + ], + "service": "GUIDED_HELP" + }, + { + "params": [ + { + "key": "client.version", + "value": "2.20241219" + }, + { + "key": "client.name", + "value": "WEB" + } + ], + "service": "ECATCHER" + } + ], + "visitorData": "Cgt0VmlYTXUxcDl3VSj-w6q7BjIKCgJVUxIEEgAgaQ%3D%3D", + "webResponseContextExtensionData": { + "hasDecorated": true + } + }, + "topbar": { + "desktopTopbarRenderer": { + "a11ySkipNavigationButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CAIQ8FsiEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "clickTrackingParams": "CAIQ8FsiEwjenomis8OKAxVyzkkHHSt3L8k=", + "signalAction": { + "signal": "SKIP_NAVIGATION" + } + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "text": { + "runs": [ + { + "text": "Skip navigation" + } + ] + }, + "trackingParams": "CAIQ8FsiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "backButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CAQQvIYDIhMI3p6JorPDigMVcs5JBx0rdy_J", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "clickTrackingParams": "CAQQvIYDIhMI3p6JorPDigMVcs5JBx0rdy_J", + "signalAction": { + "signal": "HISTORY_BACK" + } + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "trackingParams": "CAQQvIYDIhMI3p6JorPDigMVcs5JBx0rdy_J" + } + }, + "forwardButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CAMQvYYDIhMI3p6JorPDigMVcs5JBx0rdy_J", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "clickTrackingParams": "CAMQvYYDIhMI3p6JorPDigMVcs5JBx0rdy_J", + "signalAction": { + "signal": "HISTORY_FORWARD" + } + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "trackingParams": "CAMQvYYDIhMI3p6JorPDigMVcs5JBx0rdy_J" + } + }, + "hotkeyDialog": { + "hotkeyDialogRenderer": { + "dismissButton": { + "buttonRenderer": { + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Dismiss" + } + ] + }, + "trackingParams": "CAYQ8FsiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "sections": [ + { + "hotkeyDialogSectionRenderer": { + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "k", + "label": { + "runs": [ + { + "text": "Toggle play/pause" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "j", + "label": { + "runs": [ + { + "text": "Rewind 10 seconds" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "l", + "label": { + "runs": [ + { + "text": "Fast forward 10 seconds" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "P (SHIFT+p)", + "label": { + "runs": [ + { + "text": "Previous video" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "N (SHIFT+n)", + "label": { + "runs": [ + { + "text": "Next video" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": ",", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Comma" + } + }, + "label": { + "runs": [ + { + "text": "Previous frame (while paused)" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": ".", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Period" + } + }, + "label": { + "runs": [ + { + "text": "Next frame (while paused)" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "< (SHIFT+,)", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Less than or SHIFT + comma" + } + }, + "label": { + "runs": [ + { + "text": "Decrease playback rate" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "> (SHIFT+.)", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Greater than or SHIFT + period" + } + }, + "label": { + "runs": [ + { + "text": "Increase playback rate" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "0..9", + "label": { + "runs": [ + { + "text": "Seek to specific point in the video (7 advances to 70% of duration)" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "CONTROL + ←", + "label": { + "runs": [ + { + "text": "Seek to previous chapter" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "CONTROL + →", + "label": { + "runs": [ + { + "text": "Seek to next chapter" + } + ] + } + } + } + ], + "title": { + "runs": [ + { + "text": "Playback" + } + ] + } + } + }, + { + "hotkeyDialogSectionRenderer": { + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "f", + "label": { + "runs": [ + { + "text": "Toggle full screen" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "t", + "label": { + "runs": [ + { + "text": "Toggle theater mode" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "i", + "label": { + "runs": [ + { + "text": "Toggle miniplayer" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "ESCAPE", + "label": { + "runs": [ + { + "text": "Close miniplayer or current dialog" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "m", + "label": { + "runs": [ + { + "text": "Toggle mute" + } + ] + } + } + } + ], + "title": { + "runs": [ + { + "text": "General" + } + ] + } + } + }, + { + "hotkeyDialogSectionRenderer": { + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "c", + "label": { + "runs": [ + { + "text": "If the video supports captions, toggle captions ON/OFF" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "o", + "label": { + "runs": [ + { + "text": "Rotate through different text opacity levels" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "w", + "label": { + "runs": [ + { + "text": "Rotate through different window opacity levels" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "+", + "label": { + "runs": [ + { + "text": "Rotate through font sizes (increasing)" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "-", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Minus" + } + }, + "label": { + "runs": [ + { + "text": "Rotate through font sizes (decreasing)" + } + ] + } + } + } + ], + "title": { + "runs": [ + { + "text": "Subtitles and closed captions" + } + ] + } + } + }, + { + "hotkeyDialogSectionRenderer": { + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "w", + "label": { + "runs": [ + { + "text": "Pan up" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "a", + "label": { + "runs": [ + { + "text": "Pan left" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "s", + "label": { + "runs": [ + { + "text": "Pan down" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "d", + "label": { + "runs": [ + { + "text": "Pan right" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "+ on numpad or ]", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Plus on number pad or right bracket" + } + }, + "label": { + "runs": [ + { + "text": "Zoom in" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "- on numpad or [", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Minus on number pad or left bracket" + } + }, + "label": { + "runs": [ + { + "text": "Zoom out" + } + ] + } + } + } + ], + "title": { + "runs": [ + { + "text": "Spherical Videos" + } + ] + } + } + } + ], + "title": { + "runs": [ + { + "text": "Keyboard shortcuts" + } + ] + }, + "trackingParams": "CAUQteYDIhMI3p6JorPDigMVcs5JBx0rdy_J" + } + }, + "logo": { + "topbarLogoRenderer": { + "endpoint": { + "browseEndpoint": { + "browseId": "FEwhat_to_watch" + }, + "clickTrackingParams": "CAwQsV4iEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3854, + "url": "/", + "webPageType": "WEB_PAGE_TYPE_BROWSE" + } + } + }, + "iconImage": { + "iconType": "YOUTUBE_LOGO" + }, + "overrideEntityKey": "EgZ0b3BiYXIg9QEoAQ%3D%3D", + "tooltipText": { + "runs": [ + { + "text": "YouTube Home" + } + ] + }, + "trackingParams": "CAwQsV4iEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "searchbox": { + "fusionSearchboxRenderer": { + "clearButton": { + "buttonRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Clear search query" + } + }, + "icon": { + "iconType": "CLOSE" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CAsQ8FsiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "config": { + "webSearchboxConfig": { + "focusSearchbox": true, + "hasOnscreenKeyboard": false, + "requestDomain": "us", + "requestLanguage": "en" + } + }, + "icon": { + "iconType": "SEARCH" + }, + "placeholderText": { + "runs": [ + { + "text": "Search" + } + ] + }, + "searchEndpoint": { + "clickTrackingParams": "CAoQ7VAiEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 4724, + "url": "/results?search_query=", + "webPageType": "WEB_PAGE_TYPE_SEARCH" + } + }, + "searchEndpoint": { + "query": "" + } + }, + "trackingParams": "CAoQ7VAiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + "topbarButtons": [ + { + "topbarMenuButtonRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Settings" + } + }, + "icon": { + "iconType": "MORE_VERT" + }, + "menuRequest": { + "clickTrackingParams": "CAgQ_qsBGAAiEwjenomis8OKAxVyzkkHHSt3L8k=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/account/account_menu", + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "clickTrackingParams": "CAgQ_qsBGAAiEwjenomis8OKAxVyzkkHHSt3L8k=", + "openPopupAction": { + "beReused": true, + "popup": { + "multiPageMenuRenderer": { + "showLoadingSpinner": true, + "style": "MULTI_PAGE_MENU_STYLE_TYPE_SYSTEM", + "trackingParams": "CAkQ_6sBIhMI3p6JorPDigMVcs5JBx0rdy_J" + } + }, + "popupType": "DROPDOWN" + } + } + ], + "signal": "GET_ACCOUNT_MENU" + } + }, + "style": "STYLE_DEFAULT", + "tooltip": "Settings", + "trackingParams": "CAgQ_qsBGAAiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + }, + { + "buttonRenderer": { + "icon": { + "iconType": "AVATAR_LOGGED_OUT" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAcQ1IAEGAEiEwjenomis8OKAxVyzkkHHSt3L8k=", + "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%3Dhttps%253A%252F%252Fwww.youtube.com%252Fyoutubei%252Fv1%252Fbrowse%253FprettyPrint%253Dfalse&hl=en&ec=65620", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN" + } + }, + "signInEndpoint": { + "idamTag": "65620" + } + }, + "size": "SIZE_SMALL", + "style": "STYLE_SUGGESTIVE", + "targetId": "topbar-signin", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CAcQ1IAEGAEiEwjenomis8OKAxVyzkkHHSt3L8k=" + } + } + ], + "trackingParams": "CAEQq6wBIhMI3p6JorPDigMVcs5JBx0rdy_J" + } + }, + "trackingParams": "CAAQhGciEwjenomis8OKAxVyzkkHHSt3L8k=" +} diff --git a/testfiles/history/history.json b/testfiles/history/history.json new file mode 100644 index 0000000..513784d --- /dev/null +++ b/testfiles/history/history.json @@ -0,0 +1,5061 @@ +{ + "responseContext": { + "serviceTrackingParams": [ + { + "service": "GFEEDBACK", + "params": [ + { + "key": "browse_id", + "value": "FEhistory" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "1" + }, + { + "key": "e", + "value": "23804281,23813628,23986015,24004644,24077241,24166867,24181174,24241378,24299875,24439361,24453989,24459436,24495712,24547317,24548629,24566687,24697013,24699899,39325854,39326986,51009781,51010235,51017346,51020570,51025415,51030101,51037342,51037353,51050361,51053689,51057842,51057853,51063643,51072748,51091058,51095478,51098299,51111738,51115164,51115184,51124104,51125020,51141472,51145218,51151423,51152050,51157411,51160545,51169118,51176511,51178314,51178327,51178344,51178351,51178982,51179884,51183909,51184990,51186367,51194137,51204329,51208678,51217504,51222382,51222973,51226938,51227037,51227778,51228850,51230478,51236019,51237842,51239093,51241028,51242448,51248255,51248709,51248734,51249751,51255676,51255743,51256084,51257943,51260634,51263449,51272458,51274583,51275785,51276557,51276565,51281227,51282792,51285052,51285717,51287196,51289922,51289929,51289938,51289958,51289965,51290036,51290043,51290404,51292055,51294322,51296439,51298020,51299710,51299724,51299973,51299999,51300018,51300176,51300241,51302680,51303432,51303667,51303669,51303789,51304155,51305839,51306256,51310742,51311025,51311034,51311505,51313109,51313765,51313767,51313802,51314158,51315910,51315919,51315928,51315931,51315938,51315945,51315956,51315963,51315972,51315979,51316744,51316844,51318845,51322669,51326208,51326281,51326932,51327144,51327163,51327180,51327613,51327615,51327636,51330194,51331485,51331500,51331520,51331535,51331538,51331545,51331552,51331561,51332896,51333541,51333878,51334535,51335365,51335392,51335594,51335646,51335928,51336633,51337000,51337139,51337186,51337349,51338524,51339007,51340662,51341214,51341226,51341730,51341974,51342579,51342857,51343368,51343796,51345228,51345295,51345629,51346352,51346795,51346816,51346823,51346836,51346849,51346868,51346879,51346896,51347325,51347576,51348208,51348354,51348672,51349880,51349914,51350306,51351446,51353231,51353361,51353393,51354114,51354507,51354569,51355268,51355273,51355291,51355307,51355312,51355337,51355342,51355417,51355679,51355912,51357477,51357777,51359172,51360108,51360123,51360140,51360212,51360215,51361727,51361828,51362003,51362040,51362071,51362455,51362643,51362674,51362857,51363663,51363725,51363734,51363741,51363756,51363761,51363772,51365460,51365716,51365751,51365987,51366423,51366620,51366864,51367318,51367487,51367605,51367993,51368502,51369325,51369559,51369905,51370175,51370739,51371001,51371006,51371522,51372699,51374017,51374193,51374439,51375011,51375168,51375719,51375867,51376050,51376515,51376764,51379209" + } + ] + }, + { + "service": "GOOGLE_HELP", + "params": [ + { + "key": "browse_id", + "value": "FEhistory" + }, + { + "key": "browse_id_prefix", + "value": "" + } + ] + }, + { + "service": "CSI", + "params": [ + { + "key": "c", + "value": "WEB" + }, + { + "key": "cver", + "value": "2.20241219.01.01" + }, + { + "key": "yt_li", + "value": "1" + }, + { + "key": "GetHistory_rid", + "value": "0xcebaf6ba2af6fb02" + } + ] + }, + { + "service": "GUIDED_HELP", + "params": [ + { + "key": "logged_in", + "value": "1" + } + ] + }, + { + "service": "ECATCHER", + "params": [ + { + "key": "client.version", + "value": "2.20241219" + }, + { + "key": "client.name", + "value": "WEB" + } + ] + } + ], + "maxAgeSeconds": 0, + "mainAppWebResponseContext": { + "datasyncId": "102002197211592572023||", + "loggedOut": false, + "trackingParam": "kx_fmPxhoPZRq2TXvIiqaBB9rtHjmU4k7CaHPz5Q3F0RcNwRgkuswmIBwOcCE59TDtslLKPQ-SS" + }, + "webResponseContextExtensionData": { + "hasDecorated": true + } + }, + "contents": { + "twoColumnBrowseResultsRenderer": { + "secondaryContents": { + "browseFeedActionsRenderer": { + "contents": [ + { + "searchBoxRenderer": { + "endpoint": { + "clickTrackingParams": "CPoPEPTUARgBIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "url": "/feed/history", + "sendPost": true, + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 6827, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "FEhistory", + "query": "" + } + }, + "searchButton": { + "buttonRenderer": { + "icon": { + "iconType": "SEARCH" + }, + "trackingParams": "CPwPEPBbIhMI686du4C_igMVU116BR1t1zzx", + "accessibilityData": { + "accessibilityData": { + "label": "Search watch history" + } + } + } + }, + "clearButton": { + "buttonRenderer": { + "icon": { + "iconType": "CLOSE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPsPEPBbIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "url": "/feed/history", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 6827, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "FEhistory" + } + }, + "trackingParams": "CPsPEPBbIhMI686du4C_igMVU116BR1t1zzx", + "accessibilityData": { + "accessibilityData": { + "label": "Clear search query" + } + } + } + }, + "placeholderText": { + "runs": [ + { + "text": "Search watch history" + } + ] + }, + "trackingParams": "CPoPEPTUARgBIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "buttonRenderer": { + "text": { + "runs": [ + { + "text": "Clear all watch history" + } + ] + }, + "icon": { + "iconType": "DELETE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPQPEPBbGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "confirmDialogEndpoint": { + "content": { + "confirmDialogRenderer": { + "title": { + "runs": [ + { + "text": "Clear watch history?" + } + ] + }, + "confirmEndpoint": { + "clickTrackingParams": "CPUPEMY4IhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/feedback" + } + }, + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKB2ETuJODQ-cGCYlEQPFqTe-7IZrqfQRdymEwoP8Do33KUSbKfNZp1FOKI2WpE5Bu_o_Pj", + "uiActions": { + "hideEnclosingContainer": false + }, + "actions": [ + { + "clickTrackingParams": "CPUPEMY4IhMI686du4C_igMVU116BR1t1zzx", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "runs": [ + { + "text": "Watch history cleared" + } + ] + }, + "trackingParams": "CPkPELlqIhMI686du4C_igMVU116BR1t1zzx" + } + }, + "popupType": "TOAST" + } + }, + { + "clickTrackingParams": "CPUPEMY4IhMI686du4C_igMVU116BR1t1zzx", + "localWatchHistoryCommand": { + "localWatchHistoryCommandType": "LOCAL_WATCH_HISTORY_COMMAND_TYPE_CLEAR" + } + } + ] + } + }, + "trackingParams": "CPUPEMY4IhMI686du4C_igMVU116BR1t1zzx", + "dialogMessages": [ + { + "runs": [ + { + "text": "Christy (shaun132@t-online.de)", + "bold": true + }, + { + "text": "\n\nYour YouTube watch history will be cleared from all YouTube apps on all devices.\n\nYour video recommendations will be reset, but may still be influenced by activity on other Google products. To learn more, visit " + }, + { + "text": "My Activity", + "navigationEndpoint": { + "clickTrackingParams": "CPUPEMY4IhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://myactivity.google.com/activitycontrols/youtube?hl=en&utm_medium=web&utm_source=youtube", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://myactivity.google.com/activitycontrols/youtube?hl=en&utm_medium=web&utm_source=youtube", + "target": "TARGET_NEW_WINDOW" + } + } + }, + { + "text": "." + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "Clear watch history" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcPEPBbIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/feedback" + } + }, + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKB2ETuJODQ-cGCYlEQPFqTe-7IZrqfQRdymEwoP8Do33KUSbKfNZp1FOKI2WpE5Bu_o_Pj", + "uiActions": { + "hideEnclosingContainer": false + }, + "actions": [ + { + "clickTrackingParams": "CPcPEPBbIhMI686du4C_igMVU116BR1t1zzx", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "runs": [ + { + "text": "Watch history cleared" + } + ] + }, + "trackingParams": "CPgPELlqIhMI686du4C_igMVU116BR1t1zzx" + } + }, + "popupType": "TOAST" + } + }, + { + "clickTrackingParams": "CPcPEPBbIhMI686du4C_igMVU116BR1t1zzx", + "localWatchHistoryCommand": { + "localWatchHistoryCommandType": "LOCAL_WATCH_HISTORY_COMMAND_TYPE_CLEAR" + } + } + ] + } + }, + "trackingParams": "CPcPEPBbIhMI686du4C_igMVU116BR1t1zzx" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "trackingParams": "CPYPEPBbIhMI686du4C_igMVU116BR1t1zzx" + } + }, + "primaryIsCancel": false + } + } + } + }, + "trackingParams": "CPQPEPBbGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=" + } + }, + { + "buttonRenderer": { + "text": { + "runs": [ + { + "text": "Pause watch history" + } + ] + }, + "icon": { + "iconType": "PAUSE_OUTLINED" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPAPEPBbGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "confirmDialogEndpoint": { + "content": { + "confirmDialogRenderer": { + "title": { + "runs": [ + { + "text": "Pause watch history?" + } + ] + }, + "confirmEndpoint": { + "clickTrackingParams": "CPEPEMY4IhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/feedback" + } + }, + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL8y9ydPZjwrFb8Ss7r26vLX9T9Q-0hRhYtJ6erVE_yhKZVQiv99PimzqkwDUpEMgpHmqHGeY6x6M76J-QT-WSx4SumEu4_WiNUUuAx4TAbBX5OMN4U9ObACs_rbRorDmzRT4xwFFXe1rGXV3lN7aS1Sae8ZFJR2Kks-rGpQKD44d9ViyojYJoxr_CP7EWzEMHuTddMem2yMR2JN2ePxP0HAnnSVwmcC6e3OahLSxYBj36UWgpBFJ_xq_zIUvrS3JBnCcdE8wpZYKdNuZkRkNcS2zwTINIp6WzAAUpuPAfY_iDseBIKejXthc8LZxO17CFwXvfgE4GSLPH0oxqaQsgTSWf56RxlTxs6IKnufderpuspqL14e484vf9RbbRqsYIlnqFXOGkgbxsJ22BY_vMrmdJMo7597zGhukdW_WjmqEYtcdkfkc7E2HKYtpL7SE4VgjHfTZtob7gMTOpZ6bKZaXvEYwV2ASV3xM5s1P8qtvVcUdoCH5YlS2OryrC9jJZJy2u6IhFk_2KU4KIy3WIVeCkD69h_DlVjr3xsbUUk04gAMV0GhnC0PKt5F6DP8gQBwQU-ciJNyVzlfTw5Vi0yZ-9ewMMjvtdk-O0pN8K9AGgwgwcft33yoUUQC8JgwlgGJ_muwHDZhEMsTBEQ4t4NscoMV-f_hNNS2OuLKDxW7ZZS_4k6HuENY_I9L3A3_J9UfbZLE8sQLDV_HVuZj2mnwBc9D6dm3MM2ce0dh7DwXCCv3X_COND-udexihkEfPY4eXk9We4XBGfo8ykw4OTrNBWjxIrE3Uz-XiN7LlcVVeXx0mWnZ34RfVkDXqmnzqvN7wjC6ZSC9Q45JXpEZ00yfx8symCLPMQVF-Wge9rv-D-Ko4_nHLuApUiRSUchrObU8o9AL1D96GPPMl5f_j7eqWJMr5i_NbzaYKO6C08wTumBRrwXIR-cIza_37F49ZLrjVNueo_VUXIakIrT2mqEjPk2gGJUimfE9QDvI7ISHMWlzNKtWjteDugNjozal6bTAlj5NN31MdjzalGpB6VQ4-5LOBA6BGnl9-sE5RBFFcAx9OLCMJXShjX5i5aV_XXw96ZIHa18CDylJITCkfzDRL_GuqGmJ-z5vhWhQmiW8b-Hm90dqb44P6g_3-ZjxIOynnCNzl3Mq34iTJav5TeJgLcWKuUZQPtn-kSjxDC2bn83Hqw", + "uiActions": { + "hideEnclosingContainer": false + }, + "actions": [ + { + "clickTrackingParams": "CPEPEMY4IhMI686du4C_igMVU116BR1t1zzx", + "localWatchHistoryCommand": { + "localWatchHistoryCommandType": "LOCAL_WATCH_HISTORY_COMMAND_TYPE_PAUSE" + } + } + ] + } + }, + "trackingParams": "CPEPEMY4IhMI686du4C_igMVU116BR1t1zzx", + "dialogMessages": [ + { + "runs": [ + { + "text": "Christy (shaun132@t-online.de)", + "bold": true + }, + { + "text": "\n\nPausing YouTube watch history can make it harder to find videos you watched, and you may see fewer recommendations for new videos in YouTube and other Google products.\n\nRemember, pausing this setting doesn't delete any previous activity, but you can view, edit and delete your private " + }, + { + "text": "YouTube watch history", + "navigationEndpoint": { + "clickTrackingParams": "CPEPEMY4IhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://myactivity.google.com/activitycontrols/youtube?hl=en&utm_medium=web&utm_source=youtube", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://myactivity.google.com/activitycontrols/youtube?hl=en&utm_medium=web&utm_source=youtube", + "target": "TARGET_NEW_WINDOW" + } + } + }, + { + "text": " data anytime. When you pause and clear your watch history, YouTube features that rely on history to personalize your experience are disabled." + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "Pause" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPMPEPBbIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/feedback" + } + }, + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL8y9ydPZjwrFb8Ss7r26vLX9T9Q-0hRhYtJ6erVE_yhKZVQiv99PimzqkwDUpEMgpHmqHGeY6x6M76J-QT-WSx4SumEu4_WiNUUuAx4TAbBX5OMN4U9ObACs_rbRorDmzRT4xwFFXe1rGXV3lN7aS1Sae8ZFJR2Kks-rGpQKD44d9ViyojYJoxr_CP7EWzEMHuTddMem2yMR2JN2ePxP0HAnnSVwmcC6e3OahLSxYBj36UWgpBFJ_xq_zIUvrS3JBnCcdE8wpZYKdNuZkRkNcS2zwTINIp6WzAAUpuPAfY_iDseBIKejXthc8LZxO17CFwXvfgE4GSLPH0oxqaQsgTSWf56RxlTxs6IKnufderpuspqL14e484vf9RbbRqsYIlnqFXOGkgbxsJ22BY_vMrmdJMo7597zGhukdW_WjmqEYtcdkfkc7E2HKYtpL7SE4VgjHfTZtob7gMTOpZ6bKZaXvEYwV2ASV3xM5s1P8qtvVcUdoCH5YlS2OryrC9jJZJy2u6IhFk_2KU4KIy3WIVeCkD69h_DlVjr3xsbUUk04gAMV0GhnC0PKt5F6DP8gQBwQU-ciJNyVzlfTw5Vi0yZ-9ewMMjvtdk-O0pN8K9AGgwgwcft33yoUUQC8JgwlgGJ_muwHDZhEMsTBEQ4t4NscoMV-f_hNNS2OuLKDxW7ZZS_4k6HuENY_I9L3A3_J9UfbZLE8sQLDV_HVuZj2mnwBc9D6dm3MM2ce0dh7DwXCCv3X_COND-udexihkEfPY4eXk9We4XBGfo8ykw4OTrNBWjxIrE3Uz-XiN7LlcVVeXx0mWnZ34RfVkDXqmnzqvN7wjC6ZSC9Q45JXpEZ00yfx8symCLPMQVF-Wge9rv-D-Ko4_nHLuApUiRSUchrObU8o9AL1D96GPPMl5f_j7eqWJMr5i_NbzaYKO6C08wTumBRrwXIR-cIza_37F49ZLrjVNueo_VUXIakIrT2mqEjPk2gGJUimfE9QDvI7ISHMWlzNKtWjteDugNjozal6bTAlj5NN31MdjzalGpB6VQ4-5LOBA6BGnl9-sE5RBFFcAx9OLCMJXShjX5i5aV_XXw96ZIHa18CDylJITCkfzDRL_GuqGmJ-z5vhWhQmiW8b-Hm90dqb44P6g_3-ZjxIOynnCNzl3Mq34iTJav5TeJgLcWKuUZQPtn-kSjxDC2bn83Hqw", + "uiActions": { + "hideEnclosingContainer": false + }, + "actions": [ + { + "clickTrackingParams": "CPMPEPBbIhMI686du4C_igMVU116BR1t1zzx", + "localWatchHistoryCommand": { + "localWatchHistoryCommandType": "LOCAL_WATCH_HISTORY_COMMAND_TYPE_PAUSE" + } + } + ] + } + }, + "trackingParams": "CPMPEPBbIhMI686du4C_igMVU116BR1t1zzx" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "trackingParams": "CPIPEPBbIhMI686du4C_igMVU116BR1t1zzx" + } + }, + "primaryIsCancel": false + } + } + } + }, + "trackingParams": "CPAPEPBbGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "targetId": "history-watch-pause-resume-toggle" + } + }, + { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Manage all history" + } + ] + }, + "icon": { + "iconType": "SETTINGS" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO8PENHsBxgEIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://myactivity.google.com/activitycontrols/youtube?hl=en&utm_medium=web&utm_source=youtube", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://myactivity.google.com/activitycontrols/youtube?hl=en&utm_medium=web&utm_source=youtube", + "target": "TARGET_NEW_WINDOW" + } + }, + "trackingParams": "CO8PENHsBxgEIhMI686du4C_igMVU116BR1t1zzx", + "targetId": "history-my-activity" + } + }, + { + "compactLinkRenderer": { + "title": { + "runs": [ + { + "text": "Comments" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CO4PENHsBxgFIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://myactivity.google.com/product/youtube_comments?hl=en&utm_medium=web&utm_source=youtube", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://myactivity.google.com/product/youtube_comments?hl=en&utm_medium=web&utm_source=youtube", + "target": "TARGET_NEW_WINDOW" + } + }, + "trackingParams": "CO4PENHsBxgFIhMI686du4C_igMVU116BR1t1zzx", + "style": "COMPACT_LINK_STYLE_TYPE_HISTORY_MY_ACTIVITY_LINK" + } + }, + { + "compactLinkRenderer": { + "title": { + "runs": [ + { + "text": "Posts" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CO0PENHsBxgGIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://myactivity.google.com/product/youtube_posts_activity?hl=en&utm_medium=web&utm_source=youtube", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://myactivity.google.com/product/youtube_posts_activity?hl=en&utm_medium=web&utm_source=youtube", + "target": "TARGET_NEW_WINDOW" + } + }, + "trackingParams": "CO0PENHsBxgGIhMI686du4C_igMVU116BR1t1zzx", + "style": "COMPACT_LINK_STYLE_TYPE_HISTORY_MY_ACTIVITY_LINK" + } + }, + { + "compactLinkRenderer": { + "title": { + "runs": [ + { + "text": "Live chat" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "COwPENHsBxgHIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://myactivity.google.com/product/youtube_live_chat?hl=en&utm_medium=web&utm_source=youtube", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://myactivity.google.com/product/youtube_live_chat?hl=en&utm_medium=web&utm_source=youtube", + "target": "TARGET_NEW_WINDOW" + } + }, + "trackingParams": "COwPENHsBxgHIhMI686du4C_igMVU116BR1t1zzx", + "style": "COMPACT_LINK_STYLE_TYPE_HISTORY_MY_ACTIVITY_LINK" + } + } + ] + } + }, + "tabs": [ + { + "tabRenderer": { + "selected": true, + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "videoRenderer": { + "videoId": "mPshy_DWxfo", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFACKgBEF5IWvKriqkDMwgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAHwAQH4Af4JgALOBYoCDAgAEAEYfyAyKEAwDw==&rs=AOn4CLBfBVk2IGdGGGmpqOir2RbC8cY1xw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFACMQBEG5IWvKriqkDMwgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAHwAQH4Af4JgALOBYoCDAgAEAEYfyAyKEAwDw==&rs=AOn4CLDnRYKBX4qMlA54i-q3W7w1WvGApg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFBCPYBEIoBSFryq4qpAzMIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB8AEB-AH-CYACzgWKAgwIABABGH8gMihAMA8=&rs=AOn4CLDza_6r3345q6SBZvGm292mOobNPg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFBCNACELwBSFryq4qpAzMIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB8AEB-AH-CYACzgWKAgwIABABGH8gMihAMA8=&rs=AOn4CLDySwxxAy2hfw2YcAKs6ERLhzPTkQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "trying TWEENING everything! (FAILED) PLEASE GIVE ME SOME ADVICEEE" + } + ], + "accessibility": { + "accessibilityData": { + "label": "trying TWEENING everything! (FAILED) PLEASE GIVE ME SOME ADVICEEE by Ari 15 views 6 seconds" + } + } + }, + "longBylineText": { + "runs": [ + { + "text": "Ari", + "navigationEndpoint": { + "clickTrackingParams": "COIPENwwGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Arielle-no", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCM7OXM6t80a3e3tzQDWxwEA", + "canonicalBaseUrl": "/@Arielle-no" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "6 seconds" + } + }, + "simpleText": "0:06" + }, + "viewCountText": { + "simpleText": "15 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "COIPENwwGAAiEwjrzp27gL-KAxVTXXoFHW3XPPFaCUZFaGlzdG9yeZoBBwi4ARDx8AU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=mPshy_DWxfo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "mPshy_DWxfo", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&siu=1&msp=1&odepv=1&id=98fb21cbf0d6c5fa&ip=79.205.216.204&initcwndbps=2682500&mt=1734994620&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "text": "Ari", + "navigationEndpoint": { + "clickTrackingParams": "COIPENwwGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Arielle-no", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCM7OXM6t80a3e3tzQDWxwEA", + "canonicalBaseUrl": "/@Arielle-no" + } + } + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Ari", + "navigationEndpoint": { + "clickTrackingParams": "COIPENwwGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Arielle-no", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCM7OXM6t80a3e3tzQDWxwEA", + "canonicalBaseUrl": "/@Arielle-no" + } + } + } + ] + }, + "trackingParams": "COIPENwwGAAiEwjrzp27gL-KAxVTXXoFHW3XPPFA-ovbhr-5yP2YAQ==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "15 views" + } + }, + "simpleText": "15 views" + }, + "isWatched": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "COsPEP6YBBgIIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COsPEP6YBBgIIhMI686du4C_igMVU116BR1t1zzx", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "mPshy_DWxfo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COsPEP6YBBgIIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["mPshy_DWxfo"], + "params": "CAQ%3D" + } + }, + "videoIds": ["mPshy_DWxfo"] + } + } + ] + } + }, + "trackingParams": "COsPEP6YBBgIIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "COIPENwwGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "mPshy_DWxfo", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "trackingParams": "COIPENwwGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "clickTrackingParams": "COoPEJSsCRgKIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist" + } + }, + "addToPlaylistServiceEndpoint": { + "videoId": "mPshy_DWxfo" + } + }, + "trackingParams": "COoPEJSsCRgKIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COkPENGqBRgLIhMI686du4C_igMVU116BR1t1zzx", + "offlineVideoEndpoint": { + "videoId": "mPshy_DWxfo", + "onAddCommand": { + "clickTrackingParams": "COkPENGqBRgLIhMI686du4C_igMVU116BR1t1zzx", + "getDownloadActionCommand": { + "videoId": "mPshy_DWxfo", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "COkPENGqBRgLIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COIPENwwGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgttUHNoeV9EV3hmbw%3D%3D", + "commands": [ + { + "clickTrackingParams": "COIPENwwGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "COgPEI5iIhMI686du4C_igMVU116BR1t1zzx", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "COIPENwwGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "hasSeparator": true + } + } + ], + "trackingParams": "COIPENwwGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "topLevelButtons": [ + { + "buttonRenderer": { + "style": "STYLE_OPACITY", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "serviceEndpoint": { + "clickTrackingParams": "COUPEPBbGA0iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/feedback" + } + }, + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJXpol8qwIQ-zD3351WGtkVnKKSo2rsBzCJYdXXGlSpxy_tG-rvyJDMxxaZpFSrXusjH2wuzrdjxEiQ5RNZC7bo2s1AtA", + "uiActions": { + "hideEnclosingContainer": true + }, + "actions": [ + { + "clickTrackingParams": "COUPEPBbGA0iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "responseText": { + "accessibility": { + "accessibilityData": { + "label": "All views of this video removed from history" + } + }, + "simpleText": "All views of this video removed from history" + }, + "trackingParams": "COcPEKW8ASITCOvOnbuAv4oDFVNdegUdbdc88Q==" + } + } + } + }, + { + "clickTrackingParams": "COUPEPBbGA0iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "hideItemSectionVideosByIdCommand": { + "videoId": "mPshy_DWxfo" + } + }, + { + "clickTrackingParams": "COUPEPBbGA0iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "accessibility": { + "accessibilityData": { + "label": "All views of this video removed from history" + } + }, + "simpleText": "All views of this video removed from history" + }, + "trackingParams": "COYPELlqIhMI686du4C_igMVU116BR1t1zzx" + } + }, + "popupType": "TOAST" + } + }, + { + "clickTrackingParams": "COUPEPBbGA0iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "localWatchHistoryCommand": { + "localWatchHistoryCommandType": "LOCAL_WATCH_HISTORY_COMMAND_TYPE_REMOVE", + "videoId": "mPshy_DWxfo" + } + } + ], + "contentId": "mPshy_DWxfo" + } + }, + "icon": { + "iconType": "DISMISSAL" + }, + "tooltip": "Remove from watch history", + "trackingParams": "COUPEPBbGA0iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "accessibilityData": { + "accessibilityData": { + "label": "Remove from watch history" + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/TpeTKFR6QWu4Cjam4PcpQwCPMnammWnSg93CdBvgFFLhkGm4nbQkUFKaAIYJ1ChUy9IgmJIQMRg=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "COIPENwwGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Arielle-no", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCM7OXM6t80a3e3tzQDWxwEA", + "canonicalBaseUrl": "/@Arielle-no" + } + }, + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayResumePlaybackRenderer": { + "percentDurationWatched": 100 + } + }, + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "6 seconds" + } + }, + "simpleText": "0:06" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "COQPEPnnAxgCIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "mPshy_DWxfo", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COQPEPnnAxgCIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "mPshy_DWxfo" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "COQPEPnnAxgCIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "COMPEMfsBBgDIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COMPEMfsBBgDIhMI686du4C_igMVU116BR1t1zzx", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "mPshy_DWxfo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COMPEMfsBBgDIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["mPshy_DWxfo"], + "params": "CAQ%3D" + } + }, + "videoIds": ["mPshy_DWxfo"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "COMPEMfsBBgDIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "avatar": { + "decoratedAvatarViewModel": { + "avatar": { + "avatarViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/TpeTKFR6QWu4Cjam4PcpQwCPMnammWnSg93CdBvgFFLhkGm4nbQkUFKaAIYJ1ChUy9IgmJIQMRg=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "avatarImageSize": "AVATAR_SIZE_M" + } + }, + "a11yLabel": "Go to channel", + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COIPENwwGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Arielle-no", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCM7OXM6t80a3e3tzQDWxwEA", + "canonicalBaseUrl": "/@Arielle-no" + } + } + } + } + } + } + } + } + }, + { + "videoRenderer": { + "videoId": "SRWatgS077k", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAN8mzi3fbrJgqJiEeqpMZXRa7AuQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLBgxonLRY-4QQ1-jR3Xen-fAZcHHQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLBOk1abznwO5Bm0_m5YXMFkU0JSog", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLCQt7cAJuE-W8t1TnQnSe5EVbsw8A", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "My Time at \"Camp Operetta\"" + } + ], + "accessibility": { + "accessibilityData": { + "label": "My Time at \"Camp Operetta\" by JaidenAnimations 23,907,328 views 9 minutes, 38 seconds" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "What can I say other than that was one heck of a time\n\nScribble Showdown Tickets: https://www.scribbleshowdown.com/\n\n\n♥ The Team ♥\nDenny: https://www.instagram.com/90percentknuckles/\nAtrox:..." + } + ] + }, + "longBylineText": { + "runs": [ + { + "text": "JaidenAnimations", + "navigationEndpoint": { + "clickTrackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@jaidenanimations", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCGwu0nbY2wSkW8N-cghnLpA", + "canonicalBaseUrl": "/@jaidenanimations" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "9 minutes, 38 seconds" + } + }, + "simpleText": "9:38" + }, + "viewCountText": { + "simpleText": "23,907,328 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPFaCUZFaGlzdG9yeZoBBwi4ARDx8AU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=SRWatgS077k&t=1s", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "SRWatgS077k", + "params": "uAIB", + "startTimeSeconds": 1, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=49159ab604b4efb9&ip=79.205.216.204&osts=1&initcwndbps=2682500&mt=1734994620&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "ownerText": { + "runs": [ + { + "text": "JaidenAnimations", + "navigationEndpoint": { + "clickTrackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@jaidenanimations", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCGwu0nbY2wSkW8N-cghnLpA", + "canonicalBaseUrl": "/@jaidenanimations" + } + } + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "JaidenAnimations", + "navigationEndpoint": { + "clickTrackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@jaidenanimations", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCGwu0nbY2wSkW8N-cghnLpA", + "canonicalBaseUrl": "/@jaidenanimations" + } + } + } + ] + }, + "trackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPFAud_TpeDW5opJ", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "23 million views" + } + }, + "simpleText": "23M views" + }, + "isWatched": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "COEPEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COEPEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "SRWatgS077k", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COEPEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["SRWatgS077k"], + "params": "CAQ%3D" + } + }, + "videoIds": ["SRWatgS077k"] + } + } + ] + } + }, + "trackingParams": "COEPEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "SRWatgS077k", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "trackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "clickTrackingParams": "COAPEJSsCRgMIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist" + } + }, + "addToPlaylistServiceEndpoint": { + "videoId": "SRWatgS077k" + } + }, + "trackingParams": "COAPEJSsCRgMIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CN8PENGqBRgNIhMI686du4C_igMVU116BR1t1zzx", + "offlineVideoEndpoint": { + "videoId": "SRWatgS077k", + "onAddCommand": { + "clickTrackingParams": "CN8PENGqBRgNIhMI686du4C_igMVU116BR1t1zzx", + "getDownloadActionCommand": { + "videoId": "SRWatgS077k", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CN8PENGqBRgNIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtTUldhdGdTMDc3aw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CN4PEI5iIhMI686du4C_igMVU116BR1t1zzx", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "hasSeparator": true + } + } + ], + "trackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "topLevelButtons": [ + { + "buttonRenderer": { + "style": "STYLE_OPACITY", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "serviceEndpoint": { + "clickTrackingParams": "CNsPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/feedback" + } + }, + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI40whQQJ5A9pO45yd45m0lRYUDa5ITP-SnHnPYGj8kBbDCGZWPjxb0Gym8Ci6QSsXFCSqG-70LYRke8UTBGFHkcWGXJA", + "uiActions": { + "hideEnclosingContainer": true + }, + "actions": [ + { + "clickTrackingParams": "CNsPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "responseText": { + "accessibility": { + "accessibilityData": { + "label": "All views of this video removed from history" + } + }, + "simpleText": "All views of this video removed from history" + }, + "trackingParams": "CN0PEKW8ASITCOvOnbuAv4oDFVNdegUdbdc88Q==" + } + } + } + }, + { + "clickTrackingParams": "CNsPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "hideItemSectionVideosByIdCommand": { + "videoId": "SRWatgS077k" + } + }, + { + "clickTrackingParams": "CNsPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "accessibility": { + "accessibilityData": { + "label": "All views of this video removed from history" + } + }, + "simpleText": "All views of this video removed from history" + }, + "trackingParams": "CNwPELlqIhMI686du4C_igMVU116BR1t1zzx" + } + }, + "popupType": "TOAST" + } + }, + { + "clickTrackingParams": "CNsPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "localWatchHistoryCommand": { + "localWatchHistoryCommandType": "LOCAL_WATCH_HISTORY_COMMAND_TYPE_REMOVE", + "videoId": "SRWatgS077k" + } + } + ], + "contentId": "SRWatgS077k" + } + }, + "icon": { + "iconType": "DISMISSAL" + }, + "tooltip": "Remove from watch history", + "trackingParams": "CNsPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "accessibilityData": { + "accessibilityData": { + "label": "Remove from watch history" + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/gopbHeiDtEB932rIFqLlR4D_hFtd-BcdGrQgGeyDpkD3guskkbT74DsJYPGo3x7MqkyqtgL-=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@jaidenanimations", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCGwu0nbY2wSkW8N-cghnLpA", + "canonicalBaseUrl": "/@jaidenanimations" + } + }, + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayResumePlaybackRenderer": { + "percentDurationWatched": 10 + } + }, + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "9 minutes, 38 seconds" + } + }, + "simpleText": "9:38" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNoPEPnnAxgDIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "SRWatgS077k", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNoPEPnnAxgDIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "SRWatgS077k" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CNoPEPnnAxgDIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNkPEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNkPEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "SRWatgS077k", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNkPEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["SRWatgS077k"], + "params": "CAQ%3D" + } + }, + "videoIds": ["SRWatgS077k"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CNkPEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/SRWatgS077k/mqdefault_6s.webp?du=3000&sqp=CIqmp7sG&rs=AOn4CLDtU_XzT8Y7QN3M-GyvKHZpCclf_g", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + }, + "avatar": { + "decoratedAvatarViewModel": { + "avatar": { + "avatarViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/gopbHeiDtEB932rIFqLlR4D_hFtd-BcdGrQgGeyDpkD3guskkbT74DsJYPGo3x7MqkyqtgL-=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "avatarImageSize": "AVATAR_SIZE_M" + } + }, + "a11yLabel": "Go to channel", + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CNgPENwwGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@jaidenanimations", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCGwu0nbY2wSkW8N-cghnLpA", + "canonicalBaseUrl": "/@jaidenanimations" + } + } + } + } + } + } + } + } + }, + { + "videoRenderer": { + "videoId": "kTxlkDoqArA", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLBYdDA06ekKDlhB0PSlTwf6Ih1cMg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAgu_Ad1pFCsa3jINV1ocaVOQWOXg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLDkOVQbyZlrZ_jbdkSzUd5RiobObA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLA5cnUH03I2lg1-FOJ01njh8UOJEw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "Wie Cartoons Früher gemacht wurden!" + } + ], + "accessibility": { + "accessibilityData": { + "label": "Wie Cartoons Früher gemacht wurden! by Plankton 390,010 views 4 minutes, 43 seconds" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Folgt mir auf Instagram!\nhttps://instagram.com/plankton.gif \n\nÜBER DEN KANAL:\nRede viel wenn der Tag lang ist" + } + ] + }, + "longBylineText": { + "runs": [ + { + "text": "Plankton", + "navigationEndpoint": { + "clickTrackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@plankton.mp4", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxTHCMaxURhapisCMBv8y0A", + "canonicalBaseUrl": "/@plankton.mp4" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 43 seconds" + } + }, + "simpleText": "4:43" + }, + "viewCountText": { + "simpleText": "390,010 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPFaCUZFaGlzdG9yeZoBBwi4ARDx8AU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=kTxlkDoqArA&t=1s", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "kTxlkDoqArA", + "params": "uAIB", + "startTimeSeconds": 1, + "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&siu=1&msp=1&odepv=1&id=913c65903a2a02b0&ip=79.205.216.204&osts=1&initcwndbps=2666250&mt=1734994620&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "ownerText": { + "runs": [ + { + "text": "Plankton", + "navigationEndpoint": { + "clickTrackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@plankton.mp4", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxTHCMaxURhapisCMBv8y0A", + "canonicalBaseUrl": "/@plankton.mp4" + } + } + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Plankton", + "navigationEndpoint": { + "clickTrackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@plankton.mp4", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxTHCMaxURhapisCMBv8y0A", + "canonicalBaseUrl": "/@plankton.mp4" + } + } + } + ] + }, + "trackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPFAsIWo0YOymZ6RAQ==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "390K views" + } + }, + "simpleText": "390K views" + }, + "isWatched": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcPEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNcPEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "kTxlkDoqArA", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNcPEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["kTxlkDoqArA"], + "params": "CAQ%3D" + } + }, + "videoIds": ["kTxlkDoqArA"] + } + } + ] + } + }, + "trackingParams": "CNcPEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "kTxlkDoqArA", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "trackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNYPEJSsCRgMIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist" + } + }, + "addToPlaylistServiceEndpoint": { + "videoId": "kTxlkDoqArA" + } + }, + "trackingParams": "CNYPEJSsCRgMIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNUPENGqBRgNIhMI686du4C_igMVU116BR1t1zzx", + "offlineVideoEndpoint": { + "videoId": "kTxlkDoqArA", + "onAddCommand": { + "clickTrackingParams": "CNUPENGqBRgNIhMI686du4C_igMVU116BR1t1zzx", + "getDownloadActionCommand": { + "videoId": "kTxlkDoqArA", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CNUPENGqBRgNIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtrVHhsa0RvcUFyQQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CNQPEI5iIhMI686du4C_igMVU116BR1t1zzx", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "hasSeparator": true + } + } + ], + "trackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "topLevelButtons": [ + { + "buttonRenderer": { + "style": "STYLE_OPACITY", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "serviceEndpoint": { + "clickTrackingParams": "CNEPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/feedback" + } + }, + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK8KIPI8wy4XH6UwO0_bVmR_OTZjWrKiIFrd1yEXZ_PAR-H0dv_ZaUGscWpAOgDDLC9ygHy3nwqSwsFp1a5YvKibfHE0g", + "uiActions": { + "hideEnclosingContainer": true + }, + "actions": [ + { + "clickTrackingParams": "CNEPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "responseText": { + "accessibility": { + "accessibilityData": { + "label": "All views of this video removed from history" + } + }, + "simpleText": "All views of this video removed from history" + }, + "trackingParams": "CNMPEKW8ASITCOvOnbuAv4oDFVNdegUdbdc88Q==" + } + } + } + }, + { + "clickTrackingParams": "CNEPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "hideItemSectionVideosByIdCommand": { + "videoId": "kTxlkDoqArA" + } + }, + { + "clickTrackingParams": "CNEPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "accessibility": { + "accessibilityData": { + "label": "All views of this video removed from history" + } + }, + "simpleText": "All views of this video removed from history" + }, + "trackingParams": "CNIPELlqIhMI686du4C_igMVU116BR1t1zzx" + } + }, + "popupType": "TOAST" + } + }, + { + "clickTrackingParams": "CNEPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "localWatchHistoryCommand": { + "localWatchHistoryCommandType": "LOCAL_WATCH_HISTORY_COMMAND_TYPE_REMOVE", + "videoId": "kTxlkDoqArA" + } + } + ], + "contentId": "kTxlkDoqArA" + } + }, + "icon": { + "iconType": "DISMISSAL" + }, + "tooltip": "Remove from watch history", + "trackingParams": "CNEPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "accessibilityData": { + "accessibilityData": { + "label": "Remove from watch history" + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/Cdlsy3IXgis5hNYRwvohPB9AIxH8tNdEo9CwxXK1i3QEUO7YN3p4YJ_cd5ruGsmNhvoX7803=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@plankton.mp4", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxTHCMaxURhapisCMBv8y0A", + "canonicalBaseUrl": "/@plankton.mp4" + } + }, + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayResumePlaybackRenderer": { + "percentDurationWatched": 10 + } + }, + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 43 seconds" + } + }, + "simpleText": "4:43" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNAPEPnnAxgDIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "kTxlkDoqArA", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNAPEPnnAxgDIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "kTxlkDoqArA" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CNAPEPnnAxgDIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CM8PEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CM8PEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "kTxlkDoqArA", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CM8PEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["kTxlkDoqArA"], + "params": "CAQ%3D" + } + }, + "videoIds": ["kTxlkDoqArA"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CM8PEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/kTxlkDoqArA/mqdefault_6s.webp?du=3000&sqp=COCdp7sG&rs=AOn4CLBkpVqcMrAS89pg83E2KiKogh0n4w", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + }, + "avatar": { + "decoratedAvatarViewModel": { + "avatar": { + "avatarViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/Cdlsy3IXgis5hNYRwvohPB9AIxH8tNdEo9CwxXK1i3QEUO7YN3p4YJ_cd5ruGsmNhvoX7803=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "avatarImageSize": "AVATAR_SIZE_M" + } + }, + "a11yLabel": "Go to channel", + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CM4PENwwGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@plankton.mp4", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxTHCMaxURhapisCMBv8y0A", + "canonicalBaseUrl": "/@plankton.mp4" + } + } + } + } + } + } + } + } + }, + { + "videoRenderer": { + "videoId": "oIVSKQ8NMqk", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAeTbOz6FlrH1x3jA4AwYcTGmUwxg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAEzpr1xBI-8jJwZz72NHj9VKyefA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLBNzC8nvKtO7fmqzavWemou7QOLOg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLA1_VgkVeq4ELmrQ8a4vhtJhg6TMA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "What I learned on highschool swim" + } + ], + "accessibility": { + "accessibilityData": { + "label": "What I learned on highschool swim by illymation 6,491,367 views 10 minutes, 20 seconds" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "okay, so I wasn't the BEST ... but I tried my best!\n▶ Black Friday Merch sale: https://www.hereforthechaos.com\n▶ SNEAK PEEKS ON PATREON! http://patreon.com/illymation\n\n▶ BG ARTIST: Ingrid..." + } + ] + }, + "longBylineText": { + "runs": [ + { + "text": "illymation", + "navigationEndpoint": { + "clickTrackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@illymation", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCsKVP_4zQ877TEiH_Ih5yDQ", + "canonicalBaseUrl": "/@illymation" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "10 minutes, 20 seconds" + } + }, + "simpleText": "10:20" + }, + "viewCountText": { + "simpleText": "6,491,367 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPFaCUZFaGlzdG9yeZoBBwi4ARDx8AU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=oIVSKQ8NMqk", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "oIVSKQ8NMqk", + "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&siu=1&msp=1&odepv=1&id=a08552290f0d32a9&ip=79.205.216.204&initcwndbps=2682500&mt=1734994620&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "ownerText": { + "runs": [ + { + "text": "illymation", + "navigationEndpoint": { + "clickTrackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@illymation", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCsKVP_4zQ877TEiH_Ih5yDQ", + "canonicalBaseUrl": "/@illymation" + } + } + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "illymation", + "navigationEndpoint": { + "clickTrackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@illymation", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCsKVP_4zQ877TEiH_Ih5yDQ", + "canonicalBaseUrl": "/@illymation" + } + } + } + ] + }, + "trackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPFAqeW0-JDF1MKgAQ==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "6.4 million views" + } + }, + "simpleText": "6.4M views" + }, + "isWatched": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0PEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CM0PEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "oIVSKQ8NMqk", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CM0PEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["oIVSKQ8NMqk"], + "params": "CAQ%3D" + } + }, + "videoIds": ["oIVSKQ8NMqk"] + } + } + ] + } + }, + "trackingParams": "CM0PEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "oIVSKQ8NMqk", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "trackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwPEJSsCRgMIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist" + } + }, + "addToPlaylistServiceEndpoint": { + "videoId": "oIVSKQ8NMqk" + } + }, + "trackingParams": "CMwPEJSsCRgMIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMsPENGqBRgNIhMI686du4C_igMVU116BR1t1zzx", + "offlineVideoEndpoint": { + "videoId": "oIVSKQ8NMqk", + "onAddCommand": { + "clickTrackingParams": "CMsPENGqBRgNIhMI686du4C_igMVU116BR1t1zzx", + "getDownloadActionCommand": { + "videoId": "oIVSKQ8NMqk", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CMsPENGqBRgNIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtvSVZTS1E4Tk1xaw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CMoPEI5iIhMI686du4C_igMVU116BR1t1zzx", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "hasSeparator": true + } + } + ], + "trackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "topLevelButtons": [ + { + "buttonRenderer": { + "style": "STYLE_OPACITY", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "serviceEndpoint": { + "clickTrackingParams": "CMcPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/feedback" + } + }, + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKECANBOxlj_Y5po2pCsuk-gnmRnAAWecQkeUgwvfWY3LFxoL9nAkeQbBSbiamxZjQIT05W-9n3qzHvdfuW-ipv6kTV1A", + "uiActions": { + "hideEnclosingContainer": true + }, + "actions": [ + { + "clickTrackingParams": "CMcPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "responseText": { + "accessibility": { + "accessibilityData": { + "label": "All views of this video removed from history" + } + }, + "simpleText": "All views of this video removed from history" + }, + "trackingParams": "CMkPEKW8ASITCOvOnbuAv4oDFVNdegUdbdc88Q==" + } + } + } + }, + { + "clickTrackingParams": "CMcPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "hideItemSectionVideosByIdCommand": { + "videoId": "oIVSKQ8NMqk" + } + }, + { + "clickTrackingParams": "CMcPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "accessibility": { + "accessibilityData": { + "label": "All views of this video removed from history" + } + }, + "simpleText": "All views of this video removed from history" + }, + "trackingParams": "CMgPELlqIhMI686du4C_igMVU116BR1t1zzx" + } + }, + "popupType": "TOAST" + } + }, + { + "clickTrackingParams": "CMcPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "localWatchHistoryCommand": { + "localWatchHistoryCommandType": "LOCAL_WATCH_HISTORY_COMMAND_TYPE_REMOVE", + "videoId": "oIVSKQ8NMqk" + } + } + ], + "contentId": "oIVSKQ8NMqk" + } + }, + "icon": { + "iconType": "DISMISSAL" + }, + "tooltip": "Remove from watch history", + "trackingParams": "CMcPEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "accessibilityData": { + "accessibilityData": { + "label": "Remove from watch history" + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_n3doafn2qRRawkYet_KQdH2Jl1ugSQnjnd0Ham12C9MYI=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@illymation", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCsKVP_4zQ877TEiH_Ih5yDQ", + "canonicalBaseUrl": "/@illymation" + } + }, + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayResumePlaybackRenderer": { + "percentDurationWatched": 10 + } + }, + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "10 minutes, 20 seconds" + } + }, + "simpleText": "10:20" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMYPEPnnAxgDIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "oIVSKQ8NMqk", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMYPEPnnAxgDIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "oIVSKQ8NMqk" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CMYPEPnnAxgDIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMUPEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMUPEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "oIVSKQ8NMqk", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMUPEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["oIVSKQ8NMqk"], + "params": "CAQ%3D" + } + }, + "videoIds": ["oIVSKQ8NMqk"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CMUPEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/oIVSKQ8NMqk/mqdefault_6s.webp?du=3000&sqp=CLrQp7sG&rs=AOn4CLA6bRkeUs6dybe33ytXtFGYMsbhnA", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + }, + "avatar": { + "decoratedAvatarViewModel": { + "avatar": { + "avatarViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_n3doafn2qRRawkYet_KQdH2Jl1ugSQnjnd0Ham12C9MYI=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "avatarImageSize": "AVATAR_SIZE_M" + } + }, + "a11yLabel": "Go to channel", + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CMQPENwwGAMiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@illymation", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCsKVP_4zQ877TEiH_Ih5yDQ", + "canonicalBaseUrl": "/@illymation" + } + } + } + } + } + } + } + } + }, + { + "videoRenderer": { + "videoId": "X30eFeqrHJo", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAc6-vKGjlwODu5rDSHK2tz4sRzYQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAE7jwC0MudkKK-I1nyGvCheljvtQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLAfIZ4htcNHP3RWahpR4XM7U-UTFQ", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLDYMLObTeyxHK_PewK4Rwk3V-2KGw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "My Last Week of University!" + } + ], + "accessibility": { + "accessibilityData": { + "label": "My Last Week of University! by Ruby Granger 132,844 views 10 minutes, 59 seconds" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "This first year has been somewhat hectic, and certainly was tricky in the first semester; however, I have enjoyed it immensely and, as I said, am sad that this term has now ended. I am returning..." + } + ] + }, + "longBylineText": { + "runs": [ + { + "text": "Ruby Granger", + "navigationEndpoint": { + "clickTrackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@RubyGranger8", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC6a8lp6vaCMhUVXPyynhjUA", + "canonicalBaseUrl": "/@RubyGranger8" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "10 minutes, 59 seconds" + } + }, + "simpleText": "10:59" + }, + "viewCountText": { + "simpleText": "132,844 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPFaCUZFaGlzdG9yeZoBBwi4ARDx8AU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=X30eFeqrHJo&t=2s", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "X30eFeqrHJo", + "params": "uAIC", + "startTimeSeconds": 2, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=5f7d1e15eaab1c9a&ip=79.205.216.204&osts=2&initcwndbps=2666250&mt=1734994620&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "ownerText": { + "runs": [ + { + "text": "Ruby Granger", + "navigationEndpoint": { + "clickTrackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@RubyGranger8", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC6a8lp6vaCMhUVXPyynhjUA", + "canonicalBaseUrl": "/@RubyGranger8" + } + } + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Ruby Granger", + "navigationEndpoint": { + "clickTrackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@RubyGranger8", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC6a8lp6vaCMhUVXPyynhjUA", + "canonicalBaseUrl": "/@RubyGranger8" + } + } + } + ] + }, + "trackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPFAmrms1d7Cx75f", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "132K views" + } + }, + "simpleText": "132K views" + }, + "isWatched": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMMPEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMMPEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "X30eFeqrHJo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMMPEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["X30eFeqrHJo"], + "params": "CAQ%3D" + } + }, + "videoIds": ["X30eFeqrHJo"] + } + } + ] + } + }, + "trackingParams": "CMMPEP6YBBgKIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "X30eFeqrHJo", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "trackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMIPEJSsCRgMIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist" + } + }, + "addToPlaylistServiceEndpoint": { + "videoId": "X30eFeqrHJo" + } + }, + "trackingParams": "CMIPEJSsCRgMIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMEPENGqBRgNIhMI686du4C_igMVU116BR1t1zzx", + "offlineVideoEndpoint": { + "videoId": "X30eFeqrHJo", + "onAddCommand": { + "clickTrackingParams": "CMEPENGqBRgNIhMI686du4C_igMVU116BR1t1zzx", + "getDownloadActionCommand": { + "videoId": "X30eFeqrHJo", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CMEPENGqBRgNIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtYMzBlRmVxckhKbw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CMAPEI5iIhMI686du4C_igMVU116BR1t1zzx", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "hasSeparator": true + } + } + ], + "trackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "topLevelButtons": [ + { + "buttonRenderer": { + "style": "STYLE_OPACITY", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "serviceEndpoint": { + "clickTrackingParams": "CL0PEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/feedback" + } + }, + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI0MiGbKWjAm7__rXirBEkAsnuElCot-h8k8yQxngaZPWfFH9rwI8TwjHZPnhVjc8z3hEf4zqBuq7F-sR0rRcS6gLAQcg", + "uiActions": { + "hideEnclosingContainer": true + }, + "actions": [ + { + "clickTrackingParams": "CL0PEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "responseText": { + "accessibility": { + "accessibilityData": { + "label": "All views of this video removed from history" + } + }, + "simpleText": "All views of this video removed from history" + }, + "trackingParams": "CL8PEKW8ASITCOvOnbuAv4oDFVNdegUdbdc88Q==" + } + } + } + }, + { + "clickTrackingParams": "CL0PEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "hideItemSectionVideosByIdCommand": { + "videoId": "X30eFeqrHJo" + } + }, + { + "clickTrackingParams": "CL0PEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "openPopupAction": { + "popup": { + "notificationActionRenderer": { + "responseText": { + "accessibility": { + "accessibilityData": { + "label": "All views of this video removed from history" + } + }, + "simpleText": "All views of this video removed from history" + }, + "trackingParams": "CL4PELlqIhMI686du4C_igMVU116BR1t1zzx" + } + }, + "popupType": "TOAST" + } + }, + { + "clickTrackingParams": "CL0PEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "localWatchHistoryCommand": { + "localWatchHistoryCommandType": "LOCAL_WATCH_HISTORY_COMMAND_TYPE_REMOVE", + "videoId": "X30eFeqrHJo" + } + } + ], + "contentId": "X30eFeqrHJo" + } + }, + "icon": { + "iconType": "DISMISSAL" + }, + "tooltip": "Remove from watch history", + "trackingParams": "CL0PEPBbGA8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "accessibilityData": { + "accessibilityData": { + "label": "Remove from watch history" + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/u9qrR3ceVkt7yen48Rd1WWV_w-OdE5iejCNI2y-PyG0tpd7xlqWFDahsaZa02cMk7O-0WkCL=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@RubyGranger8", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC6a8lp6vaCMhUVXPyynhjUA", + "canonicalBaseUrl": "/@RubyGranger8" + } + }, + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayResumePlaybackRenderer": { + "percentDurationWatched": 10 + } + }, + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "10 minutes, 59 seconds" + } + }, + "simpleText": "10:59" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLwPEPnnAxgDIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "X30eFeqrHJo", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLwPEPnnAxgDIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "X30eFeqrHJo" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CLwPEPnnAxgDIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLsPEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLsPEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "X30eFeqrHJo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLsPEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["X30eFeqrHJo"], + "params": "CAQ%3D" + } + }, + "videoIds": ["X30eFeqrHJo"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CLsPEMfsBBgEIhMI686du4C_igMVU116BR1t1zzx" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/X30eFeqrHJo/mqdefault_6s.webp?du=3000&sqp=CKi4p7sG&rs=AOn4CLA2LgiBcmQNff2Vf3UkeCnpZL6gHQ", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + }, + "avatar": { + "decoratedAvatarViewModel": { + "avatar": { + "avatarViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/u9qrR3ceVkt7yen48Rd1WWV_w-OdE5iejCNI2y-PyG0tpd7xlqWFDahsaZa02cMk7O-0WkCL=s68-c-k-c0x00ffffff-no-rj", + "width": 68, + "height": 68 + } + ] + }, + "avatarImageSize": "AVATAR_SIZE_M" + } + }, + "a11yLabel": "Go to channel", + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CLoPENwwGAQiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@RubyGranger8", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC6a8lp6vaCMhUVXPyynhjUA", + "canonicalBaseUrl": "/@RubyGranger8" + } + } + } + } + } + } + } + } + } + ], + "trackingParams": "CBoQuy8YASITCOvOnbuAv4oDFVNdegUdbdc88Q==", + "header": { + "itemSectionHeaderRenderer": { + "title": { + "runs": [ + { + "text": "Yesterday" + } + ] + } + } + } + } + }, + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CBkQui8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJMEglGRWhpc3RvcnkaKENBSjZHbmx5WVRWb2QyOU9RMmR6U1RSaGNXMTFkMWxSTms4M05WcFKaAhRicm93c2UtZmVlZEZFaGlzdG9yeQ%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE" + } + } + } + } + ], + "trackingParams": "CBkQui8iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "targetId": "browse-feedFEhistory" + } + }, + "tabIdentifier": "FEhistory", + "accessibility": { + "accessibilityData": { + "label": "history" + } + }, + "trackingParams": "CBgQ8JMBGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=" + } + } + ] + } + }, + "header": { + "pageHeaderRenderer": { + "pageTitle": "Watch history", + "content": { + "pageHeaderViewModel": { + "title": { + "dynamicTextViewModel": { + "text": { + "content": "Watch history" + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBcQj-QKIhMI686du4C_igMVU116BR1t1zzx", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176655, + "veCounter": 312942093 + } + } + } + } + } + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBYQot8KIhMI686du4C_igMVU116BR1t1zzx", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176034, + "veCounter": 312942092 + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQhGciEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "topbar": { + "desktopTopbarRenderer": { + "logo": { + "topbarLogoRenderer": { + "iconImage": { + "iconType": "YOUTUBE_LOGO" + }, + "tooltipText": { + "runs": [ + { + "text": "YouTube Home" + } + ] + }, + "endpoint": { + "clickTrackingParams": "CBUQsV4iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 3854, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "FEwhat_to_watch" + } + }, + "trackingParams": "CBUQsV4iEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "overrideEntityKey": "EgZ0b3BiYXIg9QEoAQ%3D%3D" + } + }, + "searchbox": { + "fusionSearchboxRenderer": { + "icon": { + "iconType": "SEARCH" + }, + "placeholderText": { + "runs": [ + { + "text": "Search" + } + ] + }, + "config": { + "webSearchboxConfig": { + "requestLanguage": "en", + "requestDomain": "de", + "hasOnscreenKeyboard": false, + "focusSearchbox": true + } + }, + "trackingParams": "CBMQ7VAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "searchEndpoint": { + "clickTrackingParams": "CBMQ7VAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/results?search_query=", + "webPageType": "WEB_PAGE_TYPE_SEARCH", + "rootVe": 4724 + } + }, + "searchEndpoint": { + "query": "" + } + }, + "clearButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "CLOSE" + }, + "trackingParams": "CBQQ8FsiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "accessibilityData": { + "accessibilityData": { + "label": "Clear search query" + } + } + } + } + } + }, + "trackingParams": "CAEQq6wBIhMI686du4C_igMVU116BR1t1zzx", + "countryCode": "DE", + "topbarButtons": [ + { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "text": { + "runs": [ + { + "text": "Create" + } + ] + }, + "icon": { + "iconType": "ADD" + }, + "trackingParams": "CA4Q8FsYACITCOvOnbuAv4oDFVNdegUdbdc88Q==", + "command": { + "clickTrackingParams": "CA4Q8FsYACITCOvOnbuAv4oDFVNdegUdbdc88Q==", + "openPopupAction": { + "popup": { + "multiPageMenuRenderer": { + "sections": [ + { + "multiPageMenuSectionRenderer": { + "items": [ + { + "compactLinkRenderer": { + "icon": { + "iconType": "CREATION_UPLOAD" + }, + "title": { + "runs": [ + { + "text": "Upload video" + } + ] + }, + "trackingParams": "CBIQ898CGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "serviceEndpoint": { + "clickTrackingParams": "CBIQ898CGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/create_channel?channel_creation_token=KBQ%253D", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769, + "apiUrl": "/youtubei/v1/channel/get_channel_creation_form" + } + }, + "channelCreationFormEndpoint": { + "channelCreationToken": "S0JRJTNE", + "source": "UPLOAD_POPUP_CHANNEL_CREATION_SOURCE" + } + }, + "style": "COMPACT_LINK_STYLE_TYPE_CREATION_MENU" + } + }, + { + "compactLinkRenderer": { + "icon": { + "iconType": "CREATION_LIVE" + }, + "title": { + "runs": [ + { + "text": "Go live" + } + ] + }, + "trackingParams": "CBEQ9N8CGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "serviceEndpoint": { + "clickTrackingParams": "CBEQ9N8CGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/create_channel?channel_creation_token=KBU%253D", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769, + "apiUrl": "/youtubei/v1/channel/get_channel_creation_form" + } + }, + "channelCreationFormEndpoint": { + "channelCreationToken": "S0JVJTNE", + "source": "GOLIVE_POPUP_CHANNEL_CREATION_SOURCE" + } + }, + "style": "COMPACT_LINK_STYLE_TYPE_CREATION_MENU" + } + } + ], + "trackingParams": "CBAQ968BGAAiEwjrzp27gL-KAxVTXXoFHW3XPPE=" + } + } + ], + "trackingParams": "CA8Q_6sBIhMI686du4C_igMVU116BR1t1zzx", + "style": "MULTI_PAGE_MENU_STYLE_TYPE_CREATION" + } + }, + "popupType": "RESPONSIVE_DROPDOWN" + } + } + } + }, + { + "notificationTopbarButtonRenderer": { + "icon": { + "iconType": "NOTIFICATIONS_CAIRO" + }, + "menuRequest": { + "clickTrackingParams": "CAwQovoBGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "GET_NOTIFICATIONS_INBOX", + "actions": [ + { + "clickTrackingParams": "CAwQovoBGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "openPopupAction": { + "popup": { + "multiPageMenuRenderer": { + "trackingParams": "CA0Q_6sBIhMI686du4C_igMVU116BR1t1zzx", + "style": "MULTI_PAGE_MENU_STYLE_TYPE_NOTIFICATIONS", + "showLoadingSpinner": true + } + }, + "popupType": "DROPDOWN", + "beReused": true + } + } + ] + } + }, + "style": "NOTIFICATION_BUTTON_STYLE_TYPE_DEFAULT", + "trackingParams": "CAwQovoBGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "accessibility": { + "accessibilityData": { + "label": "Notifications" + } + }, + "tooltip": "Notifications", + "updateUnseenCountEndpoint": { + "clickTrackingParams": "CAwQovoBGAEiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/get_unseen_count" + } + }, + "signalServiceEndpoint": { + "signal": "GET_UNSEEN_NOTIFICATION_COUNT" + } + }, + "notificationCount": 0, + "handlerDatas": ["NOTIFICATION_ACTION_UPDATE_UNSEEN_COUNT"] + } + }, + { + "topbarMenuButtonRenderer": { + "avatar": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/yti/ANjgQV94kaQX0pMszYcmEsgWdWw_cJhSFN_jRAt6Wk6r6g=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + } + ], + "accessibility": { + "accessibilityData": { + "label": "Avatar image" + } + } + }, + "menuRequest": { + "clickTrackingParams": "CAoQ_qsBGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/account/account_menu" + } + }, + "signalServiceEndpoint": { + "signal": "GET_ACCOUNT_MENU", + "actions": [ + { + "clickTrackingParams": "CAoQ_qsBGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "openPopupAction": { + "popup": { + "multiPageMenuRenderer": { + "trackingParams": "CAsQ_6sBIhMI686du4C_igMVU116BR1t1zzx", + "style": "MULTI_PAGE_MENU_STYLE_TYPE_ACCOUNT", + "showLoadingSpinner": true + } + }, + "popupType": "DROPDOWN", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CAoQ_qsBGAIiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "accessibility": { + "accessibilityData": { + "label": "Account menu" + } + }, + "tooltip": "Account menu" + } + } + ], + "hotkeyDialog": { + "hotkeyDialogRenderer": { + "title": { + "runs": [ + { + "text": "Keyboard shortcuts" + } + ] + }, + "sections": [ + { + "hotkeyDialogSectionRenderer": { + "title": { + "runs": [ + { + "text": "Playback" + } + ] + }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle play/pause" + } + ] + }, + "hotkey": "k" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rewind 10 seconds" + } + ] + }, + "hotkey": "j" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Fast forward 10 seconds" + } + ] + }, + "hotkey": "l" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Previous video" + } + ] + }, + "hotkey": "P (SHIFT+p)" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Next video" + } + ] + }, + "hotkey": "N (SHIFT+n)" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Previous frame (while paused)" + } + ] + }, + "hotkey": ",", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Comma" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Next frame (while paused)" + } + ] + }, + "hotkey": ".", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Period" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Decrease playback rate" + } + ] + }, + "hotkey": "\u003c (SHIFT+,)", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Less than or SHIFT + comma" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Increase playback rate" + } + ] + }, + "hotkey": "\u003e (SHIFT+.)", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Greater than or SHIFT + period" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Seek to specific point in the video (7 advances to 70% of duration)" + } + ] + }, + "hotkey": "0..9" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Seek to previous chapter" + } + ] + }, + "hotkey": "CONTROL + ←" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Seek to next chapter" + } + ] + }, + "hotkey": "CONTROL + →" + } + } + ] + } + }, + { + "hotkeyDialogSectionRenderer": { + "title": { + "runs": [ + { + "text": "General" + } + ] + }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle full screen" + } + ] + }, + "hotkey": "f" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle theater mode" + } + ] + }, + "hotkey": "t" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle miniplayer" + } + ] + }, + "hotkey": "i" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Close miniplayer or current dialog" + } + ] + }, + "hotkey": "ESCAPE" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Toggle mute" + } + ] + }, + "hotkey": "m" + } + } + ] + } + }, + { + "hotkeyDialogSectionRenderer": { + "title": { + "runs": [ + { + "text": "Subtitles and closed captions" + } + ] + }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "If the video supports captions, toggle captions ON/OFF" + } + ] + }, + "hotkey": "c" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rotate through different text opacity levels" + } + ] + }, + "hotkey": "o" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rotate through different window opacity levels" + } + ] + }, + "hotkey": "w" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rotate through font sizes (increasing)" + } + ] + }, + "hotkey": "+" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Rotate through font sizes (decreasing)" + } + ] + }, + "hotkey": "-", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Minus" + } + } + } + } + ] + } + }, + { + "hotkeyDialogSectionRenderer": { + "title": { + "runs": [ + { + "text": "Spherical Videos" + } + ] + }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Pan up" + } + ] + }, + "hotkey": "w" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Pan left" + } + ] + }, + "hotkey": "a" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Pan down" + } + ] + }, + "hotkey": "s" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Pan right" + } + ] + }, + "hotkey": "d" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Zoom in" + } + ] + }, + "hotkey": "+ on numpad or ]", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Plus on number pad or right bracket" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Zoom out" + } + ] + }, + "hotkey": "- on numpad or [", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Minus on number pad or left bracket" + } + } + } + } + ] + } + } + ], + "dismissButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Dismiss" + } + ] + }, + "trackingParams": "CAkQ8FsiEwjrzp27gL-KAxVTXXoFHW3XPPE=" + } + }, + "trackingParams": "CAgQteYDIhMI686du4C_igMVU116BR1t1zzx" + } + }, + "backButton": { + "buttonRenderer": { + "trackingParams": "CAcQvIYDIhMI686du4C_igMVU116BR1t1zzx", + "command": { + "clickTrackingParams": "CAcQvIYDIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAcQvIYDIhMI686du4C_igMVU116BR1t1zzx", + "signalAction": { + "signal": "HISTORY_BACK" + } + } + ] + } + } + } + }, + "forwardButton": { + "buttonRenderer": { + "trackingParams": "CAYQvYYDIhMI686du4C_igMVU116BR1t1zzx", + "command": { + "clickTrackingParams": "CAYQvYYDIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAYQvYYDIhMI686du4C_igMVU116BR1t1zzx", + "signalAction": { + "signal": "HISTORY_FORWARD" + } + } + ] + } + } + } + }, + "a11ySkipNavigationButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Skip navigation" + } + ] + }, + "trackingParams": "CAUQ8FsiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "command": { + "clickTrackingParams": "CAUQ8FsiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAUQ8FsiEwjrzp27gL-KAxVTXXoFHW3XPPE=", + "signalAction": { + "signal": "SKIP_NAVIGATION" + } + } + ] + } + } + } + }, + "voiceSearchButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "serviceEndpoint": { + "clickTrackingParams": "CAIQ7a8FIhMI686du4C_igMVU116BR1t1zzx", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAIQ7a8FIhMI686du4C_igMVU116BR1t1zzx", + "openPopupAction": { + "popup": { + "voiceSearchDialogRenderer": { + "placeholderHeader": { + "runs": [ + { + "text": "Listening..." + } + ] + }, + "promptHeader": { + "runs": [ + { + "text": "Didn't hear that. Try again." + } + ] + }, + "exampleQuery1": { + "runs": [ + { + "text": "\"Play Dua Lipa\"" + } + ] + }, + "exampleQuery2": { + "runs": [ + { + "text": "\"Show me my subscriptions\"" + } + ] + }, + "promptMicrophoneLabel": { + "runs": [ + { + "text": "Tap microphone to try again" + } + ] + }, + "loadingHeader": { + "runs": [ + { + "text": "Working..." + } + ] + }, + "connectionErrorHeader": { + "runs": [ + { + "text": "No connection" + } + ] + }, + "connectionErrorMicrophoneLabel": { + "runs": [ + { + "text": "Check your connection and try again" + } + ] + }, + "permissionsHeader": { + "runs": [ + { + "text": "Waiting for permission" + } + ] + }, + "permissionsSubtext": { + "runs": [ + { + "text": "Allow microphone access to search with voice" + } + ] + }, + "disabledHeader": { + "runs": [ + { + "text": "Search with your voice" + } + ] + }, + "disabledSubtext": { + "runs": [ + { + "text": "To search by voice, go to your browser settings and allow access to microphone" + } + ] + }, + "microphoneButtonAriaLabel": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "exitButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "CLOSE" + }, + "trackingParams": "CAQQ0LEFIhMI686du4C_igMVU116BR1t1zzx", + "accessibilityData": { + "accessibilityData": { + "label": "Cancel" + } + } + } + }, + "trackingParams": "CAMQ7q8FIhMI686du4C_igMVU116BR1t1zzx", + "microphoneOffPromptHeader": { + "runs": [ + { + "text": "Microphone off. Try again." + } + ] + } + } + }, + "popupType": "TOP_ALIGNED_DIALOG" + } + } + ] + } + }, + "icon": { + "iconType": "MICROPHONE_ON" + }, + "tooltip": "Search with your voice", + "trackingParams": "CAIQ7a8FIhMI686du4C_igMVU116BR1t1zzx", + "accessibilityData": { + "accessibilityData": { + "label": "Search with your voice" + } + } + } + } + } + } +} diff --git a/testfiles/history/subscription_feed.json b/testfiles/history/subscription_feed.json new file mode 100644 index 0000000..820abd3 --- /dev/null +++ b/testfiles/history/subscription_feed.json @@ -0,0 +1,76628 @@ +{ + "contents": { + "twoColumnBrowseResultsRenderer": { + "tabs": [ + { + "tabRenderer": { + "accessibility": { + "accessibilityData": { + "label": "subscriptions" + } + }, + "content": { + "richGridRenderer": { + "contents": [ + { + "richSectionRenderer": { + "content": { + "shelfRenderer": { + "menu": { + "menuRenderer": { + "topLevelButtons": [ + { + "buttonRenderer": { + "accessibility": { + "label": "Switch to grid view" + }, + "command": { + "clickTrackingParams": "CNIIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "persistSubscriptionsDisplayPreferencesCommand": { + "useListView": false + } + }, + "icon": { + "iconType": "VIEW_MODULE" + }, + "isDisabled": false, + "isSelected": true, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "FEsubscriptions", + "params": "MAE%3D" + }, + "clickTrackingParams": "CNIIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 96368, + "url": "/feed/subscriptions?flow=1", + "webPageType": "WEB_PAGE_TYPE_BROWSE" + } + } + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_OPACITY", + "tooltip": "Grid", + "trackingParams": "CNIIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "buttonRenderer": { + "accessibility": { + "label": "Switch to list view" + }, + "command": { + "clickTrackingParams": "CNEIEPBbGAEiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "persistSubscriptionsDisplayPreferencesCommand": { + "useListView": true + } + }, + "icon": { + "iconType": "VIEW_LIST" + }, + "isDisabled": false, + "isSelected": false, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "FEsubscriptions", + "params": "MAI%3D" + }, + "clickTrackingParams": "CNEIEPBbGAEiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 96368, + "url": "/feed/subscriptions?flow=2", + "webPageType": "WEB_PAGE_TYPE_BROWSE" + } + } + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_OPACITY", + "tooltip": "List", + "trackingParams": "CNEIEPBbGAEiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CM8IENwcIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "subscribeButton": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "FEchannels" + }, + "clickTrackingParams": "CNAIEPBbIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 6827, + "url": "/feed/channels", + "webPageType": "WEB_PAGE_TYPE_BROWSE" + } + } + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Manage" + } + ] + }, + "trackingParams": "CNAIEPBbIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "title": { + "runs": [ + { + "text": "Latest" + } + ] + }, + "trackingParams": "CM8IENwcIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "trackingParams": "CM4IEOOXBRgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "World Friends Facebook\n👉 / 100090310914821 \n\nTODAY 10 EUROPEAN Compare each countries LUXURY BRAND Pronunciation differences!!\n\nHope you enjoy the video! \nAlso, please follow our panels!..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Nk2oIzFdEjQ&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "Nk2oIzFdEjQ", + "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&siu=1&msp=1&odepv=1&id=364da823315d1234&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "16 minutes, 58 seconds" + } + }, + "simpleText": "16:58" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "World Friends" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0IEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CM0IEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Nk2oIzFdEjQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "Nk2oIzFdEjQ", + "videoIds": [ + "Nk2oIzFdEjQ" + ] + }, + "clickTrackingParams": "CM0IEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CM0IEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Nk2oIzFdEjQ" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "Nk2oIzFdEjQ" + }, + "clickTrackingParams": "CMwIEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMwIEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMsIENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CMsIENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "Nk2oIzFdEjQ" + } + }, + "videoId": "Nk2oIzFdEjQ" + } + }, + "trackingParams": "CMsIENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CMoIEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtOazJvSXpGZEVqUQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMkIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMkIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "Nk2oIzFdEjQ", + "undoToken": "AB9zfpJ6KQ1UlAJsR_bSB07fZKvSPe4hK90LaqP_jzUusShC75KMJUrBTCazqukdAKV7YPerjRVhhIXIo_H3YS4Bsay_eQkleUsMbBhz-g_PAFb0tKqnAMGYf5H-ovKezxfxetBjfWyi" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CMkIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CMgIEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "Nk2oIzFdEjQ", + "feedbackToken": "AB9zfpKPypxQcRdjhqJsDhBZjrbd3GW28kGUvEq8-4SXvlFqP9iz_8EL9KZA8HBKUnk2AmSRa-ocsuX8K2M5KVNSnwErwVZfIQ3zG201koFG3BTonhar95Ka197Q_TijVn_oHGikfo6N", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Nk2oIzFdEjQ", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "Nk2oIzFdEjQ", + "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&siu=1&msp=1&odepv=1&id=364da823315d1234&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "World Friends" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 minutes ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/Nk2oIzFdEjQ/mqdefault_6s.webp?du=3000&sqp=CIy6sLsG&rs=AOn4CLAzZmi5D-FxyBEksvXKPuKhL6UbMQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "World Friends" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "62 views" + } + }, + "simpleText": "62 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/Nk2oIzFdEjQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBICjocxzrrksCKCYGK27wiaCW_Gw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Nk2oIzFdEjQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCCUG6zZq8-4_ylw6EzHgZ6VM-Bmg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Nk2oIzFdEjQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBtHcdbSG5TSSYhLly396dHjMpLlQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "16 minutes, 58 seconds" + } + }, + "simpleText": "16:58" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMcIEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Nk2oIzFdEjQ" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CMcIEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMcIEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Nk2oIzFdEjQ" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CMYIEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMYIEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMYIEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Nk2oIzFdEjQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "Nk2oIzFdEjQ", + "videoIds": [ + "Nk2oIzFdEjQ" + ] + }, + "clickTrackingParams": "CMYIEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "LUXURY BRAND Pronunciation Differences in 10 EUROPEAN LANGUAGES!! by World Friends 62 views 2 minutes ago 16 minutes" + } + }, + "runs": [ + { + "text": "LUXURY BRAND Pronunciation Differences in 10 EUROPEAN LANGUAGES!!" + } + ] + }, + "trackingParams": "CMUIENwwIhMInfL4orPDigMVbHR6BR25GwwEQLSk9IqzhOqmNg==", + "videoId": "Nk2oIzFdEjQ", + "viewCountText": { + "simpleText": "62 views" + } + } + }, + "trackingParams": "CMQIEJmNBRgBIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "one of my favorite christmas songs! discovered this through Phoebe Bridgers cover, but the original is by McCarthy Trenching!\n\n\nsubscriber count: 232" + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Bwk3WHXLuBk&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "Bwk3WHXLuBk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=0709375875cbb819&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 49 seconds" + } + }, + "simpleText": "3:49" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMMIEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMMIEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Bwk3WHXLuBk" + ] + } + }, + "openMiniplayer": true, + "videoId": "Bwk3WHXLuBk", + "videoIds": [ + "Bwk3WHXLuBk" + ] + }, + "clickTrackingParams": "CMMIEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMMIEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Bwk3WHXLuBk" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "Bwk3WHXLuBk" + }, + "clickTrackingParams": "CMIIEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMIIEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMEIENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CMEIENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "Bwk3WHXLuBk" + } + }, + "videoId": "Bwk3WHXLuBk" + } + }, + "trackingParams": "CMEIENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CMAIEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtCd2szV0hYTHVCaw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CL8IEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CL8IEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "Bwk3WHXLuBk", + "undoToken": "AB9zfpK6keaxeLoA65XCKbh2ZkzMMm2LpLYG1T6kWrLY_Wo5bgzUij4GgnW1VinMl5Hn6AdXrdFZp2R4VKo0SI9rfIzf9_wqdP4nPpekJesIuH0BDdRrC7VmJ62K6Qx8P3D-XhqF7rAp" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CL8IEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CL4IEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "Bwk3WHXLuBk", + "feedbackToken": "AB9zfpIUYXRbm0kw72rg4SlKArFHnnhRN39Wf_7F4xyzPbht79cUFPBPk01kZyOGpgmK-IrM-cefMsjTdTt_LHjksgq4uqwsKBVRcFohi7VSdO0ZNjUEWdLN37avqNJIj__82xLmP8G3", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Bwk3WHXLuBk", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "Bwk3WHXLuBk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=0709375875cbb819&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "publishedTimeText": { + "simpleText": "11 minutes ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/Bwk3WHXLuBk/mqdefault_6s.webp?du=3000&sqp=CJbOsLsG&rs=AOn4CLCQMB9H_eytzZLbv4VBGjEb_7OYsQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "No views" + } + }, + "simpleText": "No views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/Bwk3WHXLuBk/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AG2CIAC0AWKAgwIABABGGUgWChHMA8=&rs=AOn4CLCed8J7I31Jm6U2phMSd353vESMhA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Bwk3WHXLuBk/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBtgiAAtAFigIMCAAQARhlIFgoRzAP&rs=AOn4CLBu25KSMGPW27ejr5fh83WRF5u2fA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Bwk3WHXLuBk/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBtgiAAtAFigIMCAAQARhlIFgoRzAP&rs=AOn4CLBG0ObDGb7JbZlKWXrqkUI0nruY5Q", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 49 seconds" + } + }, + "simpleText": "3:49" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CL0IEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Bwk3WHXLuBk" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CL0IEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CL0IEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Bwk3WHXLuBk" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CLwIEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLwIEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLwIEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Bwk3WHXLuBk" + ] + } + }, + "openMiniplayer": true, + "videoId": "Bwk3WHXLuBk", + "videoIds": [ + "Bwk3WHXLuBk" + ] + }, + "clickTrackingParams": "CLwIEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Christmas Song by McCarthy Trenching // Phoebe Bridgers (cover) by Yuri like glass No views 11 minutes ago 3 minutes, 49 seconds" + } + }, + "runs": [ + { + "text": "Christmas Song by McCarthy Trenching // Phoebe Bridgers (cover)" + } + ] + }, + "trackingParams": "CLsIENwwIhMInfL4orPDigMVbHR6BR25GwwEQJnwrq6H682EBw==", + "videoId": "Bwk3WHXLuBk", + "viewCountText": { + "simpleText": "No views" + } + } + }, + "trackingParams": "CLoIEJmNBRgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Merry Christmas everybody :) i hope you are staying warm. i know the holidays can feel rough at times but you got this!!\n\n\nsubscriber count: 232" + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=3Id9l4Lhg5g&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "3Id9l4Lhg5g", + "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&siu=1&msp=1&odepv=1&id=dc877d9782e18398&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 14 seconds" + } + }, + "simpleText": "1:14" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkIEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLkIEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "3Id9l4Lhg5g" + ] + } + }, + "openMiniplayer": true, + "videoId": "3Id9l4Lhg5g", + "videoIds": [ + "3Id9l4Lhg5g" + ] + }, + "clickTrackingParams": "CLkIEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLkIEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "3Id9l4Lhg5g" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "3Id9l4Lhg5g" + }, + "clickTrackingParams": "CLgIEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLgIEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLcIENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CLcIENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "3Id9l4Lhg5g" + } + }, + "videoId": "3Id9l4Lhg5g" + } + }, + "trackingParams": "CLcIENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CLYIEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgszSWQ5bDRMaGc1Zw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLUIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLUIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "3Id9l4Lhg5g", + "undoToken": "AB9zfpK3y4UhJnK9u1w7e0YuYAmGH2tEMliueXrYsN9f3rGwbIwYU_ReiZEeqGo1HmWnXfcb5GkZCf7op4KNBqoJtUP1xlA3dh0GUACuIGP7zQ43cmOmmitirn-YLT-07CtSyodA6uNT" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CLUIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CLQIEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "3Id9l4Lhg5g", + "feedbackToken": "AB9zfpKWmarQqkNO9F7TNKs_xKmimwj_PIMfN9fx7YK-2BU43VLpLHHOOtE-2wuaCKZaYITuvCl6AKgZhz8D1JHXMvmF72_IOqlsGDj5FHG8a5qinDdToUsjydq2nlGgU5FdybIjkR2W", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=3Id9l4Lhg5g", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "3Id9l4Lhg5g", + "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&siu=1&msp=1&odepv=1&id=dc877d9782e18398&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "publishedTimeText": { + "simpleText": "14 minutes ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/3Id9l4Lhg5g/mqdefault_6s.webp?du=3000&sqp=CKDesLsG&rs=AOn4CLBDPIeNkmGDjR1moxqrlv1XzWhzQA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "3 views" + } + }, + "simpleText": "3 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/3Id9l4Lhg5g/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AG2CIAC0AWKAgwIABABGGUgVyhFMA8=&rs=AOn4CLBdp0kFisMb7_ITvmZ-UtgQpLfMsQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/3Id9l4Lhg5g/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBtgiAAtAFigIMCAAQARhlIFcoRTAP&rs=AOn4CLDE4Zfx8pqoSaLIKu4AmT-y3wq4KA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/3Id9l4Lhg5g/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBtgiAAtAFigIMCAAQARhlIFcoRTAP&rs=AOn4CLDQ_F6bxcWLAEa3AV45K8oZ10L0hA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 14 seconds" + } + }, + "simpleText": "1:14" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLMIEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "3Id9l4Lhg5g" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CLMIEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLMIEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "3Id9l4Lhg5g" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CLIIEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLIIEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLIIEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "3Id9l4Lhg5g" + ] + } + }, + "openMiniplayer": true, + "videoId": "3Id9l4Lhg5g", + "videoIds": [ + "3Id9l4Lhg5g" + ] + }, + "clickTrackingParams": "CLIIEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "River by Joni Mitchell (cover) by Yuri like glass 3 views 14 minutes ago 1 minute, 14 seconds" + } + }, + "runs": [ + { + "text": "River by Joni Mitchell (cover)" + } + ] + }, + "trackingParams": "CLEIENwwIhMInfL4orPDigMVbHR6BR25GwwEQJiHhpf4st_D3AE=", + "videoId": "3Id9l4Lhg5g", + "viewCountText": { + "simpleText": "3 views" + } + } + }, + "trackingParams": "CLAIEJmNBRgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "We got our WLED-friend PCBs today, and we only made one mistake: the wrong resistor on the 3.3V feedback line. Now that it's fixed, the board seems to work great with the latest version of..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=3Z-OPYGhCXo&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "3Z-OPYGhCXo", + "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&siu=1&msp=1&odepv=1&id=dd9f8e3d81a1097a&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 5 seconds" + } + }, + "simpleText": "2:05" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8IEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CK8IEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "3Z-OPYGhCXo" + ] + } + }, + "openMiniplayer": true, + "videoId": "3Z-OPYGhCXo", + "videoIds": [ + "3Z-OPYGhCXo" + ] + }, + "clickTrackingParams": "CK8IEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CK8IEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "3Z-OPYGhCXo" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "3Z-OPYGhCXo" + }, + "clickTrackingParams": "CK4IEJSsCRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CK4IEJSsCRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CK0IENGqBRgPIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CK0IENGqBRgPIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "3Z-OPYGhCXo" + } + }, + "videoId": "3Z-OPYGhCXo" + } + }, + "trackingParams": "CK0IENGqBRgPIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CKwIEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgszWi1PUFlHaENYbw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKsIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKsIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "3Z-OPYGhCXo", + "undoToken": "AB9zfpIe5wQpIBdGzlgVjvzG7xt4txrl9sEyHuIFHdw4kjha0MTGqr7o840r8AbJW1xn6aSIlJAbn87zYvLl7aSHd6F0ALOjLFbYeY8n-nok0i2iCHkq_vQ3LWfh5lEiD75pz3nU0Rqbk23yL_LtfcM3Axsxg3Cnzg" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CKsIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CKoIEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "3Z-OPYGhCXo", + "feedbackToken": "AB9zfpKDTrI1VKxI2UccVU-9ySw-9590eWJDtR_HYuyXWb_yzqmJT-7sbjO-x13rwM2uolhiyY1btGDsRjnG6Tv1QWny1n5I5bc3P3zGYblj75R_HlR4l8aBN4DCeH0Cw-dJeoJ3V06X", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=3Z-OPYGhCXo", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "3Z-OPYGhCXo", + "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&siu=1&msp=1&odepv=1&id=dd9f8e3d81a1097a&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "publishedTimeText": { + "simpleText": "1 hour ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/3Z-OPYGhCXo/mqdefault_6s.webp?du=3000&sqp=CNLosLsG&rs=AOn4CLBLSK280k3BJN-mBanPRM5cgLorKQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "235 views" + } + }, + "simpleText": "235 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/3Z-OPYGhCXo/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGF8gSShlMA8=&rs=AOn4CLCwq1jaJW_LeEVwuD2Kau7cbBfPsQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/3Z-OPYGhCXo/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhfIEkoZTAP&rs=AOn4CLAZbA5CH2C3F-vi3ZoJQl88vAJLvQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/3Z-OPYGhCXo/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhfIEkoZTAP&rs=AOn4CLDzL0eFj3JIMWpkDL3qcmVIf35WaQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayResumePlaybackRenderer": { + "percentDurationWatched": 100 + } + }, + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 5 seconds" + } + }, + "simpleText": "2:05" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKkIEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "3Z-OPYGhCXo" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CKkIEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKkIEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "3Z-OPYGhCXo" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CKgIEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKgIEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKgIEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "3Z-OPYGhCXo" + ] + } + }, + "openMiniplayer": true, + "videoId": "3Z-OPYGhCXo", + "videoIds": [ + "3Z-OPYGhCXo" + ] + }, + "clickTrackingParams": "CKgIEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "The first test for our WLED board codename \"Sparkle Motion\" 🌈💖💡 ... 🐇⏳🌌 by Adafruit Industries 235 views 1 hour ago 2 minutes, 5 seconds" + } + }, + "runs": [ + { + "text": "The first test for our WLED board codename \"Sparkle Motion\" 🌈💖💡 ... 🐇⏳🌌" + } + ] + }, + "trackingParams": "CKcIENwwIhMInfL4orPDigMVbHR6BR25GwwEQPqShI3Yx-PP3QE=", + "videoId": "3Z-OPYGhCXo", + "viewCountText": { + "simpleText": "235 views" + } + } + }, + "trackingParams": "CKYIEJmNBRgEIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richSectionRenderer": { + "content": { + "richShelfRenderer": { + "contents": [ + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "accessibilityText": "If you think you saw John Cena as Santa during the NFL Christmas Gameday pre-show… no you didn’t, 4.2K views - play Short", + "entityId": "subscriptions-shorts-shelf-item-Z_FxN_nlDxw", + "indexInCollection": 0, + "inlinePlayerData": { + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "CKEIEIf2BBgAIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBggkEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Z_FxN_nlDxw&pp=YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETURY6hN4Th9oOoWDL-uLChZAHAg%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETURY6hN4Th9oOoWDL-uLChZAHAg%3D%3D", + "videoId": "Z_FxN_nlDxw", + "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&siu=1&msp=1&odepv=1&id=67f17137f9e50f1c&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CKEIEIf2BBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "visibility": { + "types": "12" + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CKEIEIf2BBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKQIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKQIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Z_FxN_nlDxw" + ] + } + }, + "openMiniplayer": true, + "videoId": "Z_FxN_nlDxw", + "videoIds": [ + "Z_FxN_nlDxw" + ] + }, + "clickTrackingParams": "CKQIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CKQIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + }, + "title": { + "content": "Add to queue" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "NOT_INTERESTED" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKEIEIf2BBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKEIEIf2BBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKMIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKMIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "Z_FxN_nlDxw", + "undoToken": "AB9zfpIztAQBXFkPH8uFSpahCQWk28RWUtSafZgxsq5P4oY5UjL9-e-5nbHidXiHqSNvCJ84g-9J1uB-E7M-3F4XCQJgbxu_a0_05wzuL4hRk69MwsoXI8yWiIIaJIUWxizB4vFc2imU" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CKMIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CKIIEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "Z_FxN_nlDxw", + "feedbackToken": "AB9zfpIeeE-MNqdWeMBYguWryBlzl1H-2m9C23lTtBKzDMRq2BDHekHVPkU21rwoAqTqliepmAZApIXNBCg_aNDyLdEJ6aoZ8UAPu-yJtfcGqds5e5MrIJh46NV5qPTsoYpo3SX11Xyo", + "uiActions": { + "hideEnclosingContainer": true + } + } + } + } + } + }, + "title": { + "content": "Hide" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKEIEIf2BBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "Z_FxN_nlDxw" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + }, + "title": { + "content": "Send feedback" + } + } + } + ] + } + } + } + } + } + } + } + }, + "menuOnTapA11yLabel": "More actions", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKEIEIf2BBgAIhMInfL4orPDigMVbHR6BR25GwwEWg9GRXN1YnNjcmlwdGlvbnOaAQYIJBDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 37414, + "url": "/shorts/Z_FxN_nlDxw", + "webPageType": "WEB_PAGE_TYPE_SHORTS" + } + }, + "reelWatchEndpoint": { + "loggingContext": { + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED", + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CKUIELC1BCITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "params": "CAUwAg%3D%3D", + "playerParams": "8AEBoAMByAMkuAQFogYVAePzwRNRFjqE3hOH2g6hYMv64sKFkAcC", + "sequenceParams": "GhMKC1pfRnhOX25sRHh3GAAgASgBKhMKDQoLWl9GeE5fbmxEeHcQABgHaACKAQQSAhgCkAED", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "thumbnail": { + "isOriginalAspectRatio": true, + "thumbnails": [ + { + "height": 1920, + "url": "https://i.ytimg.com/vi/Z_FxN_nlDxw/frame0.jpg", + "width": 1080 + } + ] + }, + "ustreamerConfig": "CAw=", + "videoId": "Z_FxN_nlDxw" + } + } + }, + "overlayMetadata": { + "primaryText": { + "content": "If you think you saw John Cena as Santa during the NFL Christmas Gameday pre-show… no you didn’t" + }, + "secondaryText": { + "content": "4.2K views" + } + }, + "thumbnail": { + "sources": [ + { + "height": 720, + "url": "https://i.ytimg.com/vi/Z_FxN_nlDxw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDCJsyy_VkYykVtLs-gJLymaWzg4w", + "width": 405 + } + ] + } + } + }, + "trackingParams": "CKAIEJmNBRgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "accessibilityText": "20, 121 views - play Short", + "entityId": "subscriptions-shorts-shelf-item-SRUXzRGAp7I", + "indexInCollection": 1, + "inlinePlayerData": { + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "CJsIEIf2BBgBIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBggkEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=SRUXzRGAp7I&pp=YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETATgoUWM48qyBBb8j2RVHAZAHAg%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETATgoUWM48qyBBb8j2RVHAZAHAg%3D%3D", + "videoId": "SRUXzRGAp7I", + "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&siu=1&msp=1&odepv=1&id=491517cd1180a7b2&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CJsIEIf2BBgBIhMInfL4orPDigMVbHR6BR25GwwE", + "visibility": { + "types": "12" + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CJsIEIf2BBgBIhMInfL4orPDigMVbHR6BR25GwwE", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJ4IEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJ4IEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "SRUXzRGAp7I" + ] + } + }, + "openMiniplayer": true, + "videoId": "SRUXzRGAp7I", + "videoIds": [ + "SRUXzRGAp7I" + ] + }, + "clickTrackingParams": "CJ4IEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CJ4IEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + }, + "title": { + "content": "Add to queue" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "NOT_INTERESTED" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJsIEIf2BBgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJsIEIf2BBgBIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJ0IEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJ0IEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "SRUXzRGAp7I", + "undoToken": "AB9zfpLr3ZcntSk4PmdIrZrxGxvDH4jKp2cVqQ-Bi6Y_vh9PR4S__QJOQmd0slt5sm6Kj8k1ZRvxcHC9KIjM3djXmfnlYnpeIY7Prx3AhgqhWmVX5PxmVbyV7MLw_pjI7XJB-sLIc4J2fPtCRJeQTlArKS-okUpJPg" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJ0IEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJwIEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "SRUXzRGAp7I", + "feedbackToken": "AB9zfpLZuNqBr2fCarRh8AxEnQUJk1ZWjd4W1QCLtWVKqWK7zHZG5o84E4oE3EiuDRrKR5GN46_jTEfw-2fcGiLfSLwhWUqPA298YlSzFyw1FNTuvCtfZib9juBh32Mh246bMqNOulaM", + "uiActions": { + "hideEnclosingContainer": true + } + } + } + } + } + }, + "title": { + "content": "Hide" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJsIEIf2BBgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "SRUXzRGAp7I" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + }, + "title": { + "content": "Send feedback" + } + } + } + ] + } + } + } + } + } + } + } + }, + "menuOnTapA11yLabel": "More actions", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJsIEIf2BBgBIhMInfL4orPDigMVbHR6BR25GwwEWg9GRXN1YnNjcmlwdGlvbnOaAQYIJBDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 37414, + "url": "/shorts/SRUXzRGAp7I", + "webPageType": "WEB_PAGE_TYPE_SHORTS" + } + }, + "reelWatchEndpoint": { + "loggingContext": { + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED", + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CJ8IELC1BCITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "params": "CAUwAg%3D%3D", + "playerParams": "8AEBoAMByAMkuAQFogYVAePzwRMBOChRYzjyrIEFvyPZFUcBkAcC", + "sequenceParams": "GhMKC1NSVVh6UkdBcDdJGAEgASgBKhMKDQoLU1JVWHpSR0FwN0kQABgHaACKAQQSAhgCkAED", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "thumbnail": { + "isOriginalAspectRatio": true, + "thumbnails": [ + { + "height": 1920, + "url": "https://i.ytimg.com/vi/SRUXzRGAp7I/frame0.jpg", + "width": 1080 + } + ] + }, + "ustreamerConfig": "CAw=", + "videoId": "SRUXzRGAp7I" + } + } + }, + "overlayMetadata": { + "primaryText": { + "content": "20" + }, + "secondaryText": { + "content": "121 views" + } + }, + "thumbnail": { + "sources": [ + { + "height": 720, + "url": "https://i.ytimg.com/vi/SRUXzRGAp7I/oardefault.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDNDwH7y_WiGMwDdbhz913kKqDRVg", + "width": 405 + } + ] + } + } + }, + "trackingParams": "CJoIEJmNBRgBIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "accessibilityText": "☃️ sweet dreams and good night 🤍 #TXT #ACT_PROMISE #TXT_TOUR_ACTPROMISE, 17K views - play Short", + "entityId": "subscriptions-shorts-shelf-item-q0ctif2rXhA", + "indexInCollection": 2, + "inlinePlayerData": { + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "CJUIEIf2BBgCIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBggkEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=q0ctif2rXhA&pp=YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETL6MTAA8NwqblOaILrnMhcpAHAg%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETL6MTAA8NwqblOaILrnMhcpAHAg%3D%3D", + "videoId": "q0ctif2rXhA", + "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&siu=1&msp=1&odepv=1&id=ab472d89fdab5e10&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CJUIEIf2BBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "visibility": { + "types": "12" + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CJUIEIf2BBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJgIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJgIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "q0ctif2rXhA" + ] + } + }, + "openMiniplayer": true, + "videoId": "q0ctif2rXhA", + "videoIds": [ + "q0ctif2rXhA" + ] + }, + "clickTrackingParams": "CJgIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CJgIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + }, + "title": { + "content": "Add to queue" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "NOT_INTERESTED" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJUIEIf2BBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJUIEIf2BBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJcIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJcIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "q0ctif2rXhA", + "undoToken": "AB9zfpIKCtLirKUoFPMzSEal0wZV3dSpDzJkBzTlbEmb0dryK7ZoBA6ChKPy3g6Q6o9WNZo9N_eYEptBSex38SCguCnJfwMy8SiJMLqavwiQkL5lk1HqyV65oyfQU13eC1RHogTc9BQpW_vuWOEpgdLaV-dQO5db1w" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJcIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJYIEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "q0ctif2rXhA", + "feedbackToken": "AB9zfpLS1qzOsp2NCln5WZ-qzKOtx_suvYpsCpo-sSVT4nIv5fwoy6dRB2zJ5xpv7dTf0VhbChWaru4k3m54wMsWCK0qRHfj9wLuuWwub0zEJCKwgQl2cNqit-4uumKDtwWMo8jC5opw", + "uiActions": { + "hideEnclosingContainer": true + } + } + } + } + } + }, + "title": { + "content": "Hide" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJUIEIf2BBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "q0ctif2rXhA" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + }, + "title": { + "content": "Send feedback" + } + } + } + ] + } + } + } + } + } + } + } + }, + "menuOnTapA11yLabel": "More actions", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJUIEIf2BBgCIhMInfL4orPDigMVbHR6BR25GwwEWg9GRXN1YnNjcmlwdGlvbnOaAQYIJBDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 37414, + "url": "/shorts/q0ctif2rXhA", + "webPageType": "WEB_PAGE_TYPE_SHORTS" + } + }, + "reelWatchEndpoint": { + "loggingContext": { + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED", + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CJkIELC1BCITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "params": "CAUwAg%3D%3D", + "playerParams": "8AEBoAMByAMkuAQFogYVAePzwRMvoxMADw3CpuU5oguucyFykAcC", + "sequenceParams": "GhMKC3EwY3RpZjJyWGhBGAIgASgBKhMKDQoLcTBjdGlmMnJYaEEQABgHaACKAQQSAhgCkAED", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "thumbnail": { + "isOriginalAspectRatio": true, + "thumbnails": [ + { + "height": 1920, + "url": "https://i.ytimg.com/vi/q0ctif2rXhA/frame0.jpg", + "width": 1080 + } + ] + }, + "ustreamerConfig": "CAw=", + "videoId": "q0ctif2rXhA" + } + } + }, + "overlayMetadata": { + "primaryText": { + "content": "☃️ sweet dreams and good night 🤍 #TXT #ACT_PROMISE #TXT_TOUR_ACTPROMISE" + }, + "secondaryText": { + "content": "17K views" + } + }, + "thumbnail": { + "sources": [ + { + "height": 720, + "url": "https://i.ytimg.com/vi/q0ctif2rXhA/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCSOPcaYk3wxagJ-1pNBrdN70JvZQ", + "width": 405 + } + ] + } + } + }, + "trackingParams": "CJQIEJmNBRgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "accessibilityText": "˖*𓂃 🅗🅐🅟🅟🅨 🅗🅞🅛🅘🅓🅐🅨 𓍄 𓄽𓇬𓈒#LE_SSERAFIM #르세라핌 #Shorts, 94K views - play Short", + "entityId": "subscriptions-shorts-shelf-item-UfZevOThZaM", + "indexInCollection": 3, + "inlinePlayerData": { + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "CI8IEIf2BBgDIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBggkEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=UfZevOThZaM&pp=YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETlyPMOGXk_deeJSjAjpi2PpAHAg%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETlyPMOGXk_deeJSjAjpi2PpAHAg%3D%3D", + "videoId": "UfZevOThZaM", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=51f65ebce4e165a3&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CI8IEIf2BBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "visibility": { + "types": "12" + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CI8IEIf2BBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJIIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJIIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "UfZevOThZaM" + ] + } + }, + "openMiniplayer": true, + "videoId": "UfZevOThZaM", + "videoIds": [ + "UfZevOThZaM" + ] + }, + "clickTrackingParams": "CJIIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CJIIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + }, + "title": { + "content": "Add to queue" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "NOT_INTERESTED" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CI8IEIf2BBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CI8IEIf2BBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJEIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJEIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "UfZevOThZaM", + "undoToken": "AB9zfpLfvYbo05BPoIynNKuf08ug_TbBh9me6Lu8DPqmudzE22j5NVNxYOENoQAgb_ZdKyW0pzeq9EmWuU1R1fdfIAk9WCvZh1solv2G8uR7aimDjubRsiQPG0iYhSF9OS0PDyDbAeP3" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJEIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJAIEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "UfZevOThZaM", + "feedbackToken": "AB9zfpJk87lgnL00ETi8_Hk0e4aKiUGtGFIm562aQKSH9ZKDW5T_w0RkqvpTWKIc2e1umKGWQ35fMqVjqaKvm9dQQ_xlkBJXCIC8jwlMzPXowGYHzOM9gxjgddjUDgNBujAbUMi2722a", + "uiActions": { + "hideEnclosingContainer": true + } + } + } + } + } + }, + "title": { + "content": "Hide" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CI8IEIf2BBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "UfZevOThZaM" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + }, + "title": { + "content": "Send feedback" + } + } + } + ] + } + } + } + } + } + } + } + }, + "menuOnTapA11yLabel": "More actions", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CI8IEIf2BBgDIhMInfL4orPDigMVbHR6BR25GwwEWg9GRXN1YnNjcmlwdGlvbnOaAQYIJBDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 37414, + "url": "/shorts/UfZevOThZaM", + "webPageType": "WEB_PAGE_TYPE_SHORTS" + } + }, + "reelWatchEndpoint": { + "loggingContext": { + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED", + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CJMIELC1BCITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "params": "CAUwAg%3D%3D", + "playerParams": "8AEBoAMByAMkuAQFogYVAePzwROXI8w4ZeT9154lKMCOmLY-kAcC", + "sequenceParams": "GhMKC1VmWmV2T1RoWmFNGAMgASgBKhMKDQoLVWZaZXZPVGhaYU0QABgHaACKAQQSAhgCkAED", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "thumbnail": { + "isOriginalAspectRatio": true, + "thumbnails": [ + { + "height": 1920, + "url": "https://i.ytimg.com/vi/UfZevOThZaM/frame0.jpg", + "width": 1080 + } + ] + }, + "ustreamerConfig": "CAw=", + "videoId": "UfZevOThZaM" + } + } + }, + "overlayMetadata": { + "primaryText": { + "content": "˖*𓂃 🅗🅐🅟🅟🅨 🅗🅞🅛🅘🅓🅐🅨 𓍄 𓄽𓇬𓈒#LE_SSERAFIM #르세라핌 #Shorts" + }, + "secondaryText": { + "content": "94K views" + } + }, + "thumbnail": { + "sources": [ + { + "height": 720, + "url": "https://i.ytimg.com/vi/UfZevOThZaM/oardefault.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLA650z37H4qvTE4YkCuFJCmNBwGVg", + "width": 405 + } + ] + } + } + }, + "trackingParams": "CI4IEJmNBRgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "accessibilityText": "❄️💦 #StrayKids #스트레이키즈 #한 #HAN #승민 #Seungmin #合 #HOP #WalkinOnWater #StrayKidsComeback, 191K views - play Short", + "entityId": "subscriptions-shorts-shelf-item-7U3VGL8nDmI", + "indexInCollection": 4, + "inlinePlayerData": { + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "CIkIEIf2BBgEIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBggkEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=7U3VGL8nDmI&pp=YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETqYjGqx0pIMc480PiUFraz5AHAg%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETqYjGqx0pIMc480PiUFraz5AHAg%3D%3D", + "videoId": "7U3VGL8nDmI", + "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&siu=1&msp=1&odepv=1&id=ed4dd518bf270e62&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CIkIEIf2BBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "visibility": { + "types": "12" + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CIkIEIf2BBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIwIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIwIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "7U3VGL8nDmI" + ] + } + }, + "openMiniplayer": true, + "videoId": "7U3VGL8nDmI", + "videoIds": [ + "7U3VGL8nDmI" + ] + }, + "clickTrackingParams": "CIwIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CIwIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + }, + "title": { + "content": "Add to queue" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "NOT_INTERESTED" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIkIEIf2BBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIkIEIf2BBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIsIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIsIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "7U3VGL8nDmI", + "undoToken": "AB9zfpIUJBdDve-81OAZ-l_0NMwkZfTJibTlYrxXeoM_IDHcuZQazlR6uMMJmyHUl23BIrqgr9_CsGvtnzYgZ2CtSw54kIkUcfhSgQqxprH4NOfMBRat8a71RiRtRoCFQJRojewr0nAy" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CIsIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CIoIEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "7U3VGL8nDmI", + "feedbackToken": "AB9zfpKuBW-hLbGRPxqXRg8td3TLb_lH71rga1EfpIgpw_XMdTZgooWTeLxUclvgIJu01xkDZKNnNZN88nrGMeOTfhiw6uoXjK5BSlTrupf_cUqaG1I6NHxA0-SnpOhOMFYquEYZZTFJ", + "uiActions": { + "hideEnclosingContainer": true + } + } + } + } + } + }, + "title": { + "content": "Hide" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIkIEIf2BBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "7U3VGL8nDmI" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + }, + "title": { + "content": "Send feedback" + } + } + } + ] + } + } + } + } + } + } + } + }, + "menuOnTapA11yLabel": "More actions", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIkIEIf2BBgEIhMInfL4orPDigMVbHR6BR25GwwEWg9GRXN1YnNjcmlwdGlvbnOaAQYIJBDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 37414, + "url": "/shorts/7U3VGL8nDmI", + "webPageType": "WEB_PAGE_TYPE_SHORTS" + } + }, + "reelWatchEndpoint": { + "loggingContext": { + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED", + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CI0IELC1BCITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "params": "CAUwAg%3D%3D", + "playerParams": "8AEBoAMByAMkuAQFogYVAePzwROpiMarHSkgxzjzQ-JQWtrPkAcC", + "sequenceParams": "GhMKCzdVM1ZHTDhuRG1JGAQgASgBKhMKDQoLN1UzVkdMOG5EbUkQABgHaACKAQQSAhgCkAED", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "thumbnail": { + "isOriginalAspectRatio": true, + "thumbnails": [ + { + "height": 1920, + "url": "https://i.ytimg.com/vi/7U3VGL8nDmI/frame0.jpg", + "width": 1080 + } + ] + }, + "ustreamerConfig": "CAw=", + "videoId": "7U3VGL8nDmI" + } + } + }, + "overlayMetadata": { + "primaryText": { + "content": "❄️💦 #StrayKids #스트레이키즈 #한 #HAN #승민 #Seungmin #合 #HOP #WalkinOnWater #StrayKidsComeback" + }, + "secondaryText": { + "content": "191K views" + } + }, + "thumbnail": { + "sources": [ + { + "height": 720, + "url": "https://i.ytimg.com/vi/7U3VGL8nDmI/oardefault.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBdtVocBFjK5uhu0UZp8kFUWNh65w", + "width": 405 + } + ] + } + } + }, + "trackingParams": "CIgIEJmNBRgEIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "accessibilityText": "🎅💦 #StrayKids #스트레이키즈 #창빈 #Changbin #필릭스 #Felix #合 #HOP #WalkinOnWater #StrayKidsComeback, 242K views - play Short", + "entityId": "subscriptions-shorts-shelf-item-jlRekeQ-m_8", + "indexInCollection": 5, + "inlinePlayerData": { + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "CIMIEIf2BBgFIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBggkEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=jlRekeQ-m_8&pp=YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETWylb87rtF1HcjsGvkHLzwpAHAg%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETWylb87rtF1HcjsGvkHLzwpAHAg%3D%3D", + "videoId": "jlRekeQ-m_8", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=8e545e91e43e9bff&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CIMIEIf2BBgFIhMInfL4orPDigMVbHR6BR25GwwE", + "visibility": { + "types": "12" + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CIMIEIf2BBgFIhMInfL4orPDigMVbHR6BR25GwwE", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIYIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIYIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "jlRekeQ-m_8" + ] + } + }, + "openMiniplayer": true, + "videoId": "jlRekeQ-m_8", + "videoIds": [ + "jlRekeQ-m_8" + ] + }, + "clickTrackingParams": "CIYIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CIYIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + }, + "title": { + "content": "Add to queue" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "NOT_INTERESTED" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIMIEIf2BBgFIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIMIEIf2BBgFIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIUIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIUIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "jlRekeQ-m_8", + "undoToken": "AB9zfpIse5pxFxyW-m_amhHNUSHT9GTLGJxxJ7eFot2WLyr60_rQkKStOfHHKa-M5KYNn6EtEM4FJG-Ol12NYauNfHQDUhS9Qoi6zZat3SC3pZJxn31yC0NCbdurI7DQhMVEdQdWNmFf" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CIUIEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CIQIEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "jlRekeQ-m_8", + "feedbackToken": "AB9zfpK5WKm6ff-rvwwxJwDOoHgwTeFZk7Rhsg5K_T2WXiSOozHVa8Mn-xqq9eW2m_HumYm1xm7NfjhYZ2UR2IbIT7_-Bj2LXZxbdL3kK6afUY-Y-GK7X-FqItzSqyTPmcIBioK3nG64", + "uiActions": { + "hideEnclosingContainer": true + } + } + } + } + } + }, + "title": { + "content": "Hide" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIMIEIf2BBgFIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "jlRekeQ-m_8" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + }, + "title": { + "content": "Send feedback" + } + } + } + ] + } + } + } + } + } + } + } + }, + "menuOnTapA11yLabel": "More actions", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIMIEIf2BBgFIhMInfL4orPDigMVbHR6BR25GwwEWg9GRXN1YnNjcmlwdGlvbnOaAQYIJBDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 37414, + "url": "/shorts/jlRekeQ-m_8", + "webPageType": "WEB_PAGE_TYPE_SHORTS" + } + }, + "reelWatchEndpoint": { + "loggingContext": { + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED", + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CIcIELC1BCITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "params": "CAUwAg%3D%3D", + "playerParams": "8AEBoAMByAMkuAQFogYVAePzwRNbKVvzuu0XUdyOwa-QcvPCkAcC", + "sequenceParams": "GhMKC2psUmVrZVEtbV84GAUgASgBKhMKDQoLamxSZWtlUS1tXzgQABgHaACKAQQSAhgCkAED", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "thumbnail": { + "isOriginalAspectRatio": true, + "thumbnails": [ + { + "height": 1920, + "url": "https://i.ytimg.com/vi/jlRekeQ-m_8/frame0.jpg", + "width": 1080 + } + ] + }, + "ustreamerConfig": "CAw=", + "videoId": "jlRekeQ-m_8" + } + } + }, + "overlayMetadata": { + "primaryText": { + "content": "🎅💦 #StrayKids #스트레이키즈 #창빈 #Changbin #필릭스 #Felix #合 #HOP #WalkinOnWater #StrayKidsComeback" + }, + "secondaryText": { + "content": "242K views" + } + }, + "thumbnail": { + "sources": [ + { + "height": 720, + "url": "https://i.ytimg.com/vi/jlRekeQ-m_8/oardefault.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBq33hZBE_umjQOVb8UdCzMh3ucng", + "width": 405 + } + ] + } + } + }, + "trackingParams": "CIIIEJmNBRgFIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "accessibilityText": "🎄💦 #StrayKids #스트레이키즈 #리노 #LeeKnow #아이엔 #I_N #合 #HOP #WalkinOnWater #StrayKidsComeback, 144K views - play Short", + "entityId": "subscriptions-shorts-shelf-item-S_AnffGawsE", + "indexInCollection": 6, + "inlinePlayerData": { + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "CP0HEIf2BBgGIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBggkEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=S_AnffGawsE&pp=YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETuPZ9wKe21WhmYCAoskIP3ZAHAg%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETuPZ9wKe21WhmYCAoskIP3ZAHAg%3D%3D", + "videoId": "S_AnffGawsE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=4bf0277df19ac2c1&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CP0HEIf2BBgGIhMInfL4orPDigMVbHR6BR25GwwE", + "visibility": { + "types": "12" + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CP0HEIf2BBgGIhMInfL4orPDigMVbHR6BR25GwwE", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIAIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIAIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "S_AnffGawsE" + ] + } + }, + "openMiniplayer": true, + "videoId": "S_AnffGawsE", + "videoIds": [ + "S_AnffGawsE" + ] + }, + "clickTrackingParams": "CIAIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CIAIEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + }, + "title": { + "content": "Add to queue" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "NOT_INTERESTED" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CP0HEIf2BBgGIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CP0HEIf2BBgGIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CP8HEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CP8HEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "S_AnffGawsE", + "undoToken": "AB9zfpJQRW_uaMH66xE6EvXdPzHWSavqj4eg33I137Z1UclQplMCB7aqWzuOmIN3fHRCxozyKssHzjsHAHg-NhmVIRatamUE2OrRk0E21U8v4v_DtCRISy8GXQSKaci-QD0F0PDKojkRqPK62-8_lMDAwfcSpY3kgw" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CP8HEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CP4HEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "S_AnffGawsE", + "feedbackToken": "AB9zfpLLnmlT6cQFE3rC1UDzdWAZrEkDoW-hXvKlYSZWxNvV5QYViRF9qmu_9nwLGgp5KgryLP68Y6V0fr0X12BHmWO1V3Su8CmfOFZ70BmHlu0-IJd_q_wp_mEMiTi8gHV_uKSVJrNZ", + "uiActions": { + "hideEnclosingContainer": true + } + } + } + } + } + }, + "title": { + "content": "Hide" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CP0HEIf2BBgGIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "S_AnffGawsE" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + }, + "title": { + "content": "Send feedback" + } + } + } + ] + } + } + } + } + } + } + } + }, + "menuOnTapA11yLabel": "More actions", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CP0HEIf2BBgGIhMInfL4orPDigMVbHR6BR25GwwEWg9GRXN1YnNjcmlwdGlvbnOaAQYIJBDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 37414, + "url": "/shorts/S_AnffGawsE", + "webPageType": "WEB_PAGE_TYPE_SHORTS" + } + }, + "reelWatchEndpoint": { + "loggingContext": { + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED", + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CIEIELC1BCITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "params": "CAUwAg%3D%3D", + "playerParams": "8AEBoAMByAMkuAQFogYVAePzwRO49n3Ap7bVaGZgICiyQg_dkAcC", + "sequenceParams": "GhMKC1NfQW5mZkdhd3NFGAYgASgBKhMKDQoLU19BbmZmR2F3c0UQABgHaACKAQQSAhgCkAED", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "thumbnail": { + "isOriginalAspectRatio": true, + "thumbnails": [ + { + "height": 1920, + "url": "https://i.ytimg.com/vi/S_AnffGawsE/frame0.jpg", + "width": 1080 + } + ] + }, + "ustreamerConfig": "CAw=", + "videoId": "S_AnffGawsE" + } + } + }, + "overlayMetadata": { + "primaryText": { + "content": "🎄💦 #StrayKids #스트레이키즈 #리노 #LeeKnow #아이엔 #I_N #合 #HOP #WalkinOnWater #StrayKidsComeback" + }, + "secondaryText": { + "content": "144K views" + } + }, + "thumbnail": { + "sources": [ + { + "height": 720, + "url": "https://i.ytimg.com/vi/S_AnffGawsE/oardefault.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDpArYSvV-BWUqaHTxz1Wg_dItHOA", + "width": 405 + } + ] + } + } + }, + "trackingParams": "CPwHEJmNBRgGIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "accessibilityText": "☃️💦 #StrayKids #스트레이키즈 #방찬 #BangChan #현진 #Hyunjin #合 #HOP #WalkinOnWater #StrayKidsComeback, 223K views - play Short", + "entityId": "subscriptions-shorts-shelf-item--75-wRM3Oy8", + "indexInCollection": 7, + "inlinePlayerData": { + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "CPcHEIf2BBgHIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBggkEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=-75-wRM3Oy8&pp=YAHIAQHwAQG6AwIYAugFAaIGFQHj88EThBKGFbWqSGYVrGd1saBM_5AHAg%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQHwAQG6AwIYAugFAaIGFQHj88EThBKGFbWqSGYVrGd1saBM_5AHAg%3D%3D", + "videoId": "-75-wRM3Oy8", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&siu=1&msp=1&odepv=1&id=fbbe7ec113373b2f&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CPcHEIf2BBgHIhMInfL4orPDigMVbHR6BR25GwwE", + "visibility": { + "types": "12" + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CPcHEIf2BBgHIhMInfL4orPDigMVbHR6BR25GwwE", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CPoHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPoHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "-75-wRM3Oy8" + ] + } + }, + "openMiniplayer": true, + "videoId": "-75-wRM3Oy8", + "videoIds": [ + "-75-wRM3Oy8" + ] + }, + "clickTrackingParams": "CPoHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CPoHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + }, + "title": { + "content": "Add to queue" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "NOT_INTERESTED" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CPcHEIf2BBgHIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPcHEIf2BBgHIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPkHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPkHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "-75-wRM3Oy8", + "undoToken": "AB9zfpJCHtzOSyh4ZhFkC3Nte4ToIy2ZVBenxi51YbAOiDdxdbW0MAy6V3W4buizk_IbLOtrFIsk1iJpnx-IusDDOjmd1MJILWlLqbUBfQaOcB4PdaJEEIxC_GAncvNE0UlkGS9XF4LdPcpQtdA6wka4ZyT488GVkg" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CPkHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CPgHEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "-75-wRM3Oy8", + "feedbackToken": "AB9zfpLXGJZAnbnZzfzyE1tfV23WVd1exgvPErfKhwoDZ7E7wXXYcwg2lEgdaDYQnZhPwldh_FzNF5aYyJYOwwydUFduyOgngNmgi0kWXF-QefApXHDPtL645UVbBEUG9bfI_WJ4Z2-d", + "uiActions": { + "hideEnclosingContainer": true + } + } + } + } + } + }, + "title": { + "content": "Hide" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CPcHEIf2BBgHIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "-75-wRM3Oy8" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + }, + "title": { + "content": "Send feedback" + } + } + } + ] + } + } + } + } + } + } + } + }, + "menuOnTapA11yLabel": "More actions", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CPcHEIf2BBgHIhMInfL4orPDigMVbHR6BR25GwwEWg9GRXN1YnNjcmlwdGlvbnOaAQYIJBDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 37414, + "url": "/shorts/-75-wRM3Oy8", + "webPageType": "WEB_PAGE_TYPE_SHORTS" + } + }, + "reelWatchEndpoint": { + "loggingContext": { + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED", + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CPsHELC1BCITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "params": "CAUwAg%3D%3D", + "playerParams": "8AEBoAMByAMkuAQFogYVAePzwROEEoYVtapIZhWsZ3WxoEz_kAcC", + "sequenceParams": "GhMKCy03NS13Uk0zT3k4GAcgASgBKhMKDQoLLTc1LXdSTTNPeTgQABgHaACKAQQSAhgCkAED", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "thumbnail": { + "isOriginalAspectRatio": true, + "thumbnails": [ + { + "height": 1920, + "url": "https://i.ytimg.com/vi/-75-wRM3Oy8/frame0.jpg", + "width": 1080 + } + ] + }, + "ustreamerConfig": "CAw=", + "videoId": "-75-wRM3Oy8" + } + } + }, + "overlayMetadata": { + "primaryText": { + "content": "☃️💦 #StrayKids #스트레이키즈 #방찬 #BangChan #현진 #Hyunjin #合 #HOP #WalkinOnWater #StrayKidsComeback" + }, + "secondaryText": { + "content": "223K views" + } + }, + "thumbnail": { + "sources": [ + { + "height": 720, + "url": "https://i.ytimg.com/vi/-75-wRM3Oy8/oardefault.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLA1VEwR5vs370QwAiUpU-0RGLP_dQ", + "width": 405 + } + ] + } + } + }, + "trackingParams": "CPYHEJmNBRgHIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "accessibilityText": "𝐼𝑐𝑖𝑛𝑔 𝑐𝑜𝑜𝑘𝑖𝑒𝑠 𝑓𝑜𝑟 𝐹𝐸𝐴𝑅𝑁𝑂𝑇 *𖢔𐂂꙳ #LE_SSERAFIM #르세라핌 #shorts, 26K views - play Short", + "entityId": "subscriptions-shorts-shelf-item-ORgGAOHFL7o", + "indexInCollection": 8, + "inlinePlayerData": { + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "CPEHEIf2BBgIIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBggkEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ORgGAOHFL7o&pp=YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETwgsoCmupZeA0sH1mTmRZ45AHAg%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETwgsoCmupZeA0sH1mTmRZ45AHAg%3D%3D", + "videoId": "ORgGAOHFL7o", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=39180600e1c52fba&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CPEHEIf2BBgIIhMInfL4orPDigMVbHR6BR25GwwE", + "visibility": { + "types": "12" + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CPEHEIf2BBgIIhMInfL4orPDigMVbHR6BR25GwwE", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CPQHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPQHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "ORgGAOHFL7o" + ] + } + }, + "openMiniplayer": true, + "videoId": "ORgGAOHFL7o", + "videoIds": [ + "ORgGAOHFL7o" + ] + }, + "clickTrackingParams": "CPQHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CPQHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + }, + "title": { + "content": "Add to queue" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "NOT_INTERESTED" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CPEHEIf2BBgIIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPEHEIf2BBgIIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPMHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPMHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "ORgGAOHFL7o", + "undoToken": "AB9zfpKOUnGRvulhw9ekTskbsKeWw5Pik6lNOb6mwM62qKPWcP8fGwp_MxNkdg1Q8ghiyEIzpYdB9fe2DDNNNUa7NCPXtFYJ1dTKlE_mZj9jKNFIedTfoGoPa9tAyLKKrSTW-xFoebH_" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CPMHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CPIHEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "ORgGAOHFL7o", + "feedbackToken": "AB9zfpKNP_oSDj9QCxFW02YzrPVjmFjCSdOSFDcqD56ePQWbJkDGWJEdx6jM244N6Tvq6HcoJjYzs6dJdu0ddJkfpuEqeft1UkmmC32KgwY-agdtk8ExFZZ4m9tbUAxWufIceCSd93nE", + "uiActions": { + "hideEnclosingContainer": true + } + } + } + } + } + }, + "title": { + "content": "Hide" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CPEHEIf2BBgIIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "ORgGAOHFL7o" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + }, + "title": { + "content": "Send feedback" + } + } + } + ] + } + } + } + } + } + } + } + }, + "menuOnTapA11yLabel": "More actions", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CPEHEIf2BBgIIhMInfL4orPDigMVbHR6BR25GwwEWg9GRXN1YnNjcmlwdGlvbnOaAQYIJBDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 37414, + "url": "/shorts/ORgGAOHFL7o", + "webPageType": "WEB_PAGE_TYPE_SHORTS" + } + }, + "reelWatchEndpoint": { + "loggingContext": { + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED", + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CPUHELC1BCITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "params": "CAUwAg%3D%3D", + "playerParams": "8AEBoAMByAMkuAQFogYVAePzwRPCCygKa6ll4DSwfWZOZFnjkAcC", + "sequenceParams": "GhMKC09SZ0dBT0hGTDdvGAggASgBKhMKDQoLT1JnR0FPSEZMN28QABgHaACKAQQSAhgCkAED", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "thumbnail": { + "isOriginalAspectRatio": true, + "thumbnails": [ + { + "height": 1920, + "url": "https://i.ytimg.com/vi/ORgGAOHFL7o/frame0.jpg", + "width": 1080 + } + ] + }, + "ustreamerConfig": "CAw=", + "videoId": "ORgGAOHFL7o" + } + } + }, + "overlayMetadata": { + "primaryText": { + "content": "𝐼𝑐𝑖𝑛𝑔 𝑐𝑜𝑜𝑘𝑖𝑒𝑠 𝑓𝑜𝑟 𝐹𝐸𝐴𝑅𝑁𝑂𝑇 *𖢔𐂂꙳ #LE_SSERAFIM #르세라핌 #shorts" + }, + "secondaryText": { + "content": "26K views" + } + }, + "thumbnail": { + "sources": [ + { + "height": 720, + "url": "https://i.ytimg.com/vi/ORgGAOHFL7o/oardefault.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDV09XlpZdYTJ3ywFE7yPXzCePKxw", + "width": 405 + } + ] + } + } + }, + "trackingParams": "CPAHEJmNBRgIIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "accessibilityText": "I liked my outfit :) #ootd #outfit #style #yay, 4 views - play Short", + "entityId": "subscriptions-shorts-shelf-item-f3iAxJKsLGs", + "indexInCollection": 9, + "inlinePlayerData": { + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "COsHEIf2BBgJIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBggkEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=f3iAxJKsLGs&pp=YAHIAQHwAQG6AwIYAugFAaIGFQHj88ET8cSzPreYQg4CcbORc9R4N5AHAg%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQHwAQG6AwIYAugFAaIGFQHj88ET8cSzPreYQg4CcbORc9R4N5AHAg%3D%3D", + "videoId": "f3iAxJKsLGs", + "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&siu=1&msp=1&odepv=1&id=7f7880c492ac2c6b&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "COsHEIf2BBgJIhMInfL4orPDigMVbHR6BR25GwwE", + "visibility": { + "types": "12" + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "COsHEIf2BBgJIhMInfL4orPDigMVbHR6BR25GwwE", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CO4HEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CO4HEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "f3iAxJKsLGs" + ] + } + }, + "openMiniplayer": true, + "videoId": "f3iAxJKsLGs", + "videoIds": [ + "f3iAxJKsLGs" + ] + }, + "clickTrackingParams": "CO4HEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CO4HEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + }, + "title": { + "content": "Add to queue" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "NOT_INTERESTED" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COsHEIf2BBgJIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COsHEIf2BBgJIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CO0HEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CO0HEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "f3iAxJKsLGs", + "undoToken": "AB9zfpIucop5LvxWBblxgTQdQVBxpDTRiHi8g8f4fqvjNO8zjq01i2qtgbMKtPig78C_YmCraBRapi-Tx2RI4wND6Yx1RreQtrFKMT77tmZ-G08_ij9Ev0g7Bu6duTe-Y77PJYbc-cIo" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CO0HEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "COwHEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "f3iAxJKsLGs", + "feedbackToken": "AB9zfpK1g1UJGqA4digD2eA2oKqW_6AQKjRoavr_ty_KIdaEjTUGQTXHbPODzYCKAXrywMikyDc7qjTu2lMdMnsx8rN88eDPcSn6SIeTznZMFos4SaGHUMqA27jpMzKOknw7P68wufo3", + "uiActions": { + "hideEnclosingContainer": true + } + } + } + } + } + }, + "title": { + "content": "Hide" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COsHEIf2BBgJIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "f3iAxJKsLGs" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + }, + "title": { + "content": "Send feedback" + } + } + } + ] + } + } + } + } + } + } + } + }, + "menuOnTapA11yLabel": "More actions", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COsHEIf2BBgJIhMInfL4orPDigMVbHR6BR25GwwEWg9GRXN1YnNjcmlwdGlvbnOaAQYIJBDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 37414, + "url": "/shorts/f3iAxJKsLGs", + "webPageType": "WEB_PAGE_TYPE_SHORTS" + } + }, + "reelWatchEndpoint": { + "loggingContext": { + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED", + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CO8HELC1BCITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "params": "CAUwAg%3D%3D", + "playerParams": "8AEBoAMByAMkuAQFogYVAePzwRPxxLM-t5hCDgJxs5Fz1Hg3kAcC", + "sequenceParams": "GhMKC2YzaUF4SktzTEdzGAkgASgBKhMKDQoLZjNpQXhKS3NMR3MQABgHaACKAQQSAhgCkAED", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "thumbnail": { + "isOriginalAspectRatio": true, + "thumbnails": [ + { + "height": 1920, + "url": "https://i.ytimg.com/vi/f3iAxJKsLGs/frame0.jpg", + "width": 1080 + } + ] + }, + "ustreamerConfig": "CAw=", + "videoId": "f3iAxJKsLGs" + } + } + }, + "overlayMetadata": { + "primaryText": { + "content": "I liked my outfit :) #ootd #outfit #style #yay" + }, + "secondaryText": { + "content": "4 views" + } + }, + "thumbnail": { + "sources": [ + { + "height": 720, + "url": "https://i.ytimg.com/vi/f3iAxJKsLGs/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAenSwKCvgoE8wQT-Ir0cs3CHFNjg", + "width": 405 + } + ] + } + } + }, + "trackingParams": "COoHEJmNBRgJIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "accessibilityText": "낭만 족제비 #StrayKids #스트레이키즈 #스키즈코드 #SKZCODE #슼케어리타운 #SKZARYTOWN #YouMakeStrayKidsStay, 68K views - play Short", + "entityId": "subscriptions-shorts-shelf-item-iZy_NmQJjbg", + "indexInCollection": 10, + "inlinePlayerData": { + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "COUHEIf2BBgKIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBggkEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=iZy_NmQJjbg&pp=YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETpNR-bAwMpqs1w3S7Ov3rN5AHAg%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETpNR-bAwMpqs1w3S7Ov3rN5AHAg%3D%3D", + "videoId": "iZy_NmQJjbg", + "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&siu=1&msp=1&odepv=1&id=899cbf3664098db8&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "COUHEIf2BBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "visibility": { + "types": "12" + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "COUHEIf2BBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COgHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COgHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "iZy_NmQJjbg" + ] + } + }, + "openMiniplayer": true, + "videoId": "iZy_NmQJjbg", + "videoIds": [ + "iZy_NmQJjbg" + ] + }, + "clickTrackingParams": "COgHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "trackingParams": "COgHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + }, + "title": { + "content": "Add to queue" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "NOT_INTERESTED" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COUHEIf2BBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COUHEIf2BBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COcHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COcHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "iZy_NmQJjbg", + "undoToken": "AB9zfpJ-9GCcukjwd6FcVGCI2NaT-en3e1HeIMfeeheS6GqIu-mGUDM4YHKUz2gUMlBsKrHCxapHD8HQo1sXdsV999bHMzrmV727O8SwnlHQ7BC4CkgZBG9YjKAtUqR_E_QwT4aulL4W" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "COcHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "COYHEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "iZy_NmQJjbg", + "feedbackToken": "AB9zfpL-agsk_LaSoOZX5waRnjqqmgbNZnNXe3XqWkzSbtsX8iYr_NNVz4JhTHHMutpAjoJgSP5qgetqMINpR4D-Xjqlq_Qa9RNQWqBViaglidXYI6F8lcoeVD5KFvt2jA0OVyI_-bMl", + "uiActions": { + "hideEnclosingContainer": true + } + } + } + } + } + }, + "title": { + "content": "Hide" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COUHEIf2BBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "iZy_NmQJjbg" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + }, + "title": { + "content": "Send feedback" + } + } + } + ] + } + } + } + } + } + } + } + }, + "menuOnTapA11yLabel": "More actions", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COUHEIf2BBgKIhMInfL4orPDigMVbHR6BR25GwwEWg9GRXN1YnNjcmlwdGlvbnOaAQYIJBDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 37414, + "url": "/shorts/iZy_NmQJjbg", + "webPageType": "WEB_PAGE_TYPE_SHORTS" + } + }, + "reelWatchEndpoint": { + "loggingContext": { + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED", + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "COkHELC1BCITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "params": "CAUwAg%3D%3D", + "playerParams": "8AEBoAMByAMkuAQFogYVAePzwROk1H5sDAymqzXDdLs6_es3kAcC", + "sequenceParams": "GhMKC2laeV9ObVFKamJnGAogASgBKhMKDQoLaVp5X05tUUpqYmcQABgHaACKAQQSAhgCkAED", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "thumbnail": { + "isOriginalAspectRatio": true, + "thumbnails": [ + { + "height": 1920, + "url": "https://i.ytimg.com/vi/iZy_NmQJjbg/frame0.jpg", + "width": 1080 + } + ] + }, + "ustreamerConfig": "CAw=", + "videoId": "iZy_NmQJjbg" + } + } + }, + "overlayMetadata": { + "primaryText": { + "content": "낭만 족제비 #StrayKids #스트레이키즈 #스키즈코드 #SKZCODE #슼케어리타운 #SKZARYTOWN #YouMakeStrayKidsStay" + }, + "secondaryText": { + "content": "68K views" + } + }, + "thumbnail": { + "sources": [ + { + "height": 720, + "url": "https://i.ytimg.com/vi/iZy_NmQJjbg/oardefault.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAnJpFomK5DIe2JXlANjhCBopJ2Ig", + "width": 405 + } + ] + } + } + }, + "trackingParams": "COQHEJmNBRgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "accessibilityText": "🎄2024 HOLIDAY GREETING CARD💌 #LE_SSERAFIM #르세라핌 #HONGEUNCHAE #홍은채, 17K views - play Short", + "entityId": "subscriptions-shorts-shelf-item-OJw9YT_AyXk", + "indexInCollection": 11, + "inlinePlayerData": { + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "CN8HEIf2BBgLIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBggkEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=OJw9YT_AyXk&pp=YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETq8dpIFlZgmjeUPAAWqyYl5AHAg%3D%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQHwAQG6AwIYAugFAaIGFQHj88ETq8dpIFlZgmjeUPAAWqyYl5AHAg%3D%3D", + "videoId": "OJw9YT_AyXk", + "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&siu=1&msp=1&odepv=1&id=389c3d613fc0c979&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CN8HEIf2BBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "visibility": { + "types": "12" + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CN8HEIf2BBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "ADD_TO_QUEUE_TAIL" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COIHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COIHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "OJw9YT_AyXk" + ] + } + }, + "openMiniplayer": true, + "videoId": "OJw9YT_AyXk", + "videoIds": [ + "OJw9YT_AyXk" + ] + }, + "clickTrackingParams": "COIHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + } + } + }, + "loggingContext": { + "loggingDirectives": { + "trackingParams": "COIHEP6YBBgAIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + }, + "title": { + "content": "Add to queue" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "NOT_INTERESTED" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CN8HEIf2BBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CN8HEIf2BBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COEHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COEHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "OJw9YT_AyXk", + "undoToken": "AB9zfpIOvBLSIdmkjXGQs9DclljASpQ6iJ-9DYErRGY7DgaqwG7ir5gHRstKolU6XgW0z6eQMedY3QqlBcj3U16sCLqnxoSlCj7TgM1NVAHMNrOWQ3BG0a__71fckZI6DmUlyyvju4nc" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "COEHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "COAHEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "OJw9YT_AyXk", + "feedbackToken": "AB9zfpJXa0kbITUW7xmkxU0_3GeHA3_ADJP7zjsZq1rzF8yY4eXkye-taGh1fSoowThbCaAJx8-8U_FZYU9LiNpwj-tX2wC-bx3pCeNJdQFFQAJ5k_Qd5Fj6iL4nuMrmVCtHcXWTTOZw", + "uiActions": { + "hideEnclosingContainer": true + } + } + } + } + } + }, + "title": { + "content": "Hide" + } + } + }, + { + "listItemViewModel": { + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CN8HEIf2BBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "OJw9YT_AyXk" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + }, + "title": { + "content": "Send feedback" + } + } + } + ] + } + } + } + } + } + } + } + }, + "menuOnTapA11yLabel": "More actions", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CN8HEIf2BBgLIhMInfL4orPDigMVbHR6BR25GwwEWg9GRXN1YnNjcmlwdGlvbnOaAQYIJBDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 37414, + "url": "/shorts/OJw9YT_AyXk", + "webPageType": "WEB_PAGE_TYPE_SHORTS" + } + }, + "reelWatchEndpoint": { + "loggingContext": { + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED", + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "COMHELC1BCITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "params": "CAUwAg%3D%3D", + "playerParams": "8AEBoAMByAMkuAQFogYVAePzwROrx2kgWVmCaN5Q8ABarJiXkAcC", + "sequenceParams": "GhMKC09KdzlZVF9BeVhrGAsgASgBKhMKDQoLT0p3OVlUX0F5WGsQABgHaACKAQQSAhgCkAED", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "thumbnail": { + "isOriginalAspectRatio": true, + "thumbnails": [ + { + "height": 1280, + "url": "https://i.ytimg.com/vi/OJw9YT_AyXk/frame0.jpg", + "width": 720 + } + ] + }, + "ustreamerConfig": "CAw=", + "videoId": "OJw9YT_AyXk" + } + } + }, + "overlayMetadata": { + "primaryText": { + "content": "🎄2024 HOLIDAY GREETING CARD💌 #LE_SSERAFIM #르세라핌 #HONGEUNCHAE #홍은채" + }, + "secondaryText": { + "content": "17K views" + } + }, + "thumbnail": { + "sources": [ + { + "height": 720, + "url": "https://i.ytimg.com/vi/OJw9YT_AyXk/oardefault.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAn3MPbtPma7zeUWE2z6fscK5mOtg", + "width": 405 + } + ] + } + } + }, + "trackingParams": "CN4HEJmNBRgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "icon": { + "iconType": "YOUTUBE_SHORTS_BRAND_24" + }, + "isBottomDividerHidden": false, + "isExpanded": false, + "isTopDividerHidden": false, + "menu": { + "menuRenderer": { + "topLevelButtons": [ + { + "buttonRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "View all" + } + }, + "isDisabled": false, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "FEsubscriptions_shorts" + }, + "clickTrackingParams": "CN0HEPBbGAwiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 6827, + "url": "/feed/subscriptions/shorts", + "webPageType": "WEB_PAGE_TYPE_BROWSE" + } + } + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "View all" + } + ] + }, + "trackingParams": "CN0HEPBbGAwiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CNoHEN-DAyITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "responsiveContainerConfiguration": { + "enableContentSpecificAspectRatio": true + }, + "showLessButton": { + "buttonRenderer": { + "accessibility": { + "label": "Show less" + }, + "icon": { + "iconType": "COLLAPSE" + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_OPACITY", + "text": { + "runs": [ + { + "text": "Show less" + } + ] + }, + "trackingParams": "CNsHEPBbIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "showMoreButton": { + "buttonRenderer": { + "accessibility": { + "label": "Show more" + }, + "icon": { + "iconType": "EXPAND" + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_OPACITY", + "text": { + "runs": [ + { + "text": "Show more" + } + ] + }, + "trackingParams": "CNwHEJnjCyITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "title": { + "runs": [ + { + "text": "Shorts" + } + ] + }, + "trackingParams": "CNoHEN-DAyITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + "trackingParams": "CNkHEOOXBRgFIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/-1Bt8eufq601KzmA0Rk1yrIzz372UDDeBkIpWytlztkcAyh1w6g2bNfXVnR6hadnezvUCq0XICA=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCsQBsZJltmLzlsJNG7HevBg" + }, + "clickTrackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCsQBsZJltmLzlsJNG7HevBg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCsQBsZJltmLzlsJNG7HevBg" + }, + "clickTrackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCsQBsZJltmLzlsJNG7HevBg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/-1Bt8eufq601KzmA0Rk1yrIzz372UDDeBkIpWytlztkcAyh1w6g2bNfXVnR6hadnezvUCq0XICA=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "freestyle of HEY NOW by kenny\n\ndirector: TYLER OKONMA\ndp: LUIS \"PANCH\" PEREZ\nproduction: HAPPY PLACE\neditor: STEVE FORNER\nhair: NENA (LADYSOULFLY) / RONNIE MCCOY III\nclothing: le FLEUR*\nlocation:..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=M0qiZHV4E3U&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "M0qiZHV4E3U", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=334aa26475781375&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 54 seconds" + } + }, + "simpleText": "2:54" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCsQBsZJltmLzlsJNG7HevBg", + "canonicalBaseUrl": "/channel/UCsQBsZJltmLzlsJNG7HevBg" + }, + "clickTrackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCsQBsZJltmLzlsJNG7HevBg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Tyler, The Creator" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNgHEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNgHEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "M0qiZHV4E3U" + ] + } + }, + "openMiniplayer": true, + "videoId": "M0qiZHV4E3U", + "videoIds": [ + "M0qiZHV4E3U" + ] + }, + "clickTrackingParams": "CNgHEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNgHEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "M0qiZHV4E3U" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "M0qiZHV4E3U" + }, + "clickTrackingParams": "CNcHEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CNcHEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNYHENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CNYHENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "M0qiZHV4E3U" + } + }, + "videoId": "M0qiZHV4E3U" + } + }, + "trackingParams": "CNYHENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CNUHEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtNMHFpWkhWNEUzVQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNQHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNQHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "M0qiZHV4E3U", + "undoToken": "AB9zfpK4Xdqk-T9zB9cDa5eU_gVm08ptA6xShKKbE5_jrh4uKPeYXfhTUFZ6swuFvY2bCm3VlxBMUu6trowo0ruBkiT0l9LDYvJK3Kr5HOP7ouh1wUzwbppKm8ewLX8aP1Y2eh49V1a-" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CNQHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CNMHEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "M0qiZHV4E3U", + "feedbackToken": "AB9zfpLykvyoklUSwEF7y5ugRkxNBwBdP_vWd1ERzIM3MVQN0Vu_af9-G-xPo2cGhTHPNcLe0Uvyl46k2v8PqGvgH6bhOuu-4y32EdU151ixl3TNyl240ODa93XKuetrx3A_c7cpJDhb", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=M0qiZHV4E3U", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "M0qiZHV4E3U", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=334aa26475781375&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCsQBsZJltmLzlsJNG7HevBg", + "canonicalBaseUrl": "/channel/UCsQBsZJltmLzlsJNG7HevBg" + }, + "clickTrackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCsQBsZJltmLzlsJNG7HevBg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Tyler, The Creator" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 hours ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCsQBsZJltmLzlsJNG7HevBg", + "canonicalBaseUrl": "/channel/UCsQBsZJltmLzlsJNG7HevBg" + }, + "clickTrackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCsQBsZJltmLzlsJNG7HevBg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Tyler, The Creator" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "327K views" + } + }, + "simpleText": "327K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/M0qiZHV4E3U/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDWbxIE1uVg6Wwbzxlz1FwQgWCkNg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/M0qiZHV4E3U/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA8JZ15H7f4VwMcMZpm5DdwgAIp5g", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/M0qiZHV4E3U/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCZF4bX-NaKIumbM83nL-glt2_xhw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 54 seconds" + } + }, + "simpleText": "2:54" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNIHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "M0qiZHV4E3U" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CNIHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNIHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "M0qiZHV4E3U" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CNEHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNEHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNEHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "M0qiZHV4E3U" + ] + } + }, + "openMiniplayer": true, + "videoId": "M0qiZHV4E3U", + "videoIds": [ + "M0qiZHV4E3U" + ] + }, + "clickTrackingParams": "CNEHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "THAT GUY by Tyler, The Creator 327,007 views 2 hours ago 2 minutes, 54 seconds" + } + }, + "runs": [ + { + "text": "THAT GUY" + } + ] + }, + "trackingParams": "CNAHENwwIhMInfL4orPDigMVbHR6BR25GwwEQPWm4KvHzKilMw==", + "videoId": "M0qiZHV4E3U", + "viewCountText": { + "simpleText": "327,007 views" + } + } + }, + "trackingParams": "CM8HEJmNBRgGIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Horse sense." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=hMdOrERJxCw&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "hMdOrERJxCw", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=84c74eac4449c42c&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "13 minutes, 5 seconds" + } + }, + "simpleText": "13:05" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4HEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CM4HEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "hMdOrERJxCw" + ] + } + }, + "openMiniplayer": true, + "videoId": "hMdOrERJxCw", + "videoIds": [ + "hMdOrERJxCw" + ] + }, + "clickTrackingParams": "CM4HEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CM4HEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "hMdOrERJxCw" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "hMdOrERJxCw" + }, + "clickTrackingParams": "CM0HEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CM0HEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMwHENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CMwHENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "hMdOrERJxCw" + } + }, + "videoId": "hMdOrERJxCw" + } + }, + "trackingParams": "CMwHENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CMsHEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtoTWRPckVSSnhDdw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMoHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMoHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "hMdOrERJxCw", + "undoToken": "AB9zfpJPmysNbG4UbVVB32X3CsTZTAf6bbejui1-61xLNMc_Cy6OZsCSUsBvGGBqQ4P0f235q1bPvaQVTdCij7HawCvn3k9W978EKAXbLPpHOFmiMZYrXdUqqrREIoa01OLdxz7_sTtE" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CMoHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CMkHEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "hMdOrERJxCw", + "feedbackToken": "AB9zfpKhZBIzYM_9_xBw4noSeL4vR9dcpXVJRIfm6MGWVuSTejgNSaCwmZghEpZ1X_aHyHpm770hhCIsQopnLXDo2Pfr4-YpsEw53dFiiSz8K6KVwV66HQFhJZriclWk4zX3rGPs-MPK", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=hMdOrERJxCw", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "hMdOrERJxCw", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=84c74eac4449c42c&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 hours ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/hMdOrERJxCw/mqdefault_6s.webp?du=3000&sqp=CNjusLsG&rs=AOn4CLCMM8tMcKcG50-2csfIU5Ga2QBTeA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "4.4K views" + } + }, + "simpleText": "4.4K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/hMdOrERJxCw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBjmTJC0reZpyf_MrxOvyeGc8qadg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/hMdOrERJxCw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAAuCZWYul0vIdfnU6BnhiqEU4xjg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/hMdOrERJxCw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCOXSXe3q9mt3DQPfzvskEVkGjrgA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "13 minutes, 5 seconds" + } + }, + "simpleText": "13:05" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMgHEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "hMdOrERJxCw" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CMgHEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMgHEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "hMdOrERJxCw" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CMcHEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMcHEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMcHEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "hMdOrERJxCw" + ] + } + }, + "openMiniplayer": true, + "videoId": "hMdOrERJxCw", + "videoIds": [ + "hMdOrERJxCw" + ] + }, + "clickTrackingParams": "CMcHEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "cAvEman TV || That Damn Prussian by AvE 4,492 views 2 hours ago 13 minutes, 5 seconds" + } + }, + "runs": [ + { + "text": "cAvEman TV || That Damn Prussian" + } + ] + }, + "trackingParams": "CMYHENwwIhMInfL4orPDigMVbHR6BR25GwwEQKyIp6LE1dPjhAE=", + "videoId": "hMdOrERJxCw", + "viewCountText": { + "simpleText": "4,492 views" + } + } + }, + "trackingParams": "CMUHEJmNBRgHIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The fate of the nation relies on one man. The Night Agent Season 2 returns January 23, only on Netflix.\r\n\r\nWatch on Netflix: https://www.netflix.com/title/81654821\r\n\r\nAbout Netflix:\r\nNetflix..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=FXflfh5jdIc&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "FXflfh5jdIc", + "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&siu=1&msp=1&odepv=1&id=1577e57e1e637487&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 7 seconds" + } + }, + "simpleText": "2:07" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMQHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMQHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "FXflfh5jdIc" + ] + } + }, + "openMiniplayer": true, + "videoId": "FXflfh5jdIc", + "videoIds": [ + "FXflfh5jdIc" + ] + }, + "clickTrackingParams": "CMQHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMQHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "FXflfh5jdIc" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "FXflfh5jdIc" + }, + "clickTrackingParams": "CMMHEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMMHEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMIHENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CMIHENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "FXflfh5jdIc" + } + }, + "videoId": "FXflfh5jdIc" + } + }, + "trackingParams": "CMIHENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CMEHEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtGWGZsZmg1amRJYw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMAHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMAHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "FXflfh5jdIc", + "undoToken": "AB9zfpLqO-A9aLTqCFJb1sAVmCI4RDKiGpgrJ4ZaekKYofO4aZWieABIEpqK6x0edfPPb3bz10LEGPzqvaHyJEeKP8GrP_JQl9QS4cgvbRSSA2VO3sRiPZnVW7W5pmiVmRkUpm84Sc0j" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CMAHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CL8HEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "FXflfh5jdIc", + "feedbackToken": "AB9zfpLuq-3kw7OqjE63LCVeUWKb_78QsSHafrHH3l3c_zgBRN_j55e_KcRhgPL7p0DB6TlUs6ttNTkbX1ghAzCfdxRacw7o1oU9zhJZdLziR-LZkR1ba7nkXoy1TNdFMUjnIALECIRA", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=FXflfh5jdIc", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "FXflfh5jdIc", + "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&siu=1&msp=1&odepv=1&id=1577e57e1e637487&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "publishedTimeText": { + "simpleText": "3 hours ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/FXflfh5jdIc/mqdefault_6s.webp?du=3000&sqp=CKDesLsG&rs=AOn4CLDSGbxn41SrHkTvkZ2FO_i5gOeROg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "49K views" + } + }, + "simpleText": "49K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/FXflfh5jdIc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBUfiP5l1fCe3TldsZ5a9TscDnX4w", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/FXflfh5jdIc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAs-0cH5rcWwrZnJrUcQQHcJbMBVQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/FXflfh5jdIc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD62NbWIZ-4lwBChM_H7Bj-1nxHhQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 7 seconds" + } + }, + "simpleText": "2:07" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CL4HEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "FXflfh5jdIc" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CL4HEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CL4HEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "FXflfh5jdIc" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CL0HEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CL0HEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CL0HEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "FXflfh5jdIc" + ] + } + }, + "openMiniplayer": true, + "videoId": "FXflfh5jdIc", + "videoIds": [ + "FXflfh5jdIc" + ] + }, + "clickTrackingParams": "CL0HEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "The Night Agent: Season 2 | Official Trailer | Netflix by Netflix 49,359 views 3 hours ago 2 minutes, 7 seconds" + } + }, + "runs": [ + { + "text": "The Night Agent: Season 2 | Official Trailer | Netflix" + } + ] + }, + "trackingParams": "CLwHENwwIhMInfL4orPDigMVbHR6BR25GwwEQIfpjfPhr_m7FQ==", + "videoId": "FXflfh5jdIc", + "viewCountText": { + "simpleText": "49,359 views" + } + } + }, + "trackingParams": "CLsHEJmNBRgIIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktld7JEURejIWXjEKhRjbiZGxX3TKPnRLUB5lbtltJvek=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC_1HVMnw-610qx54iEiWk7A", + "canonicalBaseUrl": "/@akidearest" + }, + "clickTrackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@akidearest", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "buttons": [ + { + "toggleButtonRenderer": { + "defaultServiceEndpoint": { + "addUpcomingEventReminderEndpoint": { + "params": "CgtOTGJyeWl3dUhrbzIECAAQAA%3D%3D" + }, + "clickTrackingParams": "CLIHEJhNGAYiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/notification/add_upcoming_event_reminder", + "sendPost": true + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Notify me" + } + ] + }, + "defaultTooltip": "You’ll be notified at the scheduled start time.", + "isDisabled": false, + "isToggled": false, + "style": { + "styleType": "STYLE_COMPACT_GRAY" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLIHEJhNGAYiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/notification/remove_upcoming_event_reminder", + "sendPost": true + } + }, + "removeUpcomingEventReminderEndpoint": { + "params": "CgtOTGJyeWl3dUhrbzIECAAQAA%3D%3D" + } + }, + "toggledStyle": { + "styleType": "STYLE_COMPACT_GRAY" + }, + "toggledText": { + "runs": [ + { + "text": "Notification on" + } + ] + }, + "trackingParams": "CLIHEJhNGAYiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC_1HVMnw-610qx54iEiWk7A", + "canonicalBaseUrl": "/@akidearest" + }, + "clickTrackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@akidearest", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktld7JEURejIWXjEKhRjbiZGxX3TKPnRLUB5lbtltJvek=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "🇯🇵 Learn Japanese: https://migaku.com/akidearest\n➣PATREON: https://www.patreon.com/akidearest\n\nI make a lot of videos on true crime, creepy, horror, and personal experiences from Japan...." + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "13 minutes, 17 seconds" + } + }, + "simpleText": "13:17" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC_1HVMnw-610qx54iEiWk7A", + "canonicalBaseUrl": "/@akidearest" + }, + "clickTrackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@akidearest", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "akidearest" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLoHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLoHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "NLbryiwuHko" + ] + } + }, + "openMiniplayer": true, + "videoId": "NLbryiwuHko", + "videoIds": [ + "NLbryiwuHko" + ] + }, + "clickTrackingParams": "CLoHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLoHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "NLbryiwuHko" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "NLbryiwuHko" + }, + "clickTrackingParams": "CLkHEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLkHEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLgHENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CLgHENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "NLbryiwuHko" + } + }, + "videoId": "NLbryiwuHko" + } + }, + "trackingParams": "CLgHENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CLcHEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtOTGJyeWl3dUhrbw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLYHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLYHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "NLbryiwuHko", + "undoToken": "AB9zfpJIGeB8oTdzZpj-6DslCGmvMsbQCIj4p3rbcFcPSX0B1n32McV_rh_7wdPfbytY_0oTps3Q8va6nzliaKphoZ5LiUbeoQbeG8I2IXhog42zWaAd9dnhaFDC9MiqhQbG-9hMkC7Y" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CLYHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CLUHEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "NLbryiwuHko", + "feedbackToken": "AB9zfpKlGHLyltWpCgQvRF8_-zduIRQSNjVlaAOt3e74Vy5AwkoGtUk6M4l7gymTOmClNyEhgbXdUoZMQRV4nsc7y3bUonkLsNnzgPf_NZ8G5Bkf3hdvhVEbZjhYbWeulH8__ChgSr-0", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=NLbryiwuHko", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "NLbryiwuHko", + "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&siu=1&msp=1&odepv=1&id=34b6ebca2c2e1e4a&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC_1HVMnw-610qx54iEiWk7A", + "canonicalBaseUrl": "/@akidearest" + }, + "clickTrackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@akidearest", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "akidearest" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC_1HVMnw-610qx54iEiWk7A", + "canonicalBaseUrl": "/@akidearest" + }, + "clickTrackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@akidearest", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "akidearest" + } + ] + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/NLbryiwuHko/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCG-6Q4JD_8OxZst6c_HtPWX9Ny5Q", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/NLbryiwuHko/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAxRBw1ppA1C5oK9Mjg5Bna09c9XQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/NLbryiwuHko/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBz43HWWfBCo-qqsgLj-TRjdm3rkw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "UPCOMING", + "text": { + "accessibility": { + "accessibilityData": { + "label": "Upcoming" + } + }, + "simpleText": "UPCOMING" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLQHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "NLbryiwuHko" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CLQHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLQHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "NLbryiwuHko" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CLMHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLMHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLMHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "NLbryiwuHko" + ] + } + }, + "openMiniplayer": true, + "videoId": "NLbryiwuHko", + "videoIds": [ + "NLbryiwuHko" + ] + }, + "clickTrackingParams": "CLMHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayInlineUnplayableRenderer": { + "icon": { + "iconType": "PLAY_DISABLED" + }, + "text": { + "runs": [ + { + "text": "Playback unavailable" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Japan Influencers are STILL Lying to You, and i'm so done. by akidearest 13 minutes, 17 seconds" + } + }, + "runs": [ + { + "text": "Japan Influencers are STILL Lying to You, and i'm so done." + } + ] + }, + "trackingParams": "CLEHENwwIhMInfL4orPDigMVbHR6BR25GwwEQMq8uOGi-brbNA==", + "upcomingEventData": { + "isReminderSet": false, + "startTime": "1735153200", + "upcomingEventText": { + "runs": [ + { + "text": "Premieres " + }, + { + "text": "DATE_PLACEHOLDER" + } + ] + } + }, + "videoId": "NLbryiwuHko" + } + }, + "trackingParams": "CLAHEJmNBRgJIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "[Stray Kids(스트레이 키즈) : SKZ-TALKER(슼즈토커)] Ep.68\n\nListen to \"合 (HOP)\" now💦\nhttps://Stray-Kids.lnk.to/HOP\n\nListen to \"Walkin On Water (Remixes)\" now🛷\nhttps://Stray-Kids.lnk..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Wey_XcfQScE&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "Wey_XcfQScE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=59ecbf5dc7d049c1&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 28 seconds" + } + }, + "simpleText": "17:28" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8HEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CK8HEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Wey_XcfQScE" + ] + } + }, + "openMiniplayer": true, + "videoId": "Wey_XcfQScE", + "videoIds": [ + "Wey_XcfQScE" + ] + }, + "clickTrackingParams": "CK8HEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CK8HEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Wey_XcfQScE" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "Wey_XcfQScE" + }, + "clickTrackingParams": "CK4HEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CK4HEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CK0HENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CK0HENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "Wey_XcfQScE" + } + }, + "videoId": "Wey_XcfQScE" + } + }, + "trackingParams": "CK0HENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CKwHEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtXZXlfWGNmUVNjRQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKsHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKsHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "Wey_XcfQScE", + "undoToken": "AB9zfpJ3lhDx-Lo90ogRJNyIZC6oo6Mx_HKVh64CStIghh8m65a0jU4C_nTckIMBKFNLoE2R7z5tUhwtfuiqj_YzTnbNc02PLxECiL-OWGCiUryH1JisIUyZGkVXlxlfkIxMgzOEbYB2" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CKsHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CKoHEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "Wey_XcfQScE", + "feedbackToken": "AB9zfpK_sh7JZNv6jBmgt_A95WBLyhZJU93amvraJiSngHNtax5LtOAqMYMkezL-o_h3ANyrNw4cxpvkMNXFJeqt71G8FD8OGT2fojnWva-HfPCeWH7p_2dDFWhIkNbXhz6hGWF7hvmN", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Wey_XcfQScE", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "Wey_XcfQScE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=59ecbf5dc7d049c1&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "publishedTimeText": { + "simpleText": "10 hours ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/Wey_XcfQScE/mqdefault_6s.webp?du=3000&sqp=CL_zsLsG&rs=AOn4CLCg4iKImyOK5KZ7eWPsNOkzV8iKoQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "294K views" + } + }, + "simpleText": "294K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/Wey_XcfQScE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDa2TWOUV5T5VDHi86WNH-rYkYFoA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Wey_XcfQScE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDzTQvfLSNM3-Rq7TKetXRGf7EQLg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Wey_XcfQScE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAUN2sunSboAsWuWyxp2FKIyOL3lA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 28 seconds" + } + }, + "simpleText": "17:28" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKkHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Wey_XcfQScE" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CKkHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKkHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Wey_XcfQScE" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CKgHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKgHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKgHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Wey_XcfQScE" + ] + } + }, + "openMiniplayer": true, + "videoId": "Wey_XcfQScE", + "videoIds": [ + "Wey_XcfQScE" + ] + }, + "clickTrackingParams": "CKgHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "[Stray Kids : SKZ-TALKER] Ep.68 by Stray Kids 294,143 views 10 hours ago 17 minutes" + } + }, + "runs": [ + { + "text": "[Stray Kids : SKZ-TALKER] Ep.68" + } + ] + }, + "trackingParams": "CKcHENwwIhMInfL4orPDigMVbHR6BR25GwwEQMGTwb7c66_2WQ==", + "videoId": "Wey_XcfQScE", + "viewCountText": { + "simpleText": "294,143 views" + } + } + }, + "trackingParams": "CKYHEJmNBRgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/qhmEoqhG9u8lCm3NgdJc1hJ4yZYBPCZ8l2J-ia6cf_gSsnuFLo1sM_NUmFn48oPRAiJIkNUo=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCtiObj3CsEAdNU6ZPWDsddQ" + }, + "clickTrackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCtiObj3CsEAdNU6ZPWDsddQ" + }, + "clickTrackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/qhmEoqhG9u8lCm3NgdJc1hJ4yZYBPCZ8l2J-ia6cf_gSsnuFLo1sM_NUmFn48oPRAiJIkNUo=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Connect with TOMORROW X TOGETHER:\nhttps://txt.ibighit.com\nhttps://x.com/TXT_bighit\nhttps://x.com/TXT_members \nhttps://x.com/TXT_bighit_jp\nhttps://www.facebook.com/TXT.bighit\nhttps://www.instagram.c..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=E-Jeoe8kdlM&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "E-Jeoe8kdlM", + "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&siu=1&msp=1&odepv=1&id=13e25ea1ef247653&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 44 seconds" + } + }, + "simpleText": "2:44" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCtiObj3CsEAdNU6ZPWDsddQ", + "canonicalBaseUrl": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ" + }, + "clickTrackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "TOMORROW X TOGETHER OFFICIAL" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKUHEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKUHEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "E-Jeoe8kdlM" + ] + } + }, + "openMiniplayer": true, + "videoId": "E-Jeoe8kdlM", + "videoIds": [ + "E-Jeoe8kdlM" + ] + }, + "clickTrackingParams": "CKUHEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKUHEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "E-Jeoe8kdlM" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "E-Jeoe8kdlM" + }, + "clickTrackingParams": "CKQHEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKQHEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKMHENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CKMHENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "E-Jeoe8kdlM" + } + }, + "videoId": "E-Jeoe8kdlM" + } + }, + "trackingParams": "CKMHENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CKIHEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtFLUplb2U4a2RsTQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKEHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKEHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "E-Jeoe8kdlM", + "undoToken": "AB9zfpJyVWT88IrZFLAqY0MXzfYVNxoDBmd1dgEqGZZBQotkmagfi6Ry5kDknptL4feph776AJqp6Ydft3M72-uLhqzOzqasabGbCOicJBXkO-sntMDy4gdKqovVHvQ85SMZ26ERRHWdY9-MainfLDdm-6_gwly1Ew" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CKEHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CKAHEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "E-Jeoe8kdlM", + "feedbackToken": "AB9zfpK7D4PVKlcu-aGUcMuyq_eBlCNYjXwkNU9rEUDmOrZ0ESr-0N7jnqNwc11nuexaVO-rVednHmYb4Jpc4XbuZxLxWfT0-DWO54hjF7NqgYlxYPUFMDd_uKYw2A9SAHJzYAU4gjJ5", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=E-Jeoe8kdlM", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "E-Jeoe8kdlM", + "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&siu=1&msp=1&odepv=1&id=13e25ea1ef247653&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCtiObj3CsEAdNU6ZPWDsddQ", + "canonicalBaseUrl": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ" + }, + "clickTrackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "TOMORROW X TOGETHER OFFICIAL" + } + ] + }, + "publishedTimeText": { + "simpleText": "12 hours ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCtiObj3CsEAdNU6ZPWDsddQ", + "canonicalBaseUrl": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ" + }, + "clickTrackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "TOMORROW X TOGETHER OFFICIAL" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "102K views" + } + }, + "simpleText": "102K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/E-Jeoe8kdlM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLATgL76mJeMFMtFlRpQwoHzr9xFXA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/E-Jeoe8kdlM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAxrS018z0NwwJybxmfk0DL4I-XJw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/E-Jeoe8kdlM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAt7Czz9VCJVnS-F9jGKnEZGwAfDg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 44 seconds" + } + }, + "simpleText": "2:44" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJ8HEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "E-Jeoe8kdlM" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CJ8HEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJ8HEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "E-Jeoe8kdlM" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CJ4HEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJ4HEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJ4HEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "E-Jeoe8kdlM" + ] + } + }, + "openMiniplayer": true, + "videoId": "E-Jeoe8kdlM", + "videoIds": [ + "E-Jeoe8kdlM" + ] + }, + "clickTrackingParams": "CJ4HEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "‘Heaven’ Special Video (Holiday ver.) | T:TIME | TXT (투모로우바이투게더) by TOMORROW X TOGETHER OFFICIAL 102,102 views 12 hours ago 2 minutes, 44 seconds" + } + }, + "runs": [ + { + "text": "‘Heaven’ Special Video (Holiday ver.) | T:TIME | TXT (투모로우바이투게더)" + } + ] + }, + "trackingParams": "CJ0HENwwIhMInfL4orPDigMVbHR6BR25GwwEQNPskfme1JfxEw==", + "videoId": "E-Jeoe8kdlM", + "viewCountText": { + "simpleText": "102,102 views" + } + } + }, + "trackingParams": "CJwHEJmNBRgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "STARSHIP SQUARE (Domestic) : https://bit.ly/3HtQ7GF\nSTARSHIP SQUARE (Global) : https://bit.ly/3JWPxm0\nIVE US EXCLUSIVE STORE : https://shop.ive-starship.com/ \n\nIVE X (Twitter)\n: https://twitter.co..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=x_wXmqSrHzE&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "x_wXmqSrHzE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=c7fc179aa4ab1f31&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "23 minutes, 12 seconds" + } + }, + "simpleText": "23:12" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJsHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "x_wXmqSrHzE" + ] + } + }, + "openMiniplayer": true, + "videoId": "x_wXmqSrHzE", + "videoIds": [ + "x_wXmqSrHzE" + ] + }, + "clickTrackingParams": "CJsHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJsHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "x_wXmqSrHzE" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "x_wXmqSrHzE" + }, + "clickTrackingParams": "CJoHEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJoHEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJkHENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CJkHENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "x_wXmqSrHzE" + } + }, + "videoId": "x_wXmqSrHzE" + } + }, + "trackingParams": "CJkHENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CJgHEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgt4X3dYbXFTckh6RQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJcHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJcHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "x_wXmqSrHzE", + "undoToken": "AB9zfpJ_Si1Leoo4HHvdUwK-YjtBRQrwOaPyF91VCuwI3_XXgDF24y4JDQpebmtuyxGCMT1UVyXaIcVvKUw5E5Kks09fpL_kMJy-0nD0G4xoRsLa5F7y-2Kg1HtAz33LnR2tnULCop3B" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJcHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJYHEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "x_wXmqSrHzE", + "feedbackToken": "AB9zfpKEjHp3v0S1_Fa_S3HdnCKlPVgYSKwyfp36yNHow7IzmOqA89NlqgnT3oOofFpRYitTidlwdBw9HFCAJagiyq2-Jf1oW9IukQvDxDRJ4tnWIrVYJPG9td37r-6wZJ0N8jx4-dAQ", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=x_wXmqSrHzE", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "x_wXmqSrHzE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=c7fc179aa4ab1f31&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "publishedTimeText": { + "simpleText": "15 hours ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/x_wXmqSrHzE/mqdefault_6s.webp?du=3000&sqp=CLbhsLsG&rs=AOn4CLAgP13hS9A0oGVD2ICpFoqpUphudg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "134K views" + } + }, + "simpleText": "134K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/x_wXmqSrHzE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA0IfsJufxbaYNCgm7FeMXwugSCgA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/x_wXmqSrHzE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB2LptObCAdtO-YOCbS90DoAhzOWg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/x_wXmqSrHzE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBKZi1jyc5UnTaoX8vaGeiDQCyCUw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "23 minutes, 12 seconds" + } + }, + "simpleText": "23:12" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJUHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "x_wXmqSrHzE" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CJUHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJUHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "x_wXmqSrHzE" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CJQHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJQHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJQHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "x_wXmqSrHzE" + ] + } + }, + "openMiniplayer": true, + "videoId": "x_wXmqSrHzE", + "videoIds": [ + "x_wXmqSrHzE" + ] + }, + "clickTrackingParams": "CJQHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "IVE's 4th Christmas🎄 | 웃어도 돼 울어도 돼! 말하면? 안 돼🤫☃🎁 by IVE 134,738 views 15 hours ago 23 minutes" + } + }, + "runs": [ + { + "text": "IVE's 4th Christmas🎄 | 웃어도 돼 울어도 돼! 말하면? 안 돼🤫☃🎁" + } + ] + }, + "trackingParams": "CJMHENwwIhMInfL4orPDigMVbHR6BR25GwwEQLG-rKWq84X-xwE=", + "videoId": "x_wXmqSrHzE", + "viewCountText": { + "simpleText": "134,738 views" + } + } + }, + "trackingParams": "CJIHEJmNBRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The woes for Disney continue. Their Twitter account got community noted and mocked by Sonic 3 fans after lying about the box office numbers of Mufasa: The Lion King.\nUse code \"REV\" for 10%..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=d5JLXY3WOOM&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "d5JLXY3WOOM", + "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&siu=1&msp=1&odepv=1&id=77924b5d8dd638e3&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "13 minutes, 42 seconds" + } + }, + "simpleText": "13:42" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJEHEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJEHEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "d5JLXY3WOOM" + ] + } + }, + "openMiniplayer": true, + "videoId": "d5JLXY3WOOM", + "videoIds": [ + "d5JLXY3WOOM" + ] + }, + "clickTrackingParams": "CJEHEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJEHEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "d5JLXY3WOOM" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "d5JLXY3WOOM" + }, + "clickTrackingParams": "CJAHEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJAHEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CI8HENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CI8HENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "d5JLXY3WOOM" + } + }, + "videoId": "d5JLXY3WOOM" + } + }, + "trackingParams": "CI8HENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CI4HEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtkNUpMWFkzV09PTQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CI0HEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CI0HEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "d5JLXY3WOOM", + "undoToken": "AB9zfpLuciv6NZ-VATK59CQ4snwdF_jhVgUAmyVOIgaG5QnjtdQUacpPRi3v__fXtU2x_gMlbGSynecoiWgveh2wHqBALXCiJmFaHTL3Lrs4wprYJVUhtM9jmcMz45-BiemiU4AcGb1y" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CI0HEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CIwHEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "d5JLXY3WOOM", + "feedbackToken": "AB9zfpIDZ3OoRTqzmH7Z4ztmoMlGz9C69T9NdkSYr7SzYXEApQ5_qWJqjV2-a0szfLfp4SYm7HHX_WdDAhM6Wb4gz0YpKpeNSH2dXfZ72sKsmWhqe-zLlpJDA8LAGrVbi8GpA5QN6wWJ", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=d5JLXY3WOOM", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "d5JLXY3WOOM", + "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&siu=1&msp=1&odepv=1&id=77924b5d8dd638e3&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "publishedTimeText": { + "simpleText": "18 hours ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/d5JLXY3WOOM/mqdefault_6s.webp?du=3000&sqp=CNfUsLsG&rs=AOn4CLAMCDjO1-mTDqqHGb-zOXyzhdDkeA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "90K views" + } + }, + "simpleText": "90K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/d5JLXY3WOOM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDhhx7HqWtnxSS0YdmSSmwbHY-Riw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/d5JLXY3WOOM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCBEx3XtbLcU78ORQJHBYkTIP_lkQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/d5JLXY3WOOM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD7onekbnnegnGJ2ZreZfc0sXyM3g", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "13 minutes, 42 seconds" + } + }, + "simpleText": "13:42" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIsHEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "d5JLXY3WOOM" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CIsHEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIsHEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "d5JLXY3WOOM" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CIoHEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIoHEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIoHEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "d5JLXY3WOOM" + ] + } + }, + "openMiniplayer": true, + "videoId": "d5JLXY3WOOM", + "videoIds": [ + "d5JLXY3WOOM" + ] + }, + "clickTrackingParams": "CIoHEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Sonic 3 Fans DESTROY Disney After They Lied About Mufasa FLOP by Rev says desu 90,042 views 18 hours ago 13 minutes, 42 seconds" + } + }, + "runs": [ + { + "text": "Sonic 3 Fans DESTROY Disney After They Lied About Mufasa FLOP" + } + ] + }, + "trackingParams": "CIkHENwwIhMInfL4orPDigMVbHR6BR25GwwEQOPx2O7Y65LJdw==", + "videoId": "d5JLXY3WOOM", + "viewCountText": { + "simpleText": "90,042 views" + } + } + }, + "trackingParams": "CIgHEJmNBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "#newproducts \nJP’s Product Pick of the Week 12/24/24 \nINA3221 Triple 0-26VDC ±3.2 Amp Power Monitor - STEMMA QT/ / Qwiic\nhttps://www.adafruit.com/product/6062\n Deep discount during livestream..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=jE_TRugW9U4&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "jE_TRugW9U4", + "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&siu=1&msp=1&odepv=1&id=8c4fd346e816f54e&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "18 minutes, 10 seconds" + } + }, + "simpleText": "18:10" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIcHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "jE_TRugW9U4" + ] + } + }, + "openMiniplayer": true, + "videoId": "jE_TRugW9U4", + "videoIds": [ + "jE_TRugW9U4" + ] + }, + "clickTrackingParams": "CIcHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIcHEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "jE_TRugW9U4" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "jE_TRugW9U4" + }, + "clickTrackingParams": "CIYHEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CIYHEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIUHENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CIUHENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "jE_TRugW9U4" + } + }, + "videoId": "jE_TRugW9U4" + } + }, + "trackingParams": "CIUHENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CIQHEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtqRV9UUnVnVzlVNA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIMHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIMHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "jE_TRugW9U4", + "undoToken": "AB9zfpI5othtTy_bZNyuZG0cCPgR_z9iNuH0jN1A7ha4OKFAvbun9NNqeJzxm3NBBbwME5fVyCW66yHqyM-2xs630tWBhccZzx0nua5WzyTetF0f_LqN-NNv0e_SJDiwuI3OUu8PbPfB" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CIMHEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CIIHEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "jE_TRugW9U4", + "feedbackToken": "AB9zfpI-gskqIYbTtkylNkDADEtnw_V2NBuvNdq51-R61VmtM62IvnRyzQKQPsQUgFXwglXb69ME8fUxXwTJdtUxEkn1l2rZmyydXSlbkpgM1zenVtVgUYEZyAb9WUuH1jg0Mkarg-HJ", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=jE_TRugW9U4", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "jE_TRugW9U4", + "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&siu=1&msp=1&odepv=1&id=8c4fd346e816f54e&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "publishedTimeText": { + "simpleText": "Streamed 19 hours ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/jE_TRugW9U4/mqdefault_6s.webp?du=3000&sqp=CNTtsLsG&rs=AOn4CLAifUpmTZv0xV_1sv8pdEw2KmV46w", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "610 views" + } + }, + "simpleText": "610 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/jE_TRugW9U4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDw-A7EBvN7DU61g1_1lb5ALNY_xw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/jE_TRugW9U4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA3g0qZXGbcRdDld3yIiBTrPbcg-g", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/jE_TRugW9U4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAC9WbPM7DdPIl4FcaJF9cSKeygqQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "18 minutes, 10 seconds" + } + }, + "simpleText": "18:10" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIEHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "jE_TRugW9U4" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CIEHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIEHEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "jE_TRugW9U4" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CIAHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIAHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIAHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "jE_TRugW9U4" + ] + } + }, + "openMiniplayer": true, + "videoId": "jE_TRugW9U4", + "videoIds": [ + "jE_TRugW9U4" + ] + }, + "clickTrackingParams": "CIAHEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "JP’s Product Pick of the Week 12/24/24 by Adafruit Industries 610 views Streamed 19 hours ago 18 minutes" + } + }, + "runs": [ + { + "text": "JP’s Product Pick of the Week 12/24/24" + } + ] + }, + "trackingParams": "CP8GENwwIhMInfL4orPDigMVbHR6BR25GwwEQM7q28Du6PSnjAE=", + "videoId": "jE_TRugW9U4", + "viewCountText": { + "simpleText": "610 views" + } + } + }, + "trackingParams": "CP4GEJmNBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "This is America, 1857. Taylor Kitsch and Betty Gilpin star in American Primeval, a gripping new limited series from director Peter Berg. Coming Jan. 9, only on Netflix.\n\nWatch on Netflix: https://w..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=nSyLYlTuktc&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "nSyLYlTuktc", + "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&siu=1&msp=1&odepv=1&id=9d2c8b6254ee92d7&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 8 seconds" + } + }, + "simpleText": "1:08" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0GEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CP0GEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "nSyLYlTuktc" + ] + } + }, + "openMiniplayer": true, + "videoId": "nSyLYlTuktc", + "videoIds": [ + "nSyLYlTuktc" + ] + }, + "clickTrackingParams": "CP0GEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CP0GEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "nSyLYlTuktc" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "nSyLYlTuktc" + }, + "clickTrackingParams": "CPwGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CPwGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPsGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CPsGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "nSyLYlTuktc" + } + }, + "videoId": "nSyLYlTuktc" + } + }, + "trackingParams": "CPsGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CPoGEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtuU3lMWWxUdWt0Yw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPkGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPkGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "nSyLYlTuktc", + "undoToken": "AB9zfpK7nnDAgWAuqVjN5QkVBSzZjmkmQHZ1cF_YsufTr8TeNn-Q8P8f0KwcCxQpSTkYaqKqvTehd3ejBnuRiOBJZYIPZWIfuMwIrJ7kSuxWBnmJmCVSyfBgqPNDIgj_j8v_QURMCMDo" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CPkGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CPgGEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "nSyLYlTuktc", + "feedbackToken": "AB9zfpKEGSXwtV27EauKr2ZVX6i6ht-Na7rbIE2LMkGbRDjxkhML-EAJexR8yW9r8KRNbEQetaS4Jbnsajlhtl0Xqyyvwrw0jI6ri0K4lpLOdXMh9Z1LRHZQThI0fRgSn8eo4xJAQund", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=nSyLYlTuktc", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "nSyLYlTuktc", + "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&siu=1&msp=1&odepv=1&id=9d2c8b6254ee92d7&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "publishedTimeText": { + "simpleText": "20 hours ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/nSyLYlTuktc/mqdefault_6s.webp?du=3000&sqp=CKLPsLsG&rs=AOn4CLAI2qRjE7lvFdeZspBHh5uTF-ddcw", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "145K views" + } + }, + "simpleText": "145K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/nSyLYlTuktc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCywLiF3cWs_jZIJ30P4grGqarZaw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/nSyLYlTuktc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBnprMlfts-UOZpfJdAg0RyOB7h8A", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/nSyLYlTuktc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAi0hBbVW5N_De8aP5h_9-MFpK_IQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 8 seconds" + } + }, + "simpleText": "1:08" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPcGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "nSyLYlTuktc" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CPcGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPcGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "nSyLYlTuktc" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CPYGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPYGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPYGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "nSyLYlTuktc" + ] + } + }, + "openMiniplayer": true, + "videoId": "nSyLYlTuktc", + "videoIds": [ + "nSyLYlTuktc" + ] + }, + "clickTrackingParams": "CPYGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "American Primeval | Official Teaser | Netflix by Netflix 145,199 views 20 hours ago 1 minute, 8 seconds" + } + }, + "runs": [ + { + "text": "American Primeval | Official Teaser | Netflix" + } + ] + }, + "trackingParams": "CPUGENwwIhMInfL4orPDigMVbHR6BR25GwwEQNeluqel7KKWnQE=", + "videoId": "nSyLYlTuktc", + "viewCountText": { + "simpleText": "145,199 views" + } + } + }, + "trackingParams": "CPQGEJmNBRgPIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "This may be the end, but we’re not good at goodbyes…because COBRA KAI NEVER DIES! The final episodes of the greatest karate saga of all time arrive on February 13th, 2025, only on Netflix...." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=T0fjgHDBirw&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "T0fjgHDBirw", + "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&siu=1&msp=1&odepv=1&id=4f47e38070c18abc&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "44 seconds" + } + }, + "simpleText": "0:44" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPMGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPMGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "T0fjgHDBirw" + ] + } + }, + "openMiniplayer": true, + "videoId": "T0fjgHDBirw", + "videoIds": [ + "T0fjgHDBirw" + ] + }, + "clickTrackingParams": "CPMGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPMGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "T0fjgHDBirw" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "T0fjgHDBirw" + }, + "clickTrackingParams": "CPIGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CPIGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPEGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CPEGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "T0fjgHDBirw" + } + }, + "videoId": "T0fjgHDBirw" + } + }, + "trackingParams": "CPEGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CPAGEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtUMGZqZ0hEQmlydw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CO8GEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CO8GEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "T0fjgHDBirw", + "undoToken": "AB9zfpJBSNn9C0jo6JnQTzUn5G6XXs2OOx5HRX-GGv8hia06VaBJD5OzU_-x2b1xrXoPXDCYdHzvMV6afiD59UN14JHu3-NtA426azS7h3SIIxX8D-kqFK4ogxZEAVyoRqDUls9psVhz" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CO8GEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CO4GEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "T0fjgHDBirw", + "feedbackToken": "AB9zfpJp7Ht3nDY02kqatnIVjj9KPXBtcOqRIH8dMYv7lbndwYhX0yEN5vv5prbl_AEVmeOKEhfmargs4aTlcG_hNMssTqy1ILRf6e3cUjVXntMj_kB2VlxguiusxKAsTKW_psOOOKJp", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=T0fjgHDBirw", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "T0fjgHDBirw", + "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&siu=1&msp=1&odepv=1&id=4f47e38070c18abc&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "publishedTimeText": { + "simpleText": "1 day ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/T0fjgHDBirw/mqdefault_6s.webp?du=3000&sqp=CLDPsLsG&rs=AOn4CLC9TEJqIOPD4np9Xi-trJJYSWH5Kw", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "624K views" + } + }, + "simpleText": "624K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/T0fjgHDBirw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCcAdv5jBjcQHV-O2xq_k4GotPBrQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/T0fjgHDBirw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB-KfYKVte9W9HGqXEntlX3ZpIK4A", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/T0fjgHDBirw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAWR_qaQj8dBGuWct2eDeueKX3LYg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "44 seconds" + } + }, + "simpleText": "0:44" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CO0GEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "T0fjgHDBirw" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CO0GEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CO0GEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "T0fjgHDBirw" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "COwGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COwGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COwGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "T0fjgHDBirw" + ] + } + }, + "openMiniplayer": true, + "videoId": "T0fjgHDBirw", + "videoIds": [ + "T0fjgHDBirw" + ] + }, + "clickTrackingParams": "COwGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Cobra Kai: Season 6 | Part 3 Date Announcement | Netflix by Netflix 624,311 views 1 day ago 44 seconds" + } + }, + "runs": [ + { + "text": "Cobra Kai: Season 6 | Part 3 Date Announcement | Netflix" + } + ] + }, + "trackingParams": "COsGENwwIhMInfL4orPDigMVbHR6BR25GwwEQLyVhoaH8PijTw==", + "videoId": "T0fjgHDBirw", + "viewCountText": { + "simpleText": "624,311 views" + } + } + }, + "trackingParams": "COoGEJmNBRgQIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Build a custom controller to trigger a smart outlet using a Feather ESP32-S2, CircuitPython, Adafruit IO and the itsaSNAP app for iOS.\n\nTutorial, Files and Code\nhttps://learn.adafruit.com/holiday-i..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=-Bj3ce8MCts&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "-Bj3ce8MCts", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&siu=1&msp=1&odepv=1&id=f818f771ef0c0adb&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 35 seconds" + } + }, + "simpleText": "1:35" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COkGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "-Bj3ce8MCts" + ] + } + }, + "openMiniplayer": true, + "videoId": "-Bj3ce8MCts", + "videoIds": [ + "-Bj3ce8MCts" + ] + }, + "clickTrackingParams": "COkGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COkGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "-Bj3ce8MCts" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "-Bj3ce8MCts" + }, + "clickTrackingParams": "COgGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "COgGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COcGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "COcGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "-Bj3ce8MCts" + } + }, + "videoId": "-Bj3ce8MCts" + } + }, + "trackingParams": "COcGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "COYGEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgstQmozY2U4TUN0cw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COUGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COUGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "-Bj3ce8MCts", + "undoToken": "AB9zfpKNZZ92cH7EHg9eCJGaitYA0PCkB1coIDep6mCNNkKHPzd03L4zwCkyldSSDQ7slkqE-yBYAMzzG2_eSTMzTKF3fM9RRZbc1Dff832dsuvSOwzBj2cFPu_AGj-Gkx5tQSHyKkD9ZKKATBAA220SKcVBma149g" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "COUGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "COQGEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "-Bj3ce8MCts", + "feedbackToken": "AB9zfpIz5rRxuwpJpU1hRei_4zHNgO8ER3drqKvdyU5dexLVMdRvUtpjM5Y14xWrenQpdUroS3lZP-0lPzQXO0aj0mE5wiw9nHuwda78FGofSqChcCmLOYjULIsnByWjUixjoSp9Ry2H", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=-Bj3ce8MCts", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "-Bj3ce8MCts", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&siu=1&msp=1&odepv=1&id=f818f771ef0c0adb&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "publishedTimeText": { + "simpleText": "1 day ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/-Bj3ce8MCts/mqdefault_6s.webp?du=3000&sqp=CLbcsLsG&rs=AOn4CLAmlorrP00nAhNuSTnWyM72g46h7g", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "611 views" + } + }, + "simpleText": "611 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/-Bj3ce8MCts/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAoJeBlShWc426ueFlqLyeq9_4_2g", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/-Bj3ce8MCts/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDOsreIk9czmcA-HDU5Xy0H_wK_EQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/-Bj3ce8MCts/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDdUaJ1UVyYQO5ENLnayRI1NVFFBg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 35 seconds" + } + }, + "simpleText": "1:35" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COMGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "-Bj3ce8MCts" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "COMGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COMGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "-Bj3ce8MCts" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "COIGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COIGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COIGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "-Bj3ce8MCts" + ] + } + }, + "openMiniplayer": true, + "videoId": "-Bj3ce8MCts", + "videoIds": [ + "-Bj3ce8MCts" + ] + }, + "clickTrackingParams": "COIGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Holiday IOT Switch #adafruit #iot by Adafruit Industries 611 views 1 day ago 1 minute, 35 seconds" + } + }, + "runs": [ + { + "text": "Holiday IOT Switch #adafruit #iot" + } + ] + }, + "trackingParams": "COEGENwwIhMInfL4orPDigMVbHR6BR25GwwEQNuVsPie7r2M-AE=", + "videoId": "-Bj3ce8MCts", + "viewCountText": { + "simpleText": "611 views" + } + } + }, + "trackingParams": "COAGEJmNBRgRIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Merry Christmas Fellows!" + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=LiAYFTPxgis&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "LiAYFTPxgis", + "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&siu=1&msp=1&odepv=1&id=2e20181533f1822b&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "5 minutes, 32 seconds" + } + }, + "simpleText": "5:32" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8GEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CN8GEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "LiAYFTPxgis" + ] + } + }, + "openMiniplayer": true, + "videoId": "LiAYFTPxgis", + "videoIds": [ + "LiAYFTPxgis" + ] + }, + "clickTrackingParams": "CN8GEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CN8GEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "LiAYFTPxgis" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "LiAYFTPxgis" + }, + "clickTrackingParams": "CN4GEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CN4GEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CN0GENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CN0GENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "LiAYFTPxgis" + } + }, + "videoId": "LiAYFTPxgis" + } + }, + "trackingParams": "CN0GENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CNwGEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtMaUFZRlRQeGdpcw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNsGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNsGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "LiAYFTPxgis", + "undoToken": "AB9zfpKJwM8VrLFEPF6gmW4nKEhH7AJwMnsX5DiwBlueG6eCFl9KK4SIg4kNn2bA5OIlVi9Kb4XalnWFd6SaAh1ae9FHVilJYb3AVHMZxYGA6fdE2iyMry2OuMvSPyHtxCA_tHg5Y5ce" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CNsGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CNoGEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "LiAYFTPxgis", + "feedbackToken": "AB9zfpLBaLk9sdryomdzLalhs4h3gr6EGDQrg86idwzGEu_-csKmYfEDXQjvtAGW-QB0rFaqdJWHvnBb9yzTPEYcFWt5T7Izjf083unor1iVVS7eJSEkh8pb7B8BrqiBMm1gmwviGRG_", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=LiAYFTPxgis", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "LiAYFTPxgis", + "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&siu=1&msp=1&odepv=1&id=2e20181533f1822b&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "publishedTimeText": { + "simpleText": "1 day ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/LiAYFTPxgis/mqdefault_6s.webp?du=3000&sqp=CP7qsLsG&rs=AOn4CLCsk_NjgMXmtYYiLdDGdEgV_DwEMQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "17K views" + } + }, + "simpleText": "17K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/LiAYFTPxgis/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDLf4sTMc9J4rvafxc0z-y82knfbw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/LiAYFTPxgis/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDohlcFqNgnGwo-R_EIJQjtci-tmg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/LiAYFTPxgis/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBcB5s8AJJSf8H2zuBHjpMUZasqlQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "5 minutes, 32 seconds" + } + }, + "simpleText": "5:32" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNkGEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "LiAYFTPxgis" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CNkGEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNkGEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "LiAYFTPxgis" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CNgGEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNgGEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNgGEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "LiAYFTPxgis" + ] + } + }, + "openMiniplayer": true, + "videoId": "LiAYFTPxgis", + "videoIds": [ + "LiAYFTPxgis" + ] + }, + "clickTrackingParams": "CNgGEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "cAvEman TV || Barmy Bread and Irish Tea by AvE 17,261 views 1 day ago 5 minutes, 32 seconds" + } + }, + "runs": [ + { + "text": "cAvEman TV || Barmy Bread and Irish Tea" + } + ] + }, + "trackingParams": "CNcGENwwIhMInfL4orPDigMVbHR6BR25GwwEQKuExp_TgoaQLg==", + "videoId": "LiAYFTPxgis", + "viewCountText": { + "simpleText": "17,261 views" + } + } + }, + "trackingParams": "CNYGEJmNBRgSIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "슼케어리 타운 (SKZ-ARY TOWN) #2|[SKZ CODE(스키즈 코드)] Ep.68\n\nListen to \"合 (HOP)\" now💦\nhttps://Stray-Kids.lnk.to/HOP\n\nListen to \"Walkin On Water (Remixes)\" now🛷\nhttps://Stray-..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=DXl7EC4JWSk&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "DXl7EC4JWSk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=0d797b102e095929&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 51 seconds" + } + }, + "simpleText": "29:51" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNUGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNUGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "DXl7EC4JWSk" + ] + } + }, + "openMiniplayer": true, + "videoId": "DXl7EC4JWSk", + "videoIds": [ + "DXl7EC4JWSk" + ] + }, + "clickTrackingParams": "CNUGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNUGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "DXl7EC4JWSk" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "DXl7EC4JWSk" + }, + "clickTrackingParams": "CNQGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CNQGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNMGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CNMGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "DXl7EC4JWSk" + } + }, + "videoId": "DXl7EC4JWSk" + } + }, + "trackingParams": "CNMGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CNIGEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtEWGw3RUM0SldTaw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNEGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNEGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "DXl7EC4JWSk", + "undoToken": "AB9zfpJJ9V8aMBbtzerITG1OXLSbxv3-HBU_YjdoBZI__k7F4U0eOI8mumkmdGp7kJhkscFYfnkpHG6Hfokw2Q9ypsm_13Wk-j6-62c7fSMpuf9YJD8WkpBnqjOmRiHN7ne9shb3NrmQT1rQvzPgB13cRk-CkNNkxw" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CNEGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CNAGEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "DXl7EC4JWSk", + "feedbackToken": "AB9zfpLnEls0H-fzb5L0ZBXrbbVb60k1K95Pb10ZpGdOjBmDLM1d9weNDAViKSpFNedIacsmqnoObLkfFttZ1b-4OXWJUNH_LtrxxOV55MjQxtZdx3QdINtUPUP5kvw8b0t9bKQo1Urz", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=DXl7EC4JWSk", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "DXl7EC4JWSk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=0d797b102e095929&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "publishedTimeText": { + "simpleText": "1 day ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/DXl7EC4JWSk/mqdefault_6s.webp?du=3000&sqp=CPfpsLsG&rs=AOn4CLBKsxhHgCYIiFpbEPUImR2O3aNgrg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "844K views" + } + }, + "simpleText": "844K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/DXl7EC4JWSk/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDRVS_SrKUZ1i3vovf5jfgHu96HfA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/DXl7EC4JWSk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBPj76SC7tmyr9IFYU18hAKSh1HaA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/DXl7EC4JWSk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBJWc1yFDEuBjRORWA3IQQuf2ozcA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 51 seconds" + } + }, + "simpleText": "29:51" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CM8GEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "DXl7EC4JWSk" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CM8GEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CM8GEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "DXl7EC4JWSk" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CM4GEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CM4GEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CM4GEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "DXl7EC4JWSk" + ] + } + }, + "openMiniplayer": true, + "videoId": "DXl7EC4JWSk", + "videoIds": [ + "DXl7EC4JWSk" + ] + }, + "clickTrackingParams": "CM4GEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "슼케어리 타운 (SKZ-ARY TOWN) #2|[SKZ CODE] Ep.68 by Stray Kids 844,142 views 1 day ago 29 minutes" + } + }, + "runs": [ + { + "text": "슼케어리 타운 (SKZ-ARY TOWN) #2|[SKZ CODE] Ep.68" + } + ] + }, + "trackingParams": "CM0GENwwIhMInfL4orPDigMVbHR6BR25GwwEQKmypfCC4t68DQ==", + "videoId": "DXl7EC4JWSk", + "viewCountText": { + "simpleText": "844,142 views" + } + } + }, + "trackingParams": "CMwGEJmNBRgTIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "IVE and David Guetta have dropped a cool BE@RBRICK video!\nSpend your Christmas with the Supernova Love BE@RBRICK MV and make it extra special.\nYou can pre-order exclusive BE@RBRICK products..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Wwb-U41oLIc&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "Wwb-U41oLIc", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=5b06fe538d682c87&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 39 seconds" + } + }, + "simpleText": "2:39" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMsGEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMsGEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Wwb-U41oLIc" + ] + } + }, + "openMiniplayer": true, + "videoId": "Wwb-U41oLIc", + "videoIds": [ + "Wwb-U41oLIc" + ] + }, + "clickTrackingParams": "CMsGEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMsGEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Wwb-U41oLIc" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "Wwb-U41oLIc" + }, + "clickTrackingParams": "CMoGEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMoGEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMkGENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CMkGENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "Wwb-U41oLIc" + } + }, + "videoId": "Wwb-U41oLIc" + } + }, + "trackingParams": "CMkGENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CMgGEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtXd2ItVTQxb0xJYw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMcGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMcGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "Wwb-U41oLIc", + "undoToken": "AB9zfpK6RaECUf5zKyY0EkCb0odjY20d77PWFcZlDXN9uzKdnBdTPwkp61ftKQXgnqDo7L1ZEVMV_0kfwO3DYbwEm92474tE0z3aAx6_gy0excFszwol7Z-ibeF0twmJBpnhuthD1JOXjl75SE1GdcSiDCPrQ3JZ4w" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CMcGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CMYGEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "Wwb-U41oLIc", + "feedbackToken": "AB9zfpKj4gXD8xXLn4CGLL5W5sZbTFJdTqZKSZ2nVCKTdhbYZqDQguPF7s_1cy18dMEW2L9mrUqXnybfDTLGkWZwCNAndS93ecTLl7PBsQREOAz0qiiV8ZcXufmAJKCHSf04arDA5qxg", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Wwb-U41oLIc", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "Wwb-U41oLIc", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=5b06fe538d682c87&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "publishedTimeText": { + "simpleText": "1 day ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "101K views" + } + }, + "simpleText": "101K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/Wwb-U41oLIc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAijf2iGoPn7ngm-QjRwJONlpxBNA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Wwb-U41oLIc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDmWOs1rzqoDEUk3Js439sx1bO2Tg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Wwb-U41oLIc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBkypcNLArmwTOTOATpf_4nqlSMiA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 39 seconds" + } + }, + "simpleText": "2:39" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMUGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Wwb-U41oLIc" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CMUGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMUGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Wwb-U41oLIc" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CMQGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMQGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMQGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Wwb-U41oLIc" + ] + } + }, + "openMiniplayer": true, + "videoId": "Wwb-U41oLIc", + "videoIds": [ + "Wwb-U41oLIc" + ] + }, + "clickTrackingParams": "CMQGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "IVE, David Guetta, BE@RBRICK 'Supernova Love' MV by IVE 101,517 views 1 day ago 2 minutes, 39 seconds" + } + }, + "runs": [ + { + "text": "IVE, David Guetta, BE@RBRICK 'Supernova Love' MV" + } + ] + }, + "trackingParams": "CMMGENwwIhMInfL4orPDigMVbHR6BR25GwwEQIfZoOu4yr-DWw==", + "videoId": "Wwb-U41oLIc", + "viewCountText": { + "simpleText": "101,517 views" + } + } + }, + "trackingParams": "CMIGEJmNBRgUIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "STARSHIP SQUARE (Domestic) : https://bit.ly/3HtQ7GF\nSTARSHIP SQUARE (Global) : https://bit.ly/3JWPxm0\nIVE US EXCLUSIVE STORE : https://shop.ive-starship.com/ \n\nIVE X (Twitter)\n: https://twitter.co..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=y68Ux3M4xbc&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "y68Ux3M4xbc", + "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&siu=1&msp=1&odepv=1&id=cbaf14c77338c5b7&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "36 seconds" + } + }, + "simpleText": "0:36" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMEGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMEGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "y68Ux3M4xbc" + ] + } + }, + "openMiniplayer": true, + "videoId": "y68Ux3M4xbc", + "videoIds": [ + "y68Ux3M4xbc" + ] + }, + "clickTrackingParams": "CMEGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMEGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "y68Ux3M4xbc" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "y68Ux3M4xbc" + }, + "clickTrackingParams": "CMAGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMAGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CL8GENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CL8GENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "y68Ux3M4xbc" + } + }, + "videoId": "y68Ux3M4xbc" + } + }, + "trackingParams": "CL8GENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CL4GEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgt5NjhVeDNNNHhiYw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CL0GEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CL0GEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "y68Ux3M4xbc", + "undoToken": "AB9zfpIufLbT_Asi8XRBqr94S78TKVEpUQhkh0ShNGF1gdF3MxAW8hiYS5bUI_S8C_RTBEQjddq5RLENilWinRjJs_itX4O6SswVeABbZHcbqAiLeNdwaua4LrCINqhfNv7yMY761e96" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CL0GEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CLwGEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "y68Ux3M4xbc", + "feedbackToken": "AB9zfpIVTPl5z1UOD8pU6gFDBC5g0ErnSQ0P8Nz592HdUc8iuK5VBCdsK_N0QvkuF7mlhbkrEPXy5x857VIHzt13FcPs4Q-0DEMcLtLjAxUWeO_efBNdMP2x2xelOFZENpWOqvQCAJLN", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=y68Ux3M4xbc", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "y68Ux3M4xbc", + "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&siu=1&msp=1&odepv=1&id=cbaf14c77338c5b7&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "publishedTimeText": { + "simpleText": "1 day ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/y68Ux3M4xbc/mqdefault_6s.webp?du=3000&sqp=CPfHsLsG&rs=AOn4CLBUv_pa32XnWJJj1QRdeExV0MbXfQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "43K views" + } + }, + "simpleText": "43K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/y68Ux3M4xbc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgkmAriFvHUP-VDCF2mYbWf2Wg2A", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/y68Ux3M4xbc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCfmRF7rI55vCXdarRQoFCC-qsyqg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/y68Ux3M4xbc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC3Uab7uesm1HXtEQTcIT4Q4c_TMQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "36 seconds" + } + }, + "simpleText": "0:36" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLsGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "y68Ux3M4xbc" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CLsGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLsGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "y68Ux3M4xbc" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CLoGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLoGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLoGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "y68Ux3M4xbc" + ] + } + }, + "openMiniplayer": true, + "videoId": "y68Ux3M4xbc", + "videoIds": [ + "y68Ux3M4xbc" + ] + }, + "clickTrackingParams": "CLoGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "[Special Clip] IVE 2024 Christmas Message by IVE 43,932 views 1 day ago 36 seconds" + } + }, + "runs": [ + { + "text": "[Special Clip] IVE 2024 Christmas Message" + } + ] + }, + "trackingParams": "CLkGENwwIhMInfL4orPDigMVbHR6BR25GwwEQLeL45n3mMXXywE=", + "videoId": "y68Ux3M4xbc", + "viewCountText": { + "simpleText": "43,932 views" + } + } + }, + "trackingParams": "CLgGEJmNBRgVIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Every week we'll 3D print designs from the community and showcase slicer settings, use cases and of course, Time-lapses! This Week: \n\nBig Dreidel\nBy Noe Ruiz\nprintables.com/model/1118598-big-dreide..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=pr2vDhaNqjQ&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "pr2vDhaNqjQ", + "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&siu=1&msp=1&odepv=1&id=a6bdaf0e168daa34&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "45 seconds" + } + }, + "simpleText": "0:45" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLcGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "pr2vDhaNqjQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "pr2vDhaNqjQ", + "videoIds": [ + "pr2vDhaNqjQ" + ] + }, + "clickTrackingParams": "CLcGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLcGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "pr2vDhaNqjQ" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "pr2vDhaNqjQ" + }, + "clickTrackingParams": "CLYGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLYGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLUGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CLUGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "pr2vDhaNqjQ" + } + }, + "videoId": "pr2vDhaNqjQ" + } + }, + "trackingParams": "CLUGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CLQGEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtwcjJ2RGhhTnFqUQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLMGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLMGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "pr2vDhaNqjQ", + "undoToken": "AB9zfpJdnd7WU7PHaIvPxo9KGBek7amBqYUkKCZ9l2-14GqdH9ioq-w0QQioUldFx0vwF2AvIzWJdayrpAQ9cXHFxl7IsF4igxG6mj5MwIyEA90V3LfUl8bW-7ZbF5eXhKg1v-Mim6No" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CLMGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CLIGEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "pr2vDhaNqjQ", + "feedbackToken": "AB9zfpITimu1i5SfmmrK5_q3rcNKLbvdfJbu4BAPqKq4CIjLlNGGI3gzOUjUyALpaQ8rIegSAGC5jL4D8X--w2qr8tdcyN7SbeyZRFuAOn7zhhxifCdqujCLeyjjnoTPw2UcgG7ee8jJ", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=pr2vDhaNqjQ", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "pr2vDhaNqjQ", + "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&siu=1&msp=1&odepv=1&id=a6bdaf0e168daa34&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "publishedTimeText": { + "simpleText": "1 day ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/pr2vDhaNqjQ/mqdefault_6s.webp?du=3000&sqp=CLi9sLsG&rs=AOn4CLAbngLDSofGCj_8g5ByYVApLX5k9w", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "591 views" + } + }, + "simpleText": "591 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/pr2vDhaNqjQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDkr1pVynTrRYVTuAPX4HvZlD4ZGw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/pr2vDhaNqjQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDjitoCX3q-K9_4KIBk-sGX8-ZwXg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/pr2vDhaNqjQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAPJIrtT-DE9fxMj_Kl1MTp7ZX6gA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "45 seconds" + } + }, + "simpleText": "0:45" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLEGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "pr2vDhaNqjQ" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CLEGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLEGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "pr2vDhaNqjQ" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CLAGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLAGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLAGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "pr2vDhaNqjQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "pr2vDhaNqjQ", + "videoIds": [ + "pr2vDhaNqjQ" + ] + }, + "clickTrackingParams": "CLAGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Big Dreidel #3dprinting #timelapse #adafruit by Adafruit Industries 591 views 1 day ago 45 seconds" + } + }, + "runs": [ + { + "text": "Big Dreidel #3dprinting #timelapse #adafruit" + } + ] + }, + "trackingParams": "CK8GENwwIhMInfL4orPDigMVbHR6BR25GwwEQLTUtrTh4evepgE=", + "videoId": "pr2vDhaNqjQ", + "viewCountText": { + "simpleText": "591 views" + } + } + }, + "trackingParams": "CK4GEJmNBRgWIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Tati Gabrielle, the actress behind the main protagonist of Naughty Dog's Intergalactic, made a now deleted post attacking gamers and embracing DEI.\nUse code \"REV\" for 10% off my new AdvancedGG..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ts47WdEBBoc&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "ts47WdEBBoc", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=b6ce3b59d1010687&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "12 minutes, 2 seconds" + } + }, + "simpleText": "12:02" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0GEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CK0GEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "ts47WdEBBoc" + ] + } + }, + "openMiniplayer": true, + "videoId": "ts47WdEBBoc", + "videoIds": [ + "ts47WdEBBoc" + ] + }, + "clickTrackingParams": "CK0GEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CK0GEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "ts47WdEBBoc" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "ts47WdEBBoc" + }, + "clickTrackingParams": "CKwGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKwGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKsGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CKsGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "ts47WdEBBoc" + } + }, + "videoId": "ts47WdEBBoc" + } + }, + "trackingParams": "CKsGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CKoGEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgt0czQ3V2RFQkJvYw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKkGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKkGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "ts47WdEBBoc", + "undoToken": "AB9zfpKGI7q45Vt99id15Ok6s_O-7F2JQoimBF4tsEhJwSWsQOdezCwhceT5M1VPzXJyge74KQF9GXTVH4cHZUifLG6Lln5bedLaUznalqt_uQkOabr9vLV-FHJLMdl8Ht_HNEQxKVWn" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CKkGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CKgGEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "ts47WdEBBoc", + "feedbackToken": "AB9zfpLFfRGhbXqRlVUzlZJU2HPuF7s5sZlXlGKggjwS4fNx1vP3pOdCFWY7HfR22sVdg-JThY_UmGGcWJE5Fx0dXcOmYHaaAvGPZUgft0Jj-B1XoxTS103R2X4HeoGO8W4X3yRRHJzn", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ts47WdEBBoc", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "ts47WdEBBoc", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=b6ce3b59d1010687&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "publishedTimeText": { + "simpleText": "1 day ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/ts47WdEBBoc/mqdefault_6s.webp?du=3000&sqp=CMrasLsG&rs=AOn4CLBfJSZsHege9V_2cHrktl0SfqvvOQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "76K views" + } + }, + "simpleText": "76K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/ts47WdEBBoc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBTi9gN3Z4bnFRUynPtUWF4pmnpUA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/ts47WdEBBoc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBTkFLBnTSawcmaXvqmB9KgcBLsPQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/ts47WdEBBoc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAkXdGtBOEuCEyp44EcSqI9QJEsVg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayResumePlaybackRenderer": { + "percentDurationWatched": 100 + } + }, + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "12 minutes, 2 seconds" + } + }, + "simpleText": "12:02" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKcGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "ts47WdEBBoc" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CKcGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKcGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "ts47WdEBBoc" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CKYGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKYGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKYGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "ts47WdEBBoc" + ] + } + }, + "openMiniplayer": true, + "videoId": "ts47WdEBBoc", + "videoIds": [ + "ts47WdEBBoc" + ] + }, + "clickTrackingParams": "CKYGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Woke Intergalactic \"Star\" ATTACKS Gamers In Deleted Post by Rev says desu 76,208 views 1 day ago 12 minutes, 2 seconds" + } + }, + "runs": [ + { + "text": "Woke Intergalactic \"Star\" ATTACKS Gamers In Deleted Post" + } + ] + }, + "trackingParams": "CKUGENwwIhMInfL4orPDigMVbHR6BR25GwwEQIeNhIid647ntgE=", + "videoId": "ts47WdEBBoc", + "viewCountText": { + "simpleText": "76,208 views" + } + } + }, + "trackingParams": "CKQGEJmNBRgXIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/gP4biZPhz7HcfAs2QH5PEumEOkCAToYuFuWrt-xVSO205o51I8vVMPwMANhVWHcFw3WXZAHT=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog" + }, + "clickTrackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCSRCm4zHuETCS7jHWMiWNog", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog" + }, + "clickTrackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCSRCm4zHuETCS7jHWMiWNog", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/gP4biZPhz7HcfAs2QH5PEumEOkCAToYuFuWrt-xVSO205o51I8vVMPwMANhVWHcFw3WXZAHT=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Der Song „Was wichtig ist“, gesungen von Adel Tawil zusammen mit Jasmin Jürgens, der Enkelin von Udo Jürgens, war das große emotionale Highlight der TV-Show „Udo Jürgens Forever..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=NG55c0d-x_I&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "NG55c0d-x_I", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=346e7973477ec7f2&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 17 seconds" + } + }, + "simpleText": "4:17" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog", + "canonicalBaseUrl": "/channel/UCSRCm4zHuETCS7jHWMiWNog" + }, + "clickTrackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCSRCm4zHuETCS7jHWMiWNog", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adel Tawil" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKMGEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKMGEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "NG55c0d-x_I" + ] + } + }, + "openMiniplayer": true, + "videoId": "NG55c0d-x_I", + "videoIds": [ + "NG55c0d-x_I" + ] + }, + "clickTrackingParams": "CKMGEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKMGEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "NG55c0d-x_I" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "NG55c0d-x_I" + }, + "clickTrackingParams": "CKIGEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKIGEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKEGENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CKEGENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "NG55c0d-x_I" + } + }, + "videoId": "NG55c0d-x_I" + } + }, + "trackingParams": "CKEGENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CKAGEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtORzU1YzBkLXhfSQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJ8GEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJ8GEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "NG55c0d-x_I", + "undoToken": "AB9zfpI2_0_nbv1dwBEiIuL9rqAMpjeLeyVi4_8hpl5iTI6_egroOqlwclchGvKIy1oc99otmHIDkyN4j_yVetBmPjCHvQL8_shZAhq9AZCdV987MK7yQcxgFlx3pzXEyNuNbiY1xK-l" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJ8GEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJ4GEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "NG55c0d-x_I", + "feedbackToken": "AB9zfpJ_euhyIo2XY1jVYs4LKqpSZZ3Et3mQSWL-E2kZ0SNDwNPtj6xNCKeSgakh_49OPhh0eKqdyS59-0OaTWli969H1q1W2pZRAamuZmKrAlXW6eRhzmDKWXMU8Rwac1efeIjCW2A-", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=NG55c0d-x_I", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "NG55c0d-x_I", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=346e7973477ec7f2&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog", + "canonicalBaseUrl": "/channel/UCSRCm4zHuETCS7jHWMiWNog" + }, + "clickTrackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCSRCm4zHuETCS7jHWMiWNog", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adel Tawil" + } + ] + }, + "publishedTimeText": { + "simpleText": "1 day ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog", + "canonicalBaseUrl": "/channel/UCSRCm4zHuETCS7jHWMiWNog" + }, + "clickTrackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCSRCm4zHuETCS7jHWMiWNog", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adel Tawil" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "33K views" + } + }, + "simpleText": "33K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/NG55c0d-x_I/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAo42-XBkytr7UPI4ivOZccy-Azpw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/NG55c0d-x_I/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA30SafnxJnOztsyA1uW_M6zWYcyg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/NG55c0d-x_I/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBmiWtTrUL4-j83OE_1iJNyej3zLw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 17 seconds" + } + }, + "simpleText": "4:17" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJ0GEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "NG55c0d-x_I" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CJ0GEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJ0GEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "NG55c0d-x_I" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CJwGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJwGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJwGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "NG55c0d-x_I" + ] + } + }, + "openMiniplayer": true, + "videoId": "NG55c0d-x_I", + "videoIds": [ + "NG55c0d-x_I" + ] + }, + "clickTrackingParams": "CJwGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Adel Tawil & Jasmin Jürgens – Was wichtig ist (Live aus der TV Show UDO JÜRGENS FOREVER) by Adel Tawil 33,642 views 1 day ago 4 minutes, 17 seconds" + } + }, + "runs": [ + { + "text": "Adel Tawil & Jasmin Jürgens – Was wichtig ist (Live aus der TV Show UDO JÜRGENS FOREVER)" + } + ] + }, + "trackingParams": "CJsGENwwIhMInfL4orPDigMVbHR6BR25GwwEQPKP-7u0rp63NA==", + "videoId": "NG55c0d-x_I", + "viewCountText": { + "simpleText": "33,642 views" + } + } + }, + "trackingParams": "CJoGEJmNBRgYIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Thanks to MSI for sponsoring this video! Check out their MEG X870E GODLIKE motherboard at https://lmg.gg/l2uLA and check out all of the other parts used in this video below!\n\nMSI is back, back..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=4L_psS1MVk8&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "4L_psS1MVk8", + "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&siu=1&msp=1&odepv=1&id=e0bfe9b12d4c564f&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "16 minutes, 20 seconds" + } + }, + "simpleText": "16:20" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJkGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "4L_psS1MVk8" + ] + } + }, + "openMiniplayer": true, + "videoId": "4L_psS1MVk8", + "videoIds": [ + "4L_psS1MVk8" + ] + }, + "clickTrackingParams": "CJkGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJkGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "4L_psS1MVk8" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "4L_psS1MVk8" + }, + "clickTrackingParams": "CJgGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJgGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJcGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CJcGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "4L_psS1MVk8" + } + }, + "videoId": "4L_psS1MVk8" + } + }, + "trackingParams": "CJcGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CJYGEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgs0TF9wc1MxTVZrOA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJUGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJUGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "4L_psS1MVk8", + "undoToken": "AB9zfpKrMOi4dVf2oZBT9t3XS290fcuf_zyfkbeqMukKUnCHPmV8S7-LIHFFV3M7kpsDhTjLymvayUV_zWBkWD4WsoCDtk_PSrgN2Q_7WxTAQHCJyADoQUqJbw3CaPVhaQoX-Phh946q" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJUGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJQGEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "4L_psS1MVk8", + "feedbackToken": "AB9zfpJPshkLaJg-dexgXtcFXR5IzP4UzMXLX5HfN7cj0lgWiqaIkyDUoOoZpyYKvD86Dio19p6daNLogymLvUHdkwfJexUEsoUJ6eYIS136X8c8zepEANxf7gmkJwXsSsUwqUR97OiF", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=4L_psS1MVk8", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "4L_psS1MVk8", + "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&siu=1&msp=1&odepv=1&id=e0bfe9b12d4c564f&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "publishedTimeText": { + "simpleText": "1 day ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/4L_psS1MVk8/mqdefault_6s.webp?du=3000&sqp=CNK2sLsG&rs=AOn4CLAuOxQJpQIV0EnMAnIhCOQ0t8b9PA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "774K views" + } + }, + "simpleText": "774K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/4L_psS1MVk8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC5VGHRrBtm2BufBqAIxAzlLGEd3A", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/4L_psS1MVk8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC-TxQgxHXXFmxj_q6W34MiELq_-A", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/4L_psS1MVk8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCLpK-TZFX8xytULoM9z5DV_snkVQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "16 minutes, 20 seconds" + } + }, + "simpleText": "16:20" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJMGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "4L_psS1MVk8" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CJMGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJMGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "4L_psS1MVk8" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CJIGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJIGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJIGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "4L_psS1MVk8" + ] + } + }, + "openMiniplayer": true, + "videoId": "4L_psS1MVk8", + "videoIds": [ + "4L_psS1MVk8" + ] + }, + "clickTrackingParams": "CJIGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "The All MSI Gaming Setup! by Linus Tech Tips 774,860 views 1 day ago 16 minutes" + } + }, + "runs": [ + { + "text": "The All MSI Gaming Setup!" + } + ] + }, + "trackingParams": "CJEGENwwIhMInfL4orPDigMVbHR6BR25GwwEQM-sseqStvrf4AE=", + "videoId": "4L_psS1MVk8", + "viewCountText": { + "simpleText": "774,860 views" + } + } + }, + "trackingParams": "CJAGEJmNBRgZIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/6pPZQkBWoQ-UAu5sT-Z47ID6vhPr-nnfziSpR84unn9vsDUzz5_iNS3WkuXSdKUKhkVGQerE=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/6pPZQkBWoQ-UAu5sT-Z47ID6vhPr-nnfziSpR84unn9vsDUzz5_iNS3WkuXSdKUKhkVGQerE=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The ideal quiche has tender, flaky pastry and velvety custard.\n\nGet our Cast Iron Simple Cheese Quiche recipe: https://cooks.io/48EL9TC\n\nGet exclusive access to every recipe, review, and more:..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=5r5323WnpXg&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "5r5323WnpXg", + "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&siu=1&msp=1&odepv=1&id=e6be77db75a7a578&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "8 minutes, 41 seconds" + } + }, + "simpleText": "8:41" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "America's Test Kitchen" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8GEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CI8GEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "5r5323WnpXg" + ] + } + }, + "openMiniplayer": true, + "videoId": "5r5323WnpXg", + "videoIds": [ + "5r5323WnpXg" + ] + }, + "clickTrackingParams": "CI8GEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CI8GEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "5r5323WnpXg" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "5r5323WnpXg" + }, + "clickTrackingParams": "CI4GEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CI4GEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CI0GENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CI0GENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "5r5323WnpXg" + } + }, + "videoId": "5r5323WnpXg" + } + }, + "trackingParams": "CI0GENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CIwGEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgs1cjUzMjNXbnBYZw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIsGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIsGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "5r5323WnpXg", + "undoToken": "AB9zfpL6PigDDq4fhX1-jvDE00oOW6SL5ch8XOJ0ba4u6CY4imTV4VXPl-1KACrrlsbYnS4xifYXZC2H5o9b_Bdb8JjWclv7ErR2zMJB5oaVJVwcRvtTpfc5hv2mkwSyj11lJ54vq8Lk_YackQQyjQwcQsKvw93Ywg" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CIsGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CIoGEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "5r5323WnpXg", + "feedbackToken": "AB9zfpIKU_Al039FIadlZfc9rHwadvpbUKEQxsr6zn1hRNsNEMSFB-mcOL6kjp99fP-PvMOBPZLd78pKemWfA9gP_OlyFkg6yrkFZqXEXBZDwC9Qpj-tjCRG6IZaCFqzUEfOwPmlSFx-", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=5r5323WnpXg", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "5r5323WnpXg", + "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&siu=1&msp=1&odepv=1&id=e6be77db75a7a578&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "America's Test Kitchen" + } + ] + }, + "publishedTimeText": { + "simpleText": "1 day ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/5r5323WnpXg/mqdefault_6s.webp?du=3000&sqp=CPDTsLsG&rs=AOn4CLB1yPlCxRt96iPxpggF9DNmE_Fj9Q", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "America's Test Kitchen" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "29K views" + } + }, + "simpleText": "29K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i9.ytimg.com/vi/5r5323WnpXg/hqdefault_custom_1.jpg?sqp=CJD0sLsG-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBmoYkTr8sInlQoFdWz4sDeezW99w", + "width": 210 + }, + { + "height": 138, + "url": "https://i9.ytimg.com/vi/5r5323WnpXg/hqdefault_custom_1.jpg?sqp=CJD0sLsG-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAz8CnfYGLiXXKw9VoKC7e-8spNsA", + "width": 246 + }, + { + "height": 188, + "url": "https://i9.ytimg.com/vi/5r5323WnpXg/hqdefault_custom_1.jpg?sqp=CJD0sLsG-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAhM7PFHEYSmrqLKsA21h-KHLAuCQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "8 minutes, 41 seconds" + } + }, + "simpleText": "8:41" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIkGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "5r5323WnpXg" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CIkGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIkGEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "5r5323WnpXg" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CIgGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIgGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIgGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "5r5323WnpXg" + ] + } + }, + "openMiniplayer": true, + "videoId": "5r5323WnpXg", + "videoIds": [ + "5r5323WnpXg" + ] + }, + "clickTrackingParams": "CIgGEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "The Ultimate Cast-Iron Cheese Quiche | America's Test Kitchen (S24 E21) by America's Test Kitchen 29,932 views 1 day ago 8 minutes, 41 seconds" + } + }, + "runs": [ + { + "text": "The Ultimate Cast-Iron Cheese Quiche | America's Test Kitchen (S24 E21)" + } + ] + }, + "trackingParams": "CIcGENwwIhMInfL4orPDigMVbHR6BR25GwwEQPjKnq23-53f5gE=", + "videoId": "5r5323WnpXg", + "viewCountText": { + "simpleText": "29,932 views" + } + } + }, + "trackingParams": "CIYGEJmNBRgaIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/9nEm0mi6FUORmK_tFVZ9OKdeLC_WB8Oa4pvTK1tIxGVpDPCbtmLGVHfBjwaD7lU0yoCMQXDYpg=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCi4EDAgjULwwNBHOg1aaCig" + }, + "clickTrackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCi4EDAgjULwwNBHOg1aaCig", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCi4EDAgjULwwNBHOg1aaCig" + }, + "clickTrackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCi4EDAgjULwwNBHOg1aaCig", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/9nEm0mi6FUORmK_tFVZ9OKdeLC_WB8Oa4pvTK1tIxGVpDPCbtmLGVHfBjwaD7lU0yoCMQXDYpg=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "SUBSCRIBE: http://bit.ly/XQm1Nq\r\n\r\nAbout OneRepublic:\r\nOneRepublic is an American alternative rock band from Colorado Springs, Colorado. This is their official YouTube Channel.\r\n\r\nConnect with..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Fl5aSJFPkV8&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "Fl5aSJFPkV8", + "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&siu=1&msp=1&odepv=1&id=165e5a48914f915f&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 49 seconds" + } + }, + "simpleText": "1:49" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCi4EDAgjULwwNBHOg1aaCig", + "canonicalBaseUrl": "/channel/UCi4EDAgjULwwNBHOg1aaCig" + }, + "clickTrackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCi4EDAgjULwwNBHOg1aaCig", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "OneRepublic" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIUGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIUGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Fl5aSJFPkV8" + ] + } + }, + "openMiniplayer": true, + "videoId": "Fl5aSJFPkV8", + "videoIds": [ + "Fl5aSJFPkV8" + ] + }, + "clickTrackingParams": "CIUGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIUGEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Fl5aSJFPkV8" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "Fl5aSJFPkV8" + }, + "clickTrackingParams": "CIQGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CIQGEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIMGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CIMGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "Fl5aSJFPkV8" + } + }, + "videoId": "Fl5aSJFPkV8" + } + }, + "trackingParams": "CIMGENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CIIGEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtGbDVhU0pGUGtWOA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIEGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIEGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "Fl5aSJFPkV8", + "undoToken": "AB9zfpKPr-HCMk_8EsjvdGaGVhAIKEyqJCQa1IPtfgUInpqiy0b-XrkKfXnlgJJWzrF5_z46PNTZFLvYxfDOS5cg_bGY4vBbiSHftCqfr5vdPi0tVawnNM3-UXFbCX3EV0PJyAiSA_dt" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CIEGEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CIAGEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "Fl5aSJFPkV8", + "feedbackToken": "AB9zfpLMhwrTFPca7xtWXe-B9FHu0K3Th8voBgfDSh1JnR6DhyEOffUoehqD2cXmAS3Al_PWAaO0zza6FHXayCltyak0aaVEV2yXD5VGiqRKorcWrr4h81p_EnSirrX-a8GIwEAprEga", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Fl5aSJFPkV8", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "Fl5aSJFPkV8", + "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&siu=1&msp=1&odepv=1&id=165e5a48914f915f&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCi4EDAgjULwwNBHOg1aaCig", + "canonicalBaseUrl": "/channel/UCi4EDAgjULwwNBHOg1aaCig" + }, + "clickTrackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCi4EDAgjULwwNBHOg1aaCig", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "OneRepublic" + } + ] + }, + "publishedTimeText": { + "simpleText": "1 day ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/Fl5aSJFPkV8/mqdefault_6s.webp?du=3000&sqp=CIbEsLsG&rs=AOn4CLBuG-CRQKXjCB1ejjo5r2it5aIYKA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCi4EDAgjULwwNBHOg1aaCig", + "canonicalBaseUrl": "/channel/UCi4EDAgjULwwNBHOg1aaCig" + }, + "clickTrackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCi4EDAgjULwwNBHOg1aaCig", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "OneRepublic" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "14K views" + } + }, + "simpleText": "14K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/Fl5aSJFPkV8/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AG2CIACgA-KAgwIABABGGUgWihDMA8=&rs=AOn4CLBdDE45kGIak0pI1_3pWHMjR7iVAg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Fl5aSJFPkV8/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBtgiAAoAPigIMCAAQARhlIFooQzAP&rs=AOn4CLB0k0EmJ1gJMJApuUJSXjePF9GmuA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Fl5aSJFPkV8/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBtgiAAoAPigIMCAAQARhlIFooQzAP&rs=AOn4CLDGteq2WeMK_D6_tgyGg8QiKDiyyQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 49 seconds" + } + }, + "simpleText": "1:49" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CP8FEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Fl5aSJFPkV8" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CP8FEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CP8FEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Fl5aSJFPkV8" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CP4FEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CP4FEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CP4FEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Fl5aSJFPkV8" + ] + } + }, + "openMiniplayer": true, + "videoId": "Fl5aSJFPkV8", + "videoIds": [ + "Fl5aSJFPkV8" + ] + }, + "clickTrackingParams": "CP4FEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "and that's how we made counting stars. | OneRepublic by OneRepublic 14,558 views 1 day ago 1 minute, 49 seconds" + } + }, + "runs": [ + { + "text": "and that's how we made counting stars. | OneRepublic" + } + ] + }, + "trackingParams": "CP0FENwwIhMInfL4orPDigMVbHR6BR25GwwEQN-ivoqJyZavFg==", + "videoId": "Fl5aSJFPkV8", + "viewCountText": { + "simpleText": "14,558 views" + } + } + }, + "trackingParams": "CPwFEJmNBRgbIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Occam's razor?" + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Ata-wi-zGGo&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "Ata-wi-zGGo", + "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&siu=1&msp=1&odepv=1&id=02d6bec22fb3186a&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 27 seconds" + } + }, + "simpleText": "3:27" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPsFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPsFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Ata-wi-zGGo" + ] + } + }, + "openMiniplayer": true, + "videoId": "Ata-wi-zGGo", + "videoIds": [ + "Ata-wi-zGGo" + ] + }, + "clickTrackingParams": "CPsFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPsFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Ata-wi-zGGo" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "Ata-wi-zGGo" + }, + "clickTrackingParams": "CPoFEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CPoFEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPkFENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CPkFENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "Ata-wi-zGGo" + } + }, + "videoId": "Ata-wi-zGGo" + } + }, + "trackingParams": "CPkFENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CPgFEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtBdGEtd2ktekdHbw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPcFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPcFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "Ata-wi-zGGo", + "undoToken": "AB9zfpLTnWYZsDwWRpVmPrMqcLL9MgFDVl0hCtWYtiyW2kSTWliGdS_DGStq9z6PUxy-1vANWWNrOWlS5mwfcXnuNPMTYmSXw9jAEWTCSJrHCMQMo1qBpWjwPx3wWomjOrGLTE1MS9Ws" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CPcFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CPYFEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "Ata-wi-zGGo", + "feedbackToken": "AB9zfpJWnjcGwlXG1R-9nbeZYSUtHgBQq_28DZ3Edj5rlS4M42aTP-VWi5dSGgzYnrtzj5sMt3Y5WJcoK1Bpgtk2-FTue7om7aIRi__MRTJRLYiqB4io_2Q8CY19-3ux197Ac38MmCID", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Ata-wi-zGGo", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "Ata-wi-zGGo", + "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&siu=1&msp=1&odepv=1&id=02d6bec22fb3186a&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/Ata-wi-zGGo/mqdefault_6s.webp?du=3000&sqp=CPblsLsG&rs=AOn4CLAT682VwmYpj0NNyBBFs6cU2Kq9aQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "20K views" + } + }, + "simpleText": "20K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/Ata-wi-zGGo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCRGJ3LjIdUectiUlrXJ9MP7n4qBA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Ata-wi-zGGo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDxS_ApRBc5gfoNVd8xUkoiIwOCgA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Ata-wi-zGGo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAmLxC6FTVXeFp7YOoXEEABW2W2jw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 27 seconds" + } + }, + "simpleText": "3:27" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPUFEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Ata-wi-zGGo" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CPUFEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPUFEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Ata-wi-zGGo" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CPQFEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPQFEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPQFEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Ata-wi-zGGo" + ] + } + }, + "openMiniplayer": true, + "videoId": "Ata-wi-zGGo", + "videoIds": [ + "Ata-wi-zGGo" + ] + }, + "clickTrackingParams": "CPQFEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "cAvEman tv || Buffalo Mystery by AvE 20,689 views 2 days ago 3 minutes, 27 seconds" + } + }, + "runs": [ + { + "text": "cAvEman tv || Buffalo Mystery" + } + ] + }, + "trackingParams": "CPMFENwwIhMInfL4orPDigMVbHR6BR25GwwEQOqwzP2i2K_rAg==", + "videoId": "Ata-wi-zGGo", + "viewCountText": { + "simpleText": "20,689 views" + } + } + }, + "trackingParams": "CPIFEJmNBRgcIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/emA0C_i9tUyJgxrfVpJ31e0QCU2MlovjYvQkAC9mDuSJyhl6h8PkFj5-ozRzz2vFtpbnls8s1W4=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC0C-w0YjGpqDXGB8IHb662A" + }, + "clickTrackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0C-w0YjGpqDXGB8IHb662A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0C-w0YjGpqDXGB8IHb662A" + }, + "clickTrackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0C-w0YjGpqDXGB8IHb662A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/emA0C_i9tUyJgxrfVpJ31e0QCU2MlovjYvQkAC9mDuSJyhl6h8PkFj5-ozRzz2vFtpbnls8s1W4=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "+-=÷× (Tour Collection: Live) with live recordings from the Mathematics tour is out 27th Dec: https://es.lnk.to/mathematicstourcollectionID \n\n+-=÷× (Tour Collection) is out now: https://es.lnk...." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=0QRhHZkAQro&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "0QRhHZkAQro", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&siu=1&msp=1&odepv=1&id=d104611d990042ba&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "6 minutes, 45 seconds" + } + }, + "simpleText": "6:45" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0C-w0YjGpqDXGB8IHb662A", + "canonicalBaseUrl": "/channel/UC0C-w0YjGpqDXGB8IHb662A" + }, + "clickTrackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0C-w0YjGpqDXGB8IHb662A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Ed Sheeran" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPEFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPEFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "0QRhHZkAQro" + ] + } + }, + "openMiniplayer": true, + "videoId": "0QRhHZkAQro", + "videoIds": [ + "0QRhHZkAQro" + ] + }, + "clickTrackingParams": "CPEFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPEFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "0QRhHZkAQro" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "0QRhHZkAQro" + }, + "clickTrackingParams": "CPAFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CPAFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CO8FENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CO8FENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "0QRhHZkAQro" + } + }, + "videoId": "0QRhHZkAQro" + } + }, + "trackingParams": "CO8FENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CO4FEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgswUVJoSFprQVFybw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CO0FEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CO0FEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "0QRhHZkAQro", + "undoToken": "AB9zfpK2erp-Y8IFNgCBQWFrUD0B-lUhq0gaTFi5y-1ax5YJwYBtTdgv-9kVDWKLPdV2vcS3YHeFrbFzTriKQ1KsfZPQALD8Vm3lF9ezMKCNpFp9VgDRL5Fddno_h5MuI6eKOMTRRlxA" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CO0FEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "COwFEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "0QRhHZkAQro", + "feedbackToken": "AB9zfpI7pHwaYAvy37Q5icsWR__MpbDDsy2vEuY_OaunB_ZEF-q2PQK45EFv5qPB2ZE5gqvbm49XeY5C_-fgxsuARwtZDlVgbezScQp6lqscj6Q1XahlyPkx0rAlNB3yIXpqwrI8iCCU", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=0QRhHZkAQro", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "0QRhHZkAQro", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&siu=1&msp=1&odepv=1&id=d104611d990042ba&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0C-w0YjGpqDXGB8IHb662A", + "canonicalBaseUrl": "/channel/UC0C-w0YjGpqDXGB8IHb662A" + }, + "clickTrackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0C-w0YjGpqDXGB8IHb662A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Ed Sheeran" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/0QRhHZkAQro/mqdefault_6s.webp?du=3000&sqp=CPbFsLsG&rs=AOn4CLAX7CfQUw-a3OZl-iempAszHMDUNA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0C-w0YjGpqDXGB8IHb662A", + "canonicalBaseUrl": "/channel/UC0C-w0YjGpqDXGB8IHb662A" + }, + "clickTrackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0C-w0YjGpqDXGB8IHb662A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Ed Sheeran" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "80K views" + } + }, + "simpleText": "80K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/0QRhHZkAQro/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCyAjIWf2r4ehs68TfukwzdJntFrw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/0QRhHZkAQro/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB46kFAbYHM2kPX8uHn-17hvPv-vQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/0QRhHZkAQro/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBY-TEUY5af6nRpKy_mkXVCrQRUEQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "6 minutes, 45 seconds" + } + }, + "simpleText": "6:45" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COsFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "0QRhHZkAQro" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "COsFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COsFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "0QRhHZkAQro" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "COoFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COoFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COoFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "0QRhHZkAQro" + ] + } + }, + "openMiniplayer": true, + "videoId": "0QRhHZkAQro", + "videoIds": [ + "0QRhHZkAQro" + ] + }, + "clickTrackingParams": "COoFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Ed Sheeran - Collaborations Medley (Live from Mathematics Tour 2024) by Ed Sheeran 80,520 views 2 days ago 6 minutes, 45 seconds" + } + }, + "runs": [ + { + "text": "Ed Sheeran - Collaborations Medley (Live from Mathematics Tour 2024)" + } + ] + }, + "trackingParams": "COkFENwwIhMInfL4orPDigMVbHR6BR25GwwEQLqFgcjZo5iC0QE=", + "videoId": "0QRhHZkAQro", + "viewCountText": { + "simpleText": "80,520 views" + } + } + }, + "trackingParams": "COgFEJmNBRgdIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "As we organize our new office room, we're looking for good storage solutions for the thousands of components and dev boards we have lying around. We have a mix of small through-hole parts like..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=pkWgjmc6FHM&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "pkWgjmc6FHM", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=a645a08e673a1473&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "6 minutes, 43 seconds" + } + }, + "simpleText": "6:43" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "COcFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COcFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "pkWgjmc6FHM" + ] + } + }, + "openMiniplayer": true, + "videoId": "pkWgjmc6FHM", + "videoIds": [ + "pkWgjmc6FHM" + ] + }, + "clickTrackingParams": "COcFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COcFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "pkWgjmc6FHM" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "pkWgjmc6FHM" + }, + "clickTrackingParams": "COYFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "COYFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COUFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "COUFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "pkWgjmc6FHM" + } + }, + "videoId": "pkWgjmc6FHM" + } + }, + "trackingParams": "COUFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "COQFEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgtwa1dnam1jNkZITQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COMFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COMFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "pkWgjmc6FHM", + "undoToken": "AB9zfpJz0GTvyr0MRKoVGJRgFgpxgKdgwPlNPLDMVdovX19gUg1m0glFrvPSsbMNXJOPFZ9a-1Wcc4xHSm8WcvKVw9Ppx5WyMZlfH0jwmSiqNeDGSjhcBmKPmTtVkvtZFFZGBwnUMxT6" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "COMFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "COIFEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "pkWgjmc6FHM", + "feedbackToken": "AB9zfpLULDRMibS_QZ9FvdB-IahfPzYHTnPV1_0If_Rv69jCMnOt065t8BeROWcIFjVTK9_-4EKtcPiUyfhd3pWDcJNdu_v8Zs64rbJfFEsdq71ZnfiNJIyavaUW3HAw57hyslqlVwBV", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=pkWgjmc6FHM", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "pkWgjmc6FHM", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=a645a08e673a1473&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/pkWgjmc6FHM/mqdefault_6s.webp?du=3000&sqp=CK3osLsG&rs=AOn4CLCSdn_irm1Gb-mOuY8BYTU-1zMdzA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "546 views" + } + }, + "simpleText": "546 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/pkWgjmc6FHM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDNSxsg-q4DD2DFpzEX29lI2e0p6A", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/pkWgjmc6FHM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA_4yXAFx7HpA4GOU24v5MTSUVdYw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/pkWgjmc6FHM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCAlELqzEDvKFpR0lH5xwzhUlE8Cg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "6 minutes, 43 seconds" + } + }, + "simpleText": "6:43" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COEFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "pkWgjmc6FHM" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "COEFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COEFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "pkWgjmc6FHM" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "COAFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COAFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COAFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "pkWgjmc6FHM" + ] + } + }, + "openMiniplayer": true, + "videoId": "pkWgjmc6FHM", + "videoIds": [ + "pkWgjmc6FHM" + ] + }, + "clickTrackingParams": "COAFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "The Great Search: Pull out Drawer Sets for Components and Boards #TheGreatSearch @DigiKey @adafruit by Adafruit Industries 546 views 2 days ago 6 minutes, 43 seconds" + } + }, + "runs": [ + { + "text": "The Great Search: Pull out Drawer Sets for Components and Boards #TheGreatSearch @DigiKey @adafruit" + } + ] + }, + "trackingParams": "CN8FENwwIhMInfL4orPDigMVbHR6BR25GwwEQPOo6LnmkeiipgE=", + "videoId": "pkWgjmc6FHM", + "viewCountText": { + "simpleText": "546 views" + } + } + }, + "trackingParams": "CN4FEJmNBRgeIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "In the wake of a devastating cyber attack, a former President (Robert De Niro) is tasked with finding the perpetrators and seeking truth when another attack is imminent — but is the greatest..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=quVC-LXcnZg&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "quVC-LXcnZg", + "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&siu=1&msp=1&odepv=1&id=aae542f8b5dc9d98&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 14 seconds" + } + }, + "simpleText": "1:14" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0FEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CN0FEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "quVC-LXcnZg" + ] + } + }, + "openMiniplayer": true, + "videoId": "quVC-LXcnZg", + "videoIds": [ + "quVC-LXcnZg" + ] + }, + "clickTrackingParams": "CN0FEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CN0FEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "quVC-LXcnZg" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "quVC-LXcnZg" + }, + "clickTrackingParams": "CNwFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CNwFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNsFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CNsFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "quVC-LXcnZg" + } + }, + "videoId": "quVC-LXcnZg" + } + }, + "trackingParams": "CNsFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CNoFEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtxdVZDLUxYY25aZw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNkFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNkFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "quVC-LXcnZg", + "undoToken": "AB9zfpLlfCu36mbEWhJL3AhIRD3kD0ZpCIbPnxRGZ6ex63T2aROArNzBygo1NSUsXgQDHQWzFCq-hrTo5w3Ldz1UQUK3rtZGIfVkam5Yg3GZwfE4d8f-0XaVQ5hkH8h6airUy-M36S961MHW2EGGBWTgCHakuIdwrw" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CNkFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CNgFEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "quVC-LXcnZg", + "feedbackToken": "AB9zfpJnW-pF0b4uUDEfIkhPjfaW0GAZD7RDMfBqd6zIu3EAaCbpAvXYf-U3WPqAHaLyfn-DzOthVOXFtgxm1zgqAKUr0DY-0_TFzD_cwnnLkEczyd0XUUmpcXF8LisGC2dUDVdJ1FbV", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=quVC-LXcnZg", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "quVC-LXcnZg", + "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&siu=1&msp=1&odepv=1&id=aae542f8b5dc9d98&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/quVC-LXcnZg/mqdefault_6s.webp?du=3000&sqp=CMDxsLsG&rs=AOn4CLD2PtN-7bnxwVNFzl8XLjl27dMkgg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "581K views" + } + }, + "simpleText": "581K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/quVC-LXcnZg/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB0IxityvotnoNCdgxvfe_Im8t9hg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/quVC-LXcnZg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDwvy9EJpDCydbpN1NnriYAPknbqg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/quVC-LXcnZg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDQ09XmTFG_meaq2ImSEHmI2zIPUg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 14 seconds" + } + }, + "simpleText": "1:14" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNcFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "quVC-LXcnZg" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CNcFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNcFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "quVC-LXcnZg" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CNYFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNYFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNYFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "quVC-LXcnZg" + ] + } + }, + "openMiniplayer": true, + "videoId": "quVC-LXcnZg", + "videoIds": [ + "quVC-LXcnZg" + ] + }, + "clickTrackingParams": "CNYFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "ZERO DAY | Official Teaser | Netflix by Netflix 581,806 views 2 days ago 1 minute, 14 seconds" + } + }, + "runs": [ + { + "text": "ZERO DAY | Official Teaser | Netflix" + } + ] + }, + "trackingParams": "CNUFENwwIhMInfL4orPDigMVbHR6BR25GwwEQJi78q6L39DyqgE=", + "videoId": "quVC-LXcnZg", + "viewCountText": { + "simpleText": "581,806 views" + } + } + }, + "trackingParams": "CNQFEJmNBRgfIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "리노(Lee Know) \"Youth\" | [Stray Kids(스트레이 키즈) : SKZ-PLAYER(슼즈 플레이어)]\n\nListen to \"合 (HOP)\" now💦\nhttps://Stray-Kids.lnk.to/HOP\n\nListen to \"Walkin On Water (Remixes)\"..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=NI2NBjZGYfM&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "NI2NBjZGYfM", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=348d8d06364661f3&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 1 second" + } + }, + "simpleText": "3:01" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNMFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNMFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "NI2NBjZGYfM" + ] + } + }, + "openMiniplayer": true, + "videoId": "NI2NBjZGYfM", + "videoIds": [ + "NI2NBjZGYfM" + ] + }, + "clickTrackingParams": "CNMFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNMFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "NI2NBjZGYfM" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "NI2NBjZGYfM" + }, + "clickTrackingParams": "CNIFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CNIFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNEFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CNEFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "NI2NBjZGYfM" + } + }, + "videoId": "NI2NBjZGYfM" + } + }, + "trackingParams": "CNEFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CNAFEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtOSTJOQmpaR1lmTQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CM8FEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CM8FEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "NI2NBjZGYfM", + "undoToken": "AB9zfpL5UJbPCnIESJGv3fshOfnaKAy1VH6vcSfvgwuAJIH3fnhVBLWZ8G3tWI7ajSpvPTK6VZl24YoTY6snOtsaLuQLjEnoyPuGZHdBqpKFAyudYP6uOFaf1XSyNRpqmX3BMyzpalw0" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CM8FEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CM4FEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "NI2NBjZGYfM", + "feedbackToken": "AB9zfpK9lwX8DLm_6zF3NsMiZvUnv1-njyNODG-dkNmpom5oP5yZm6i4qobIQrd48E5jlHcPjNC2QIsEoqa4w-x05PKRWrFtkU28fBkHgeLGztl0pY48MdYgVg39EzV3uaKXyUyRBOq-", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=NI2NBjZGYfM", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "NI2NBjZGYfM", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=348d8d06364661f3&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.9 million views" + } + }, + "simpleText": "1.9M views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/NI2NBjZGYfM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAUkv9Qwt_3dHdbW2LRZlsbGXhXNw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/NI2NBjZGYfM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBRlL0Z97F_n1GzJo_gzhObWF3HCg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/NI2NBjZGYfM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDGjhXKSPdAukoeQgMTzhqCDDU4QQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayResumePlaybackRenderer": { + "percentDurationWatched": 10 + } + }, + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 1 second" + } + }, + "simpleText": "3:01" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CM0FEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "NI2NBjZGYfM" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CM0FEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CM0FEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "NI2NBjZGYfM" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CMwFEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMwFEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMwFEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "NI2NBjZGYfM" + ] + } + }, + "openMiniplayer": true, + "videoId": "NI2NBjZGYfM", + "videoIds": [ + "NI2NBjZGYfM" + ] + }, + "clickTrackingParams": "CMwFEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Lee Know \"Youth\" | [Stray Kids : SKZ-PLAYER] by Stray Kids 1,941,055 views 2 days ago 3 minutes, 1 second" + } + }, + "runs": [ + { + "text": "Lee Know \"Youth\" | [Stray Kids : SKZ-PLAYER]" + } + ] + }, + "trackingParams": "CMsFENwwIhMInfL4orPDigMVbHR6BR25GwwEQPPDmbLjoOPGNA==", + "videoId": "NI2NBjZGYfM", + "viewCountText": { + "simpleText": "1,941,055 views" + } + } + }, + "trackingParams": "CMoFEJmNBRggIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Don't worry, they're here to help. Lovers Anonymous, January 16th only on Netflix.\r\n\r\nWatch on Netflix: https://www.netflix.com/title/81614606\r\n\r\nAbout Netflix:\r\nNetflix is one of the world's..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=p4gr406eMas&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "p4gr406eMas", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&siu=1&msp=1&odepv=1&id=a7882be34e9e31ab&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 1 second" + } + }, + "simpleText": "1:01" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMkFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "p4gr406eMas" + ] + } + }, + "openMiniplayer": true, + "videoId": "p4gr406eMas", + "videoIds": [ + "p4gr406eMas" + ] + }, + "clickTrackingParams": "CMkFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMkFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "p4gr406eMas" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "p4gr406eMas" + }, + "clickTrackingParams": "CMgFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMgFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMcFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CMcFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "p4gr406eMas" + } + }, + "videoId": "p4gr406eMas" + } + }, + "trackingParams": "CMcFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CMYFEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtwNGdyNDA2ZU1hcw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMUFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMUFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "p4gr406eMas", + "undoToken": "AB9zfpJjdqo6N2fGtORJCAxxW1UVyYygBp_G_ZbOaFq5n8bOlW_GoAvj9JSmU1EmHTi-hN-2zsx7HDLkiyPGdQ8h7L7iXaAw_W_BvralJl1_lLXfTPimfD5R_L8Rc-U46fZBhTKQSwCE" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CMUFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CMQFEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "p4gr406eMas", + "feedbackToken": "AB9zfpLrbxfCQNfLg9svJ1nm5kovbAs51Rzhjvh8ldwPBqe53DSqXvDicVSyEcUb2pOa_YIYL5-0Lv-er3j4PG2ufBi7HbEFTk8v63gx16PaKOORHJTPG2WU1sai6QoJ43p_IZzkV27q", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=p4gr406eMas", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "p4gr406eMas", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&siu=1&msp=1&odepv=1&id=a7882be34e9e31ab&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/p4gr406eMas/mqdefault_6s.webp?du=3000&sqp=CJvSsLsG&rs=AOn4CLBwmEDcAetqOKROpDOIcm-XOqwuog", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "41K views" + } + }, + "simpleText": "41K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/p4gr406eMas/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA3lSUE8fctI9dBpW53Kvw1lcbA4Q", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/p4gr406eMas/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCF73yK6ebxSj66uetTuMrblif7yA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/p4gr406eMas/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDXwX6BDwzytHAkUxdi6ZjAXPqNEA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 1 second" + } + }, + "simpleText": "1:01" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMMFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "p4gr406eMas" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CMMFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMMFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "p4gr406eMas" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CMIFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMIFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMIFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "p4gr406eMas" + ] + } + }, + "openMiniplayer": true, + "videoId": "p4gr406eMas", + "videoIds": [ + "p4gr406eMas" + ] + }, + "clickTrackingParams": "CMIFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Lovers Anonymous | Teaser | Netflix by Netflix 41,875 views 2 days ago 1 minute, 1 second" + } + }, + "runs": [ + { + "text": "Lovers Anonymous | Teaser | Netflix" + } + ] + }, + "trackingParams": "CMEFENwwIhMInfL4orPDigMVbHR6BR25GwwEQKvj-PS0_IrEpwE=", + "videoId": "p4gr406eMas", + "viewCountText": { + "simpleText": "41,875 views" + } + } + }, + "trackingParams": "CMAFEJmNBRghIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "This week, Ladyada tests the Sparkle Motion WLED board with xLights for large-scale LED animations and began decorating. A smaller version of Sparkle Motion and a NeoPixel-inspired USB PCB,..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=5EsVmlcKPqY&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "5EsVmlcKPqY", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=e44b159a570a3ea6&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 24 seconds" + } + }, + "simpleText": "27:24" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8FEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CL8FEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "5EsVmlcKPqY" + ] + } + }, + "openMiniplayer": true, + "videoId": "5EsVmlcKPqY", + "videoIds": [ + "5EsVmlcKPqY" + ] + }, + "clickTrackingParams": "CL8FEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CL8FEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "5EsVmlcKPqY" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "5EsVmlcKPqY" + }, + "clickTrackingParams": "CL4FEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CL4FEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CL0FENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CL0FENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "5EsVmlcKPqY" + } + }, + "videoId": "5EsVmlcKPqY" + } + }, + "trackingParams": "CL0FENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CLwFEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgs1RXNWbWxjS1BxWQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLsFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLsFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "5EsVmlcKPqY", + "undoToken": "AB9zfpLBHFPIuaFwwJGo1UIrNmBBwrGN9rKk_FFx3w-AI0sTejW7tZc37_PU5s8T8iWOXNWCKnSIjU96BRLoMdE031vnZscBhdSs1issgfj0NYRyiDLCGbHnRMIm5YQFerm6bZpy3gom" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CLsFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CLoFEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "5EsVmlcKPqY", + "feedbackToken": "AB9zfpK41L1T4rGBbTcgJluCt2_KfqPdOG-GLF810r9oMFKh5iGy_PH4khBOdkYpc_06RyzOgYj5M0VMksGrxPu1DD8Ewr_D1-cswJOEPFN71PRxCFUPT-0n1-DlvOOJwwu3AmlDoBh5", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=5EsVmlcKPqY", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "5EsVmlcKPqY", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=e44b159a570a3ea6&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "publishedTimeText": { + "simpleText": "Streamed 2 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/5EsVmlcKPqY/mqdefault_6s.webp?du=3000&sqp=CKbIsLsG&rs=AOn4CLCqF3NDydUC6NJdMCYqPqf8oris-w", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.3K views" + } + }, + "simpleText": "1.3K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/5EsVmlcKPqY/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD4PsB9SXMTuEXTxzyBtZjwTXpwTA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/5EsVmlcKPqY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCH6QNBEZvNnXMRzx5XqqrXoYNxdQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/5EsVmlcKPqY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCflRlWtr6MRa065O_kDTyHw1Sycw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 24 seconds" + } + }, + "simpleText": "27:24" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLkFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "5EsVmlcKPqY" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CLkFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLkFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "5EsVmlcKPqY" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CLgFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLgFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLgFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "5EsVmlcKPqY" + ] + } + }, + "openMiniplayer": true, + "videoId": "5EsVmlcKPqY", + "videoIds": [ + "5EsVmlcKPqY" + ] + }, + "clickTrackingParams": "CLgFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Desk of Ladyada - It's a sparkly LED Christmas! by Adafruit Industries 1,345 views Streamed 2 days ago 27 minutes" + } + }, + "runs": [ + { + "text": "Desk of Ladyada - It's a sparkly LED Christmas!" + } + ] + }, + "trackingParams": "CLcFENwwIhMInfL4orPDigMVbHR6BR25GwwEQKb9qLils8Wl5AE=", + "videoId": "5EsVmlcKPqY", + "viewCountText": { + "simpleText": "1,345 views" + } + } + }, + "trackingParams": "CLYFEJmNBRgiIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "PRE-SAVE IT HERE: https://distrokid.com/hyperfollow/yurishin/from-and-for-me\n\nNEW MUSIC NEW MUSIC NEW MUSIC!\n\n\nsubscriber count: 217" + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=8I6TK3jpU-0&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "8I6TK3jpU-0", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=f08e932b78e953ed&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 44 seconds" + } + }, + "simpleText": "1:44" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLUFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLUFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "8I6TK3jpU-0" + ] + } + }, + "openMiniplayer": true, + "videoId": "8I6TK3jpU-0", + "videoIds": [ + "8I6TK3jpU-0" + ] + }, + "clickTrackingParams": "CLUFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLUFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "8I6TK3jpU-0" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "8I6TK3jpU-0" + }, + "clickTrackingParams": "CLQFEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLQFEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLMFENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CLMFENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "8I6TK3jpU-0" + } + }, + "videoId": "8I6TK3jpU-0" + } + }, + "trackingParams": "CLMFENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CLIFEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgs4STZUSzNqcFUtMA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLEFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLEFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "8I6TK3jpU-0", + "undoToken": "AB9zfpIsmpc7eo6urF4vad5A7Aw_g9z6Fl0o0Y2aathXhPWWC1ERGbxlxuwr-_x59DDC5BUy1J_tt-mpzcng67CRq--7gCrwgd0yT9yToqn0upYerTx6HKBlLg-vvamXQDDsixEDrWee" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CLEFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CLAFEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "8I6TK3jpU-0", + "feedbackToken": "AB9zfpKFWKaB-WMSfU8_V3gdhjwrWg1MyUmGCAtEgcFoY48vGxygTXstL1LoSuO6Bvu0FG_iE4bW59I8zZGXlj3qfoSaOSC91A6mEYJg6SbzDPWNCkxCkH0MHmswmD2_sjBnUTxsaLHO", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=8I6TK3jpU-0", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "8I6TK3jpU-0", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=f08e932b78e953ed&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/8I6TK3jpU-0/mqdefault_6s.webp?du=3000&sqp=CJzLsLsG&rs=AOn4CLCRe3RaWnVn1TOLj9f08YICs9a4ww", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "155 views" + } + }, + "simpleText": "155 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/8I6TK3jpU-0/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCFGiWGXOaMysIIAWdnaFQi4ClLxA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/8I6TK3jpU-0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCvou_Wq-2QLzMMd7mFGFTr-hDP_g", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/8I6TK3jpU-0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD7TiWCsBe_hwmR8GMhcnhVe_ngvQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 44 seconds" + } + }, + "simpleText": "1:44" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CK8FEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "8I6TK3jpU-0" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CK8FEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CK8FEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "8I6TK3jpU-0" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CK4FEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CK4FEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CK4FEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "8I6TK3jpU-0" + ] + } + }, + "openMiniplayer": true, + "videoId": "8I6TK3jpU-0", + "videoIds": [ + "8I6TK3jpU-0" + ] + }, + "clickTrackingParams": "CK4FEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "I HAVE AN EP COMING OUT! by Yuri like glass 155 views 2 days ago 1 minute, 44 seconds" + } + }, + "runs": [ + { + "text": "I HAVE AN EP COMING OUT!" + } + ] + }, + "trackingParams": "CK0FENwwIhMInfL4orPDigMVbHR6BR25GwwEQO2npce35aTH8AE=", + "videoId": "8I6TK3jpU-0", + "viewCountText": { + "simpleText": "155 views" + } + } + }, + "trackingParams": "CKwFEJmNBRgjIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "\"Indiana Jones and the Great Circle\" is struggling after release. Many are blaming poor advertising and a \"modern audience\" comment from Narrative designer for its poor reception.\n\nMerch: https://u..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=yH32GsHQSw4&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "yH32GsHQSw4", + "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&siu=1&msp=1&odepv=1&id=c87df61ac1d04b0e&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "12 minutes, 12 seconds" + } + }, + "simpleText": "12:12" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKsFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKsFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "yH32GsHQSw4" + ] + } + }, + "openMiniplayer": true, + "videoId": "yH32GsHQSw4", + "videoIds": [ + "yH32GsHQSw4" + ] + }, + "clickTrackingParams": "CKsFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKsFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "yH32GsHQSw4" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "yH32GsHQSw4" + }, + "clickTrackingParams": "CKoFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKoFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKkFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CKkFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "yH32GsHQSw4" + } + }, + "videoId": "yH32GsHQSw4" + } + }, + "trackingParams": "CKkFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CKgFEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgt5SDMyR3NIUVN3NA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKcFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKcFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "yH32GsHQSw4", + "undoToken": "AB9zfpIhAyXgBHDsEzS0Mo8JhwP1E5yDJ4MkrsVwwqDKvjSRQM9OemwHLPgMxxQLqVIgc_wANPqT0uhX_7zPSA-tcPCpO9cy-MfWHrT1sdJPkCs0cK5N97ftg7tLUgZ7ocuulrT58fA3" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CKcFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CKYFEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "yH32GsHQSw4", + "feedbackToken": "AB9zfpKvL8b19bPU-yRjp8cLHvJTlgftY4ABF1lE6DIzDsX48B7bCrnyOiRILGCF9XIJ56SQKu8OB8v7V8zfLbhQNt0B2Pypq7l-iQoovf1e8gBZ1KQsjLpNXtpAzPuRywqg4bQVpu29", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=yH32GsHQSw4", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "yH32GsHQSw4", + "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&siu=1&msp=1&odepv=1&id=c87df61ac1d04b0e&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/yH32GsHQSw4/mqdefault_6s.webp?du=3000&sqp=CMjksLsG&rs=AOn4CLBZVMxqaBfP5XJs06I10ASFA_eWkA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "138K views" + } + }, + "simpleText": "138K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/yH32GsHQSw4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAlMUgi74L-gh1E68Vi91CrWj46tg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/yH32GsHQSw4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCilBfUHrxSjinnVyk2sIHWe-B4rA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/yH32GsHQSw4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOO2CYrG6k8s-PbhOF8V0cokDR2w", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayResumePlaybackRenderer": { + "percentDurationWatched": 100 + } + }, + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "12 minutes, 12 seconds" + } + }, + "simpleText": "12:12" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKUFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "yH32GsHQSw4" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CKUFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKUFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "yH32GsHQSw4" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CKQFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKQFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKQFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "yH32GsHQSw4" + ] + } + }, + "openMiniplayer": true, + "videoId": "yH32GsHQSw4", + "videoIds": [ + "yH32GsHQSw4" + ] + }, + "clickTrackingParams": "CKQFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "They Catered To The \"Modern Audience\" And FOUND OUT by Rev says desu 138,292 views 2 days ago 12 minutes, 12 seconds" + } + }, + "runs": [ + { + "text": "They Catered To The \"Modern Audience\" And FOUND OUT" + } + ] + }, + "trackingParams": "CKMFENwwIhMInfL4orPDigMVbHR6BR25GwwEQI6WwY6sw_2-yAE=", + "videoId": "yH32GsHQSw4", + "viewCountText": { + "simpleText": "138,292 views" + } + } + }, + "trackingParams": "CKIFEJmNBRgkIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/TL3zMtJmLfaycA8ibvmry2tXmDF2KB6dsKySjODVFhZESItJwQphtQk_sE8tw6Qil5CVGZDm=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UChl3h_bqcx_c15f7WOtSn-A" + }, + "clickTrackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChl3h_bqcx_c15f7WOtSn-A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChl3h_bqcx_c15f7WOtSn-A" + }, + "clickTrackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChl3h_bqcx_c15f7WOtSn-A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/TL3zMtJmLfaycA8ibvmry2tXmDF2KB6dsKySjODVFhZESItJwQphtQk_sE8tw6Qil5CVGZDm=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Sidos Weihnachtsshow 2024 - Live aus Berlin\nKanal abonnieren: http://bitly.com/SidoOfficial\n \nMehr Infos:\nhttps://www.instagram.com/shawnstein\nhttps://www.facebook.com/sidomusik\nhttp://www.sido.de..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=uZix9dGiu18&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "uZix9dGiu18", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&siu=1&msp=1&odepv=1&id=b998b1f5d1a2bb5f&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 hours, 48 minutes, 31 seconds" + } + }, + "simpleText": "2:48:31" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChl3h_bqcx_c15f7WOtSn-A", + "canonicalBaseUrl": "/channel/UChl3h_bqcx_c15f7WOtSn-A" + }, + "clickTrackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChl3h_bqcx_c15f7WOtSn-A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Sido" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKEFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKEFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "uZix9dGiu18" + ] + } + }, + "openMiniplayer": true, + "videoId": "uZix9dGiu18", + "videoIds": [ + "uZix9dGiu18" + ] + }, + "clickTrackingParams": "CKEFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKEFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "uZix9dGiu18" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "uZix9dGiu18" + }, + "clickTrackingParams": "CKAFEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKAFEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJ8FENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CJ8FENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "uZix9dGiu18" + } + }, + "videoId": "uZix9dGiu18" + } + }, + "trackingParams": "CJ8FENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CJ4FEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgt1Wml4OWRHaXUxOA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJ0FEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJ0FEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "uZix9dGiu18", + "undoToken": "AB9zfpKRaOkNiJ9FpkpBjBNTVlMusuC4gxCOODgEGJDwxkf_QIeov02iuXsQtmMnRKQJhDFYXe-CFH8gunFf6WKvcAOXEDL5GnI85CQdDS9eUD21ATsYii5Gr3RvU1WglbTGmsWakUgf" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJ0FEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJwFEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "uZix9dGiu18", + "feedbackToken": "AB9zfpLDg1g7ndap7gJGPifLxOPiE49ol5mgr3a7QMcLQDjo_mhO0tZXfXrHYh_WNc5sTqnCS3oiOTUJ-69OZ97hlNF3LYxJCUADOJee8mvuKpJQiI4i3Jvww5BpUyx6seRNBER3tQ4b", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=uZix9dGiu18", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "uZix9dGiu18", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&siu=1&msp=1&odepv=1&id=b998b1f5d1a2bb5f&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChl3h_bqcx_c15f7WOtSn-A", + "canonicalBaseUrl": "/channel/UChl3h_bqcx_c15f7WOtSn-A" + }, + "clickTrackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChl3h_bqcx_c15f7WOtSn-A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Sido" + } + ] + }, + "publishedTimeText": { + "simpleText": "Streamed 2 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChl3h_bqcx_c15f7WOtSn-A", + "canonicalBaseUrl": "/channel/UChl3h_bqcx_c15f7WOtSn-A" + }, + "clickTrackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChl3h_bqcx_c15f7WOtSn-A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Sido" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "260K views" + } + }, + "simpleText": "260K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/uZix9dGiu18/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLARei2l5FsB4sfdQjhZ7mgGSp6Bpw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/uZix9dGiu18/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDAoPLHjZ-ONZFUXz6QTN-KxUjqSg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/uZix9dGiu18/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCEE504UiYb5aOLsQDsQJXOTBIe1Q", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 hours, 48 minutes, 31 seconds" + } + }, + "simpleText": "2:48:31" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJsFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "uZix9dGiu18" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CJsFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJsFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "uZix9dGiu18" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CJoFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJoFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJoFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "uZix9dGiu18" + ] + } + }, + "openMiniplayer": true, + "videoId": "uZix9dGiu18", + "videoIds": [ + "uZix9dGiu18" + ] + }, + "clickTrackingParams": "CJoFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Sidos Weihnachtsshow 2024 - Live aus Berlin by Sido 260,640 views Streamed 2 days ago 2 hours, 48 minutes" + } + }, + "runs": [ + { + "text": "Sidos Weihnachtsshow 2024 - Live aus Berlin" + } + ] + }, + "trackingParams": "CJkFENwwIhMInfL4orPDigMVbHR6BR25GwwEQN_2io3dvqzMuQE=", + "videoId": "uZix9dGiu18", + "viewCountText": { + "simpleText": "260,640 views" + } + } + }, + "trackingParams": "CJgFEJmNBRglIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Get 20% off DeleteMe US consumer plans when you go to http://joindeleteme.com/LTT20 and use promo code LTT20 at checkout.\nDeleteMe International Plans: https://international.joindeleteme.com/..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=7V4xoL96HKU&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "7V4xoL96HKU", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=ed5e31a0bf7a1ca5&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "14 minutes, 56 seconds" + } + }, + "simpleText": "14:56" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJcFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "7V4xoL96HKU" + ] + } + }, + "openMiniplayer": true, + "videoId": "7V4xoL96HKU", + "videoIds": [ + "7V4xoL96HKU" + ] + }, + "clickTrackingParams": "CJcFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJcFEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "7V4xoL96HKU" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "7V4xoL96HKU" + }, + "clickTrackingParams": "CJYFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJYFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJUFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CJUFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "7V4xoL96HKU" + } + }, + "videoId": "7V4xoL96HKU" + } + }, + "trackingParams": "CJUFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CJQFEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgs3VjR4b0w5NkhLVQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJMFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJMFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "7V4xoL96HKU", + "undoToken": "AB9zfpKlJd7AHXXGsIe0iY6vaHpVIWWUfeDRguqB5Po9p28vJ1aElmXb-x32r5B-prfcrCu9B-n1izpcVrQps1exC-Ht6AaYw2g4THsM68iAtnJcyD69e7mnnzoqxamQKW-N1RFRVJYFl2j6247vd4xBcwZctbZH8w" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJMFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJIFEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "7V4xoL96HKU", + "feedbackToken": "AB9zfpL36m5EC-xF6dsLCZ3dVSpgTpRisqajj8NRcTA932sWDjeJe0OhGDFgJizhKgjjxsiV9-Nl0RVM4ZumUdGoHPXngh1uaIvMv1sbnzdkeFpLj8PnWplXuGsrk2kX9z6UsvWDmEIA", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=7V4xoL96HKU", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "7V4xoL96HKU", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=ed5e31a0bf7a1ca5&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/7V4xoL96HKU/mqdefault_6s.webp?du=3000&sqp=CL_rsLsG&rs=AOn4CLCXDJfcP6WJZhjKiq8OThu5-OXB0Q", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "999K views" + } + }, + "simpleText": "999K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/7V4xoL96HKU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDfgzJzbjxjpBdtrrHZdw_3B23haQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/7V4xoL96HKU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDStICw3mTo2WVdYCtK_7VyfzCJIA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/7V4xoL96HKU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAIo9ffI2jei2tlNZvxN6r4V3si5Q", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "14 minutes, 56 seconds" + } + }, + "simpleText": "14:56" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJEFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "7V4xoL96HKU" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CJEFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJEFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "7V4xoL96HKU" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CJAFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJAFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJAFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "7V4xoL96HKU" + ] + } + }, + "openMiniplayer": true, + "videoId": "7V4xoL96HKU", + "videoIds": [ + "7V4xoL96HKU" + ] + }, + "clickTrackingParams": "CJAFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Oh No... My Mom Needs a Tablet - Budget Tablet Roundup by Linus Tech Tips 999,751 views 2 days ago 14 minutes, 56 seconds" + } + }, + "runs": [ + { + "text": "Oh No... My Mom Needs a Tablet - Budget Tablet Roundup" + } + ] + }, + "trackingParams": "CI8FENwwIhMInfL4orPDigMVbHR6BR25GwwEQKW56PuLtIyv7QE=", + "videoId": "7V4xoL96HKU", + "viewCountText": { + "simpleText": "999,751 views" + } + } + }, + "trackingParams": "CI4FEJmNBRgmIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/gP4biZPhz7HcfAs2QH5PEumEOkCAToYuFuWrt-xVSO205o51I8vVMPwMANhVWHcFw3WXZAHT=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog" + }, + "clickTrackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCSRCm4zHuETCS7jHWMiWNog", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog" + }, + "clickTrackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCSRCm4zHuETCS7jHWMiWNog", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/gP4biZPhz7HcfAs2QH5PEumEOkCAToYuFuWrt-xVSO205o51I8vVMPwMANhVWHcFw3WXZAHT=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Liebe Freundinnen und Freunde der ZNS Stiftung!✌🏾 Das Jahr neigt sich dem Ende zu und ich möchte die Gelegenheit nutzen, um Allen zu danken, die unsere ZNS-Stiftung unterstützen.♥️..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=jYQYcXLXFWw&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "jYQYcXLXFWw", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=8d84187172d7156c&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 30 seconds" + } + }, + "simpleText": "1:30" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog", + "canonicalBaseUrl": "/channel/UCSRCm4zHuETCS7jHWMiWNog" + }, + "clickTrackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCSRCm4zHuETCS7jHWMiWNog", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adel Tawil" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0FEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CI0FEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "jYQYcXLXFWw" + ] + } + }, + "openMiniplayer": true, + "videoId": "jYQYcXLXFWw", + "videoIds": [ + "jYQYcXLXFWw" + ] + }, + "clickTrackingParams": "CI0FEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CI0FEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "jYQYcXLXFWw" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "jYQYcXLXFWw" + }, + "clickTrackingParams": "CIwFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CIwFEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIsFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CIsFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "jYQYcXLXFWw" + } + }, + "videoId": "jYQYcXLXFWw" + } + }, + "trackingParams": "CIsFENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CIoFEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtqWVFZY1hMWEZXdw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIkFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIkFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "jYQYcXLXFWw", + "undoToken": "AB9zfpKKJjyXTlTdWslDr1-Nio-8yWxhsc4Gnxo2R_EH9z3diAJOCBmrVBhopUHfAIHoIoxihywJE-rH6GpSAD5IsFhdzcEKmNh1fFvJBjAMrcfpX0dt_l2lDveruPyb2S14XNaJEqV9" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CIkFEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CIgFEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "jYQYcXLXFWw", + "feedbackToken": "AB9zfpL_uFf00BZiaWa62zn6P2LbU27ZIrqDG14GLLahBlL06QySQND4v5QEueRaG_M_RUumjpXq697x1mve8BFMV1YgI9HsqM5jHSs77CbdVXRb_4QmMujOIYzfu5LRAjSRZzCPjtK7", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=jYQYcXLXFWw", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "jYQYcXLXFWw", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=8d84187172d7156c&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog", + "canonicalBaseUrl": "/channel/UCSRCm4zHuETCS7jHWMiWNog" + }, + "clickTrackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCSRCm4zHuETCS7jHWMiWNog", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adel Tawil" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/jYQYcXLXFWw/mqdefault_6s.webp?du=3000&sqp=CIijsLsG&rs=AOn4CLAG9JOkM3fHPgatQi-PtDNUtFGRPQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog", + "canonicalBaseUrl": "/channel/UCSRCm4zHuETCS7jHWMiWNog" + }, + "clickTrackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCSRCm4zHuETCS7jHWMiWNog", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adel Tawil" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "645 views" + } + }, + "simpleText": "645 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/jYQYcXLXFWw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLARi-dCy9Epc6Yz72skWzOYLT-sAg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/jYQYcXLXFWw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCrlllygf41fDSSaa7u4tdVM7LJiQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/jYQYcXLXFWw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD5zfCPtbGAC-3XNQ_W3lgzo_h5VA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 30 seconds" + } + }, + "simpleText": "1:30" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIcFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "jYQYcXLXFWw" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CIcFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIcFEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "jYQYcXLXFWw" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CIYFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIYFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIYFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "jYQYcXLXFWw" + ] + } + }, + "openMiniplayer": true, + "videoId": "jYQYcXLXFWw", + "videoIds": [ + "jYQYcXLXFWw" + ] + }, + "clickTrackingParams": "CIYFEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Unser Jahr 2024 | ZNS-Stiftung & Adel Tawil by Adel Tawil 645 views 2 days ago 1 minute, 30 seconds" + } + }, + "runs": [ + { + "text": "Unser Jahr 2024 | ZNS-Stiftung & Adel Tawil" + } + ] + }, + "trackingParams": "CIUFENwwIhMInfL4orPDigMVbHR6BR25GwwEQOyq3JaXjobCjQE=", + "videoId": "jYQYcXLXFWw", + "viewCountText": { + "simpleText": "645 views" + } + } + }, + "trackingParams": "CIQFEJmNBRgnIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Is it good? Is it bad? Neigh, it just is." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=9fr2PuJYcBE&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "9fr2PuJYcBE", + "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&siu=1&msp=1&odepv=1&id=f5faf63ee2587011&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 46 seconds" + } + }, + "simpleText": "2:46" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIMFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIMFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "9fr2PuJYcBE" + ] + } + }, + "openMiniplayer": true, + "videoId": "9fr2PuJYcBE", + "videoIds": [ + "9fr2PuJYcBE" + ] + }, + "clickTrackingParams": "CIMFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIMFEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "9fr2PuJYcBE" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "9fr2PuJYcBE" + }, + "clickTrackingParams": "CIIFEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CIIFEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIEFENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CIEFENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "9fr2PuJYcBE" + } + }, + "videoId": "9fr2PuJYcBE" + } + }, + "trackingParams": "CIEFENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CIAFEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgs5ZnIyUHVKWWNCRQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CP8EEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CP8EEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "9fr2PuJYcBE", + "undoToken": "AB9zfpJOyIyqtPfy-Xrh4p5DDnIi7KtQ2MUiT61Sk7KqSvFooSCnUMF1auw35xrxUkkwH5k962xcR_NoV70CPyRT6oztojCCvkh3vtvmVwpciugZqUKxRFKCKWuK9lCkwJSyveD5hN22" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CP8EEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CP4EEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "9fr2PuJYcBE", + "feedbackToken": "AB9zfpKvSN_d8lBVomqj3bsy3huBGQkjixym53Hr1ogqKq6JT54L5IsomNBlb6QOzkrA6qZ6J0dce7Wp6TPk8Lp_j62dmQovF2LqYRADPYTlQ_kWv0IQJXEzRzs8ukZrs9GqdvffS60k", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=9fr2PuJYcBE", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "9fr2PuJYcBE", + "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&siu=1&msp=1&odepv=1&id=f5faf63ee2587011&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/9fr2PuJYcBE/mqdefault_6s.webp?du=3000&sqp=CMzlsLsG&rs=AOn4CLBa0AArPp7OslGwWpKflm8Tl_1lWA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "22K views" + } + }, + "simpleText": "22K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/9fr2PuJYcBE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCPrI9y_vd8cA__s4x3Sy3goH0mLA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/9fr2PuJYcBE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAKw6raYdaFhfWsASgOmQ4Z_mucdA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/9fr2PuJYcBE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCR1u0C7V3BvuwPdrltbSatnTSNuw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 46 seconds" + } + }, + "simpleText": "2:46" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CP0EEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "9fr2PuJYcBE" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CP0EEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CP0EEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "9fr2PuJYcBE" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CPwEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPwEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPwEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "9fr2PuJYcBE" + ] + } + }, + "openMiniplayer": true, + "videoId": "9fr2PuJYcBE", + "videoIds": [ + "9fr2PuJYcBE" + ] + }, + "clickTrackingParams": "CPwEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "cAvEman tv || Farm Tractor by AvE 22,040 views 2 days ago 2 minutes, 46 seconds" + } + }, + "runs": [ + { + "text": "cAvEman tv || Farm Tractor" + } + ] + }, + "trackingParams": "CPsEENwwIhMInfL4orPDigMVbHR6BR25GwwEQJHg4ZLux7399QE=", + "videoId": "9fr2PuJYcBE", + "viewCountText": { + "simpleText": "22,040 views" + } + } + }, + "trackingParams": "CPoEEJmNBRgoIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "DREiNACHTEN EP STREAMEN► https://wtw.lnk.to/dreinachten\nALBUM JETZT VORBESTELLEN► https://schlussmitlustig.shop/\nTiCKETS ZUR ARENA TOUR 2025 BESTELLEN► http://finch-live.de/\nKANAL ABONNiEREN..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=v2rSk9nZ8oo&t=274s&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "startTimeSeconds": 274, + "videoId": "v2rSk9nZ8oo", + "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&siu=1&msp=1&odepv=1&id=bf6ad293d9d9f28a&ip=79.205.219.142&osts=274&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "24 hours" + } + }, + "simpleText": "24:00:00" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/channel/UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "FiNCH" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPkEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "v2rSk9nZ8oo" + ] + } + }, + "openMiniplayer": true, + "videoId": "v2rSk9nZ8oo", + "videoIds": [ + "v2rSk9nZ8oo" + ] + }, + "clickTrackingParams": "CPkEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPkEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "v2rSk9nZ8oo" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "v2rSk9nZ8oo" + }, + "clickTrackingParams": "CPgEEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CPgEEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPcEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CPcEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "v2rSk9nZ8oo" + } + }, + "videoId": "v2rSk9nZ8oo" + } + }, + "trackingParams": "CPcEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CPYEEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgt2MnJTazluWjhvbw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPUEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPUEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "v2rSk9nZ8oo", + "undoToken": "AB9zfpLjTRLds1D7RszlbYbnqW9REmKlsqILdH5eebCai-qTT8xIiLHSS2H8W-0KrVvFQXCZguuClEMvq_pWQoNWH2W3AJP5cUeQl404p-2npdpOY-IkMUxb1yoZvie6SJFxNKnls2nc" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CPUEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CPQEEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "v2rSk9nZ8oo", + "feedbackToken": "AB9zfpKJydmrJl84VcRNS4ctAPcPYUc10U3FUZWrYD0SZHNg5PTYbbwSSdku2r6VvmjKW4tNmgal27e0Dt-M03serzefaxYmATV-a5O_h51-vYAL-TyrxIcftqgCSUUvPNMv98KXPFL1", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=v2rSk9nZ8oo&t=274s", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "params": "uAKSAg%3D%3D", + "startTimeSeconds": 274, + "videoId": "v2rSk9nZ8oo", + "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&siu=1&msp=1&odepv=1&id=bf6ad293d9d9f28a&ip=79.205.219.142&osts=274&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/channel/UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "FiNCH" + } + ] + }, + "publishedTimeText": { + "simpleText": "2 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/channel/UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "FiNCH" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "22K views" + } + }, + "simpleText": "22K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/v2rSk9nZ8oo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDqZAvUhkQHuFeNZ62qY_DcyCU8AA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/v2rSk9nZ8oo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCgsDfu56Ev2vIhJCqB2jT-zNT6zQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/v2rSk9nZ8oo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBAeGtIITkPvP8NiPDrljUMch_4rA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayResumePlaybackRenderer": { + "percentDurationWatched": 10 + } + }, + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "24 hours" + } + }, + "simpleText": "24:00:00" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPMEEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "v2rSk9nZ8oo" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CPMEEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPMEEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "v2rSk9nZ8oo" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CPIEEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPIEEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPIEEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "v2rSk9nZ8oo" + ] + } + }, + "openMiniplayer": true, + "videoId": "v2rSk9nZ8oo", + "videoIds": [ + "v2rSk9nZ8oo" + ] + }, + "clickTrackingParams": "CPIEEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "FiNCH - WiEDER ANGESAGT (24 STD VERSION - NUR HOOK) by FiNCH 22,848 views 2 days ago 24 hours" + } + }, + "runs": [ + { + "text": "FiNCH - WiEDER ANGESAGT (24 STD VERSION - NUR HOOK)" + } + ] + }, + "trackingParams": "CPEEENwwIhMInfL4orPDigMVbHR6BR25GwwEQIrl58690rS1vwE=", + "videoId": "v2rSk9nZ8oo", + "viewCountText": { + "simpleText": "22,848 views" + } + } + }, + "trackingParams": "CPAEEJmNBRgpIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "covered the outro of this song!\n\n\n\nsubscriber count: 215" + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=mpxfcEaoibw&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "mpxfcEaoibw", + "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&siu=1&msp=1&odepv=1&id=9a9c5f7046a889bc&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 30 seconds" + } + }, + "simpleText": "1:30" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8EEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CO8EEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "mpxfcEaoibw" + ] + } + }, + "openMiniplayer": true, + "videoId": "mpxfcEaoibw", + "videoIds": [ + "mpxfcEaoibw" + ] + }, + "clickTrackingParams": "CO8EEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CO8EEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "mpxfcEaoibw" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "mpxfcEaoibw" + }, + "clickTrackingParams": "CO4EEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CO4EEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CO0EENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CO0EENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "mpxfcEaoibw" + } + }, + "videoId": "mpxfcEaoibw" + } + }, + "trackingParams": "CO0EENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "COwEEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgttcHhmY0Vhb2lidw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COsEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COsEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "mpxfcEaoibw", + "undoToken": "AB9zfpKpKKn07DwUENwND3Gd57byKtluE_o9l3yDlCp6Av7MZ2tUSotHs_GetxsadHit5oXENopzIg-LScR3vKGIVKfzEPXPkcxug7IWQTp3SVNiwLR1S4shyZ5a4Qup4h9-9AZ-sgU5" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "COsEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "COoEEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "mpxfcEaoibw", + "feedbackToken": "AB9zfpJj4JCidUnBZQ8-S2zY3kiFoSNyAZ1tQCzECHEB4Z53hbnjeVt-SORPIdCAkLATo2IIuP5plcob_e5aJz1S1DbTyV_xjdpz8wrYa0UpMkyTXH9WogJSjdjClbtQwHcMTHiFWVk8", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=mpxfcEaoibw", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "mpxfcEaoibw", + "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&siu=1&msp=1&odepv=1&id=9a9c5f7046a889bc&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "publishedTimeText": { + "simpleText": "3 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/mpxfcEaoibw/mqdefault_6s.webp?du=3000&sqp=CIjrsLsG&rs=AOn4CLB9cEKIWTy4O_PeYGcnIEAYVI9z4w", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "120 views" + } + }, + "simpleText": "120 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/mpxfcEaoibw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAeqNW-B-_BvTugTOwfmsH8A6asDQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/mpxfcEaoibw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDAKIFna1FmC9Wd-kFRp6Cjv1cnWQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/mpxfcEaoibw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBUuZ7f3Uxz_vpaVN3N7EChw4fqwQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 30 seconds" + } + }, + "simpleText": "1:30" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COkEEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "mpxfcEaoibw" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "COkEEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COkEEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "mpxfcEaoibw" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "COgEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COgEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COgEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "mpxfcEaoibw" + ] + } + }, + "openMiniplayer": true, + "videoId": "mpxfcEaoibw", + "videoIds": [ + "mpxfcEaoibw" + ] + }, + "clickTrackingParams": "COgEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Hold Me Down by Daniel Caesar (cover outro) by Yuri like glass 120 views 3 days ago 1 minute, 30 seconds" + } + }, + "runs": [ + { + "text": "Hold Me Down by Daniel Caesar (cover outro)" + } + ] + }, + "trackingParams": "COcEENwwIhMInfL4orPDigMVbHR6BR25GwwEQLyTorWE7pfOmgE=", + "videoId": "mpxfcEaoibw", + "viewCountText": { + "simpleText": "120 views" + } + } + }, + "trackingParams": "COYEEJmNBRgqIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "World Friends Facebook\n👉 / 100090310914821 \n\nTODAY 10 EUROPEAN GUESS EACH OTHER’S NATIONALITY IN ONE MINUTE!!!!\n\nHope you enjoy the video! \nAlso, please follow our panels!\n\n\nRU Taya..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=sRHsFNAhfv8&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "sRHsFNAhfv8", + "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&siu=1&msp=1&odepv=1&id=b111ec14d0217eff&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "31 minutes, 54 seconds" + } + }, + "simpleText": "31:54" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "World Friends" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "COUEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COUEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "sRHsFNAhfv8" + ] + } + }, + "openMiniplayer": true, + "videoId": "sRHsFNAhfv8", + "videoIds": [ + "sRHsFNAhfv8" + ] + }, + "clickTrackingParams": "COUEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COUEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "sRHsFNAhfv8" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "sRHsFNAhfv8" + }, + "clickTrackingParams": "COQEEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "COQEEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COMEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "COMEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "sRHsFNAhfv8" + } + }, + "videoId": "sRHsFNAhfv8" + } + }, + "trackingParams": "COMEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "COIEEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtzUkhzRk5BaGZ2OA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COEEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COEEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "sRHsFNAhfv8", + "undoToken": "AB9zfpIRBVrnQftMKcmst-6sN5mN_QBXbtrU-0tRNszL3cokZMU_5ujyXUvGxtT2lW_L-utnG1MKXzZHWwWsSXAxrEM0hfEF6QpWKGRy0muYbKPBK0ATZCgInnrlK5vkFNz-pB-Wpr3G0xOt0gxqbqQUYUcuYrpWNA" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "COEEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "COAEEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "sRHsFNAhfv8", + "feedbackToken": "AB9zfpIQWJ4m-yj1Mhg7B2p0clO-ZzG5sNusaRCUMgdS4hwMp3ixv75-ItZsdeTacEeCw_Dzo6PTNExyfQ-d5g_94SlK8TokPq_qwH4NPKoA5RhJ3eo0MtWth3yIAHDy__8yAF9BBMoX", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=sRHsFNAhfv8", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "sRHsFNAhfv8", + "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&siu=1&msp=1&odepv=1&id=b111ec14d0217eff&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "World Friends" + } + ] + }, + "publishedTimeText": { + "simpleText": "3 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/sRHsFNAhfv8/mqdefault_6s.webp?du=3000&sqp=CNPUsLsG&rs=AOn4CLCo1xmUKLkDcqzUqSSFZVqfFDWt4Q", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "World Friends" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "41K views" + } + }, + "simpleText": "41K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/sRHsFNAhfv8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDqmwZN3GVLy5OvSOyy102fWRCXQQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/sRHsFNAhfv8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB-EkRWXnQi1QeJmexBywsyjLsGsg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/sRHsFNAhfv8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB_6Y7W3ghasiFxk6a0vUZl-USt2g", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "31 minutes, 54 seconds" + } + }, + "simpleText": "31:54" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CN8EEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "sRHsFNAhfv8" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CN8EEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CN8EEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "sRHsFNAhfv8" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CN4EEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CN4EEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CN4EEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "sRHsFNAhfv8" + ] + } + }, + "openMiniplayer": true, + "videoId": "sRHsFNAhfv8", + "videoIds": [ + "sRHsFNAhfv8" + ] + }, + "clickTrackingParams": "CN4EEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Can 10 European Guess Each other's Nationality in ONE MINUTE?? by World Friends 41,094 views 3 days ago 31 minutes" + } + }, + "runs": [ + { + "text": "Can 10 European Guess Each other's Nationality in ONE MINUTE??" + } + ] + }, + "trackingParams": "CN0EENwwIhMInfL4orPDigMVbHR6BR25GwwEQP_9hYHNgvuIsQE=", + "videoId": "sRHsFNAhfv8", + "viewCountText": { + "simpleText": "41,094 views" + } + } + }, + "trackingParams": "CNwEEJmNBRgrIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "창빈(Changbin) \"ULTRA\" | [Stray Kids(스트레이 키즈) : SKZ-PLAYER(슼즈 플레이어)]\n\nListen to \"合 (HOP)\" now💦\nhttps://Stray-Kids.lnk.to/HOP\n\nListen to \"Walkin On Water (Remixes)\"..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=t4YJEekL1f8&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "t4YJEekL1f8", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=b7860911e90bd5ff&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 37 seconds" + } + }, + "simpleText": "2:37" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNsEEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNsEEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "t4YJEekL1f8" + ] + } + }, + "openMiniplayer": true, + "videoId": "t4YJEekL1f8", + "videoIds": [ + "t4YJEekL1f8" + ] + }, + "clickTrackingParams": "CNsEEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNsEEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "t4YJEekL1f8" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "t4YJEekL1f8" + }, + "clickTrackingParams": "CNoEEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CNoEEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNkEENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CNkEENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "t4YJEekL1f8" + } + }, + "videoId": "t4YJEekL1f8" + } + }, + "trackingParams": "CNkEENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CNgEEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgt0NFlKRWVrTDFmOA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNcEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNcEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "t4YJEekL1f8", + "undoToken": "AB9zfpLulf4aDAOLHHlLVOTADHsYKkuTtG89PkISiBROEz7bphd4p3Uw5UvyR9C3R4pu1YD6RYihJL1IyLE5GNReRqQecEsu5mkDBJkPJPnQE4ptxEWCvDwbvDrfJ91xS12KDwNUlMc2" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CNcEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CNYEEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "t4YJEekL1f8", + "feedbackToken": "AB9zfpKyPQXHNTuiv51gWCbgk9jCcfm0AObhLiJxdENi6tuw4E399zGlpsqXRI1i5yFH9s974EWtt2kCEn5XFOZBk0t_Z2pGgb7PIzib76SlfKOmKMFsIJcn0an1BMkbNesBQ9ztTz42", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=t4YJEekL1f8", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "t4YJEekL1f8", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=b7860911e90bd5ff&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "publishedTimeText": { + "simpleText": "3 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.4 million views" + } + }, + "simpleText": "1.4M views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/t4YJEekL1f8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC-svhJcbx5f9drX3SKxjJqELIIsA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/t4YJEekL1f8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBACPoJlyoFB6Pa8lrO_W2hruchkw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/t4YJEekL1f8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD_4BiPJpipSKYf0R4FFStcxpafJw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 37 seconds" + } + }, + "simpleText": "2:37" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNUEEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "t4YJEekL1f8" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CNUEEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNUEEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "t4YJEekL1f8" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CNQEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNQEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNQEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "t4YJEekL1f8" + ] + } + }, + "openMiniplayer": true, + "videoId": "t4YJEekL1f8", + "videoIds": [ + "t4YJEekL1f8" + ] + }, + "clickTrackingParams": "CNQEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Changbin \"ULTRA\" | [Stray Kids : SKZ-PLAYER] by Stray Kids 1,448,271 views 3 days ago 2 minutes, 37 seconds" + } + }, + "runs": [ + { + "text": "Changbin \"ULTRA\" | [Stray Kids : SKZ-PLAYER]" + } + ] + }, + "trackingParams": "CNMEENwwIhMInfL4orPDigMVbHR6BR25GwwEQP-rr8ieooLDtwE=", + "videoId": "t4YJEekL1f8", + "viewCountText": { + "simpleText": "1,448,271 views" + } + } + }, + "trackingParams": "CNIEEJmNBRgsIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_kKQv93ELRWu1XsqlnRBDswoC56a8lQEbBWtQrbJR02w18=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCVZlxkKqlvVqzRJXhAGq42Q", + "canonicalBaseUrl": "/@Slingshotchannel" + }, + "clickTrackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Slingshotchannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCVZlxkKqlvVqzRJXhAGq42Q", + "canonicalBaseUrl": "/@Slingshotchannel" + }, + "clickTrackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Slingshotchannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_kKQv93ELRWu1XsqlnRBDswoC56a8lQEbBWtQrbJR02w18=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Das Messer wird im Laufe des Jahres 2025 bei Böker erscheinen, als \"Böker Plus\" Midgards Messer Modell. Der Designer ist Jörg Sprave und es trägt auch das Midgards Messer Logo.\nDer Preis..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=2DXQvSjg4YM&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "2DXQvSjg4YM", + "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&siu=1&msp=1&odepv=1&id=d835d0bd28e0e183&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 15 seconds" + } + }, + "simpleText": "3:15" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCVZlxkKqlvVqzRJXhAGq42Q", + "canonicalBaseUrl": "/@Slingshotchannel" + }, + "clickTrackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Slingshotchannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "JoergSprave" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNEEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNEEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "2DXQvSjg4YM" + ] + } + }, + "openMiniplayer": true, + "videoId": "2DXQvSjg4YM", + "videoIds": [ + "2DXQvSjg4YM" + ] + }, + "clickTrackingParams": "CNEEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNEEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "2DXQvSjg4YM" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "2DXQvSjg4YM" + }, + "clickTrackingParams": "CNAEEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CNAEEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CM8EENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CM8EENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "2DXQvSjg4YM" + } + }, + "videoId": "2DXQvSjg4YM" + } + }, + "trackingParams": "CM8EENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CM4EEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgsyRFhRdlNqZzRZTQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CM0EEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CM0EEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "2DXQvSjg4YM", + "undoToken": "AB9zfpIZYSsFJ3AJH4wB3H9DDI9PlJxcNKRsULR9gRAFUFAtGUe0Q6n0H5EkssO_xK7WBCp1gLjwLbB2ybgTEekXtMNJE2t3RW3sD0tfG6drG3RhAqfjBthFIVP8UfsrWQgxg3baPv1p" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CM0EEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CMwEEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "2DXQvSjg4YM", + "feedbackToken": "AB9zfpLwR2vKeWQCP8ix4A5LbK_he7CN7VN2gBLp9HtIdwC1KOr7xmyHxQSMdsDh7Zij_z2qTryrDI3URXBYbvXQdAubaJlnXRJfyispqTcrhKCnllGAp5ZNC85GcUOLS6_fElRuAxlC", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=2DXQvSjg4YM", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "2DXQvSjg4YM", + "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&siu=1&msp=1&odepv=1&id=d835d0bd28e0e183&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCVZlxkKqlvVqzRJXhAGq42Q", + "canonicalBaseUrl": "/@Slingshotchannel" + }, + "clickTrackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Slingshotchannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "JoergSprave" + } + ] + }, + "publishedTimeText": { + "simpleText": "3 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/2DXQvSjg4YM/mqdefault_6s.webp?du=3000&sqp=CPG5sLsG&rs=AOn4CLC_7XalMAe-mnftpd0V5-KjDYJrSg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCVZlxkKqlvVqzRJXhAGq42Q", + "canonicalBaseUrl": "/@Slingshotchannel" + }, + "clickTrackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Slingshotchannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "JoergSprave" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "27K views" + } + }, + "simpleText": "27K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/2DXQvSjg4YM/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AHOBYACgAqKAgwIABABGGUgQyhBMA8=&rs=AOn4CLBNDDLHMi7cpB5aCLdfeMXZ5H11Bg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/2DXQvSjg4YM/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBzgWAAoAKigIMCAAQARhlIEMoQTAP&rs=AOn4CLD3oW24KLN8UmxwDLMWUcI6t3m7qQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/2DXQvSjg4YM/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBzgWAAoAKigIMCAAQARhlIEMoQTAP&rs=AOn4CLDDXzsVKmx15mF5f1IGZpcWmrZqHw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 15 seconds" + } + }, + "simpleText": "3:15" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMsEEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "2DXQvSjg4YM" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CMsEEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMsEEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "2DXQvSjg4YM" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CMoEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMoEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMoEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "2DXQvSjg4YM" + ] + } + }, + "openMiniplayer": true, + "videoId": "2DXQvSjg4YM", + "videoIds": [ + "2DXQvSjg4YM" + ] + }, + "clickTrackingParams": "CMoEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Isildur‘s Taschen-Schwert? by JoergSprave 27,092 views 3 days ago 3 minutes, 15 seconds" + } + }, + "runs": [ + { + "text": "Isildur‘s Taschen-Schwert?" + } + ] + }, + "trackingParams": "CMkEENwwIhMInfL4orPDigMVbHR6BR25GwwEQIPDg8fSl_Sa2AE=", + "videoId": "2DXQvSjg4YM", + "viewCountText": { + "simpleText": "27,092 views" + } + } + }, + "trackingParams": "CMgEEJmNBRgtIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "STARSHIP SQUARE (Domestic) : https://bit.ly/3HtQ7GF\nSTARSHIP SQUARE (Global) : https://bit.ly/3JWPxm0\nIVE US EXCLUSIVE STORE : https://shop.ive-starship.com/ \n\nIVE X (Twitter)\n: https://twitter.co..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=hry77MdIp5A&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "hry77MdIp5A", + "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&siu=1&msp=1&odepv=1&id=86bcbbecc748a790&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 7 seconds" + } + }, + "simpleText": "20:07" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMcEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "hry77MdIp5A" + ] + } + }, + "openMiniplayer": true, + "videoId": "hry77MdIp5A", + "videoIds": [ + "hry77MdIp5A" + ] + }, + "clickTrackingParams": "CMcEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMcEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "hry77MdIp5A" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "hry77MdIp5A" + }, + "clickTrackingParams": "CMYEEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMYEEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMUEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CMUEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "hry77MdIp5A" + } + }, + "videoId": "hry77MdIp5A" + } + }, + "trackingParams": "CMUEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CMQEEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgtocnk3N01kSXA1QQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMMEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMMEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "hry77MdIp5A", + "undoToken": "AB9zfpKL5ZXEgaJV7Sbocuo081Cnac36ArJSsykVCFR3NWk5DUndX1n5d25DdmTrAJZ-MUxOvOzScpj_DP1AEO22tCmj8PrKtr_UI_8CLCegkrhAYwDZ1x_LT71gORXtVUN_TZkN1z1n" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CMMEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CMIEEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "hry77MdIp5A", + "feedbackToken": "AB9zfpIO-UkUeHluXKeCijknI5rGP4-hCdlpqGY5xGzhB3igJRLj1XIiZjlyjPxwaI7jf8ron2bQQYzSgQ7mlD0jqrkCJ8K7lcr7o01sbnUVV_ewibGuDjIt57A0dU_SaGE5gGs_tvXc", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=hry77MdIp5A", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "hry77MdIp5A", + "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&siu=1&msp=1&odepv=1&id=86bcbbecc748a790&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "publishedTimeText": { + "simpleText": "Streamed 3 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/hry77MdIp5A/mqdefault_6s.webp?du=3000&sqp=CJD1sLsG&rs=AOn4CLDKek6In2Ta-JK1DZf4r-Fqz26r-A", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "127K views" + } + }, + "simpleText": "127K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/hry77MdIp5A/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AHOBYACgAqKAgwIABABGGUgZShlMA8=&rs=AOn4CLBeCwJ-Iypw0jnM7XBe0H0mQ-Vl-A", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/hry77MdIp5A/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBzgWAAoAKigIMCAAQARhlIGUoZTAP&rs=AOn4CLCAHcHVZ7A5iF4W4J55VjEq6a_xeA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/hry77MdIp5A/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBzgWAAoAKigIMCAAQARhlIGUoZTAP&rs=AOn4CLDHgjh1Q2m82aG0GxntDMj_fU4euw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 7 seconds" + } + }, + "simpleText": "20:07" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMEEEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "hry77MdIp5A" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CMEEEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMEEEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "hry77MdIp5A" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CMAEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMAEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMAEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "hry77MdIp5A" + ] + } + }, + "openMiniplayer": true, + "videoId": "hry77MdIp5A", + "videoIds": [ + "hry77MdIp5A" + ] + }, + "clickTrackingParams": "CMAEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "241222 IVE REI 나? 보고싶지? 🐮 by IVE 127,319 views Streamed 3 days ago 20 minutes" + } + }, + "runs": [ + { + "text": "241222 IVE REI 나? 보고싶지? 🐮" + } + ] + }, + "trackingParams": "CL8EENwwIhMInfL4orPDigMVbHR6BR25GwwEQJDPorrM_a7ehgE=", + "videoId": "hry77MdIp5A", + "viewCountText": { + "simpleText": "127,319 views" + } + } + }, + "trackingParams": "CL4EEJmNBRguIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "It appears that the Sweet Baby Inc website has gone done for the second time recently. Additionally, Kim Belair had a lot to say about her critics (gamers) in latest interview.\nMy alt channel:..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=t8eU18jj27I&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "t8eU18jj27I", + "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&siu=1&msp=1&odepv=1&id=b7c794d7c8e3dbb2&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "16 minutes, 48 seconds" + } + }, + "simpleText": "16:48" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0EEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CL0EEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "t8eU18jj27I" + ] + } + }, + "openMiniplayer": true, + "videoId": "t8eU18jj27I", + "videoIds": [ + "t8eU18jj27I" + ] + }, + "clickTrackingParams": "CL0EEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CL0EEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "t8eU18jj27I" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "t8eU18jj27I" + }, + "clickTrackingParams": "CLwEEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLwEEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLsEENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CLsEENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "t8eU18jj27I" + } + }, + "videoId": "t8eU18jj27I" + } + }, + "trackingParams": "CLsEENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CLoEEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgt0OGVVMThqajI3SQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLkEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLkEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "t8eU18jj27I", + "undoToken": "AB9zfpLlsxKJOAHEWIHBh5fEt1E-7w6WGB60jQ1POS3Jezl8qDnaLPla3E7SWLuc5nQJrNbxELkS-nlDkM4UopyGYi37dQJRA3XuAFhitFLlkJHSaX6aDNqPfsM8Sffqv-pFuL27nlY3" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CLkEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CLgEEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "t8eU18jj27I", + "feedbackToken": "AB9zfpLICP3e3QB7yMU4aHAKyBmiYBVx6Ka1tawV_7Neue6qm_fUSBbABULdwza-GcIssxNrQa8upZoX_tfyhxTJj9qV8kVgS-cbQA51b2O7NBy7sD4yPmqD5AjwrL4MsKlaLCyOpQox", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=t8eU18jj27I", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "t8eU18jj27I", + "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&siu=1&msp=1&odepv=1&id=b7c794d7c8e3dbb2&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "publishedTimeText": { + "simpleText": "3 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/t8eU18jj27I/mqdefault_6s.webp?du=3000&sqp=CNbtsLsG&rs=AOn4CLCQq5YEk1MH0OlmjquQOkroS-BilQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "130K views" + } + }, + "simpleText": "130K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/t8eU18jj27I/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB78K7MZj4rZ10YJk2TopmEIZnvSg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/t8eU18jj27I/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCMMAOOm9KFRLBSLIs96L3DFDlcig", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/t8eU18jj27I/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA36ASflcSIzrktA8-Y7QavCv_MjA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "16 minutes, 48 seconds" + } + }, + "simpleText": "16:48" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLcEEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "t8eU18jj27I" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CLcEEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLcEEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "t8eU18jj27I" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CLYEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLYEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLYEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "t8eU18jj27I" + ] + } + }, + "openMiniplayer": true, + "videoId": "t8eU18jj27I", + "videoIds": [ + "t8eU18jj27I" + ] + }, + "clickTrackingParams": "CLYEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Sweet Baby CEO Creates New \"Harassment Campaign\" As Website IMPLODES Amid Shutdown Rumors by Rev says desu 130,029 views 3 days ago 16 minutes" + } + }, + "runs": [ + { + "text": "Sweet Baby CEO Creates New \"Harassment Campaign\" As Website IMPLODES Amid Shutdown Rumors" + } + ] + }, + "trackingParams": "CLUEENwwIhMInfL4orPDigMVbHR6BR25GwwEQLK3j8f8muXjtwE=", + "videoId": "t8eU18jj27I", + "viewCountText": { + "simpleText": "130,029 views" + } + } + }, + "trackingParams": "CLQEEJmNBRgvIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/61ysGsxu8YlE9Tx5_c8e9ybdhJCNfA3byxRdWHceZ5LwWB69_poYGp8jE0m5RJXZj8wXZO5_6A=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCAmJs6kPXAe31qJH_vBGWsA" + }, + "clickTrackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCAmJs6kPXAe31qJH_vBGWsA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCAmJs6kPXAe31qJH_vBGWsA" + }, + "clickTrackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCAmJs6kPXAe31qJH_vBGWsA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/61ysGsxu8YlE9Tx5_c8e9ybdhJCNfA3byxRdWHceZ5LwWB69_poYGp8jE0m5RJXZj8wXZO5_6A=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Gregor Hägele – Mama (Live)\n► Hier kannst du die Single streamen und downloaden: https://umg.lnk.tt/Mama_Live\n#GregorHaegele #mama\n \n► Nichts mehr von Gregor Hägele verpassen: \nInstagram:..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Cv3VopvZ_ho&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "Cv3VopvZ_ho", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=0afdd5a29bd9fe1a&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 47 seconds" + } + }, + "simpleText": "4:47" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCAmJs6kPXAe31qJH_vBGWsA", + "canonicalBaseUrl": "/channel/UCAmJs6kPXAe31qJH_vBGWsA" + }, + "clickTrackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCAmJs6kPXAe31qJH_vBGWsA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Gregor Haegele" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLMEEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLMEEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Cv3VopvZ_ho" + ] + } + }, + "openMiniplayer": true, + "videoId": "Cv3VopvZ_ho", + "videoIds": [ + "Cv3VopvZ_ho" + ] + }, + "clickTrackingParams": "CLMEEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLMEEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Cv3VopvZ_ho" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "Cv3VopvZ_ho" + }, + "clickTrackingParams": "CLIEEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLIEEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLEEENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CLEEENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "Cv3VopvZ_ho" + } + }, + "videoId": "Cv3VopvZ_ho" + } + }, + "trackingParams": "CLEEENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CLAEEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtDdjNWb3B2Wl9obw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CK8EEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CK8EEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "Cv3VopvZ_ho", + "undoToken": "AB9zfpLkZz8lXZ_XgxZF1tPb7-7sloGpY54DnHrln-gr7fs11lbm5DPMUPOcs6AeCL2_f0oa5F8Q2vLVx4kOkVNaBl9iMMZH-Zmw5PaB5klTYSTUDic-h_crO-CBCIKFCGP-bXevoWSp" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CK8EEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CK4EEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "Cv3VopvZ_ho", + "feedbackToken": "AB9zfpIN6q04OtpA-6W3vgR_zxSxHh8ssUC8qkZISNEWQEdrsddEDrdBlJ0dvKIfXfb47QuaqfuaGbkAcPYgQFRFtCM34ys5KZzW4KEP-VycZzW_I529yC7--_RTpCda4fn40VB3Wclx", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Cv3VopvZ_ho", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "Cv3VopvZ_ho", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=0afdd5a29bd9fe1a&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCAmJs6kPXAe31qJH_vBGWsA", + "canonicalBaseUrl": "/channel/UCAmJs6kPXAe31qJH_vBGWsA" + }, + "clickTrackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCAmJs6kPXAe31qJH_vBGWsA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Gregor Haegele" + } + ] + }, + "publishedTimeText": { + "simpleText": "3 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCAmJs6kPXAe31qJH_vBGWsA", + "canonicalBaseUrl": "/channel/UCAmJs6kPXAe31qJH_vBGWsA" + }, + "clickTrackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCAmJs6kPXAe31qJH_vBGWsA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Gregor Haegele" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.3K views" + } + }, + "simpleText": "1.3K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/Cv3VopvZ_ho/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AG-B4AC0AWKAgwIABABGGUgZShlMA8=&rs=AOn4CLAWbCN9WZDWn_0vHXHx4jqeGIEvnQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Cv3VopvZ_ho/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBvgeAAtAFigIMCAAQARhlIGUoZTAP&rs=AOn4CLBI6e00lksLfR_D4iKfB7JDnK7-kw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Cv3VopvZ_ho/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgBvgeAAtAFigIMCAAQARhlIGUoZTAP&rs=AOn4CLAODxgE6tAh7RdJNGkDA44kwdUBWQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 47 seconds" + } + }, + "simpleText": "4:47" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CK0EEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Cv3VopvZ_ho" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CK0EEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CK0EEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Cv3VopvZ_ho" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CKwEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKwEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKwEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Cv3VopvZ_ho" + ] + } + }, + "openMiniplayer": true, + "videoId": "Cv3VopvZ_ho", + "videoIds": [ + "Cv3VopvZ_ho" + ] + }, + "clickTrackingParams": "CKwEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Gregor Hägele - Mama (Live) by Gregor Haegele 1,356 views 3 days ago 4 minutes, 47 seconds" + } + }, + "runs": [ + { + "text": "Gregor Hägele - Mama (Live)" + } + ] + }, + "trackingParams": "CKsEENwwIhMInfL4orPDigMVbHR6BR25GwwEQJr8596ptPX-Cg==", + "videoId": "Cv3VopvZ_ho", + "viewCountText": { + "simpleText": "1,356 views" + } + } + }, + "trackingParams": "CKoEEJmNBRgwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/gopbHeiDtEB932rIFqLlR4D_hFtd-BcdGrQgGeyDpkD3guskkbT74DsJYPGo3x7MqkyqtgL-=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCGwu0nbY2wSkW8N-cghnLpA", + "canonicalBaseUrl": "/@jaidenanimations" + }, + "clickTrackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@jaidenanimations", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGwu0nbY2wSkW8N-cghnLpA", + "canonicalBaseUrl": "/@jaidenanimations" + }, + "clickTrackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@jaidenanimations", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/gopbHeiDtEB932rIFqLlR4D_hFtd-BcdGrQgGeyDpkD3guskkbT74DsJYPGo3x7MqkyqtgL-=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Thanks to Jacob and their team for the incredible work putting this together! \nIf you want to play it, join Jacob's community discord and be nice: https://discord.com/invite/alpharad\n\n✦ The..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=BjoLQvj7lAE&t=668s&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "startTimeSeconds": 668, + "videoId": "BjoLQvj7lAE", + "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&siu=1&msp=1&odepv=1&id=063a0b42f8fb9401&ip=79.205.219.142&osts=668&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "31 minutes, 39 seconds" + } + }, + "simpleText": "31:39" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGwu0nbY2wSkW8N-cghnLpA", + "canonicalBaseUrl": "/@jaidenanimations" + }, + "clickTrackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@jaidenanimations", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "JaidenAnimations" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkEEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKkEEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "BjoLQvj7lAE" + ] + } + }, + "openMiniplayer": true, + "videoId": "BjoLQvj7lAE", + "videoIds": [ + "BjoLQvj7lAE" + ] + }, + "clickTrackingParams": "CKkEEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKkEEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "BjoLQvj7lAE" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "BjoLQvj7lAE" + }, + "clickTrackingParams": "CKgEEJSsCRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKgEEJSsCRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKcEENGqBRgPIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CKcEENGqBRgPIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "BjoLQvj7lAE" + } + }, + "videoId": "BjoLQvj7lAE" + } + }, + "trackingParams": "CKcEENGqBRgPIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CKYEEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtCam9MUXZqN2xBRQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKUEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKUEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "BjoLQvj7lAE", + "undoToken": "AB9zfpI5c6BMbhiv5F4mZD5PUzj_ETW9_dwxLfNzdPhjDxc7c0lH2m9N8e_EROhWap-lMEJhLsH51WZSAG_y7pJ5SmZPAmdgBSExgc1AdRJWbflZYxCX_kvqdSgfcxaij0jk8rdat8IZ" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CKUEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CKQEEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "BjoLQvj7lAE", + "feedbackToken": "AB9zfpK3RJbi4v-1_UhqTGP0Cq3RxM1cSP-9PBFzAyTek49fYJuZPxNwPJXnJFVbwUfKNQhj8q3Vrz_iM8G4wZXhPhLi0aWSxbqLUsT6Tc7pO5ovbnbhqe4tCeB79v0fQ4KA5gaB_38q", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=BjoLQvj7lAE&t=668s", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "params": "uAKcBQ%3D%3D", + "startTimeSeconds": 668, + "videoId": "BjoLQvj7lAE", + "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&siu=1&msp=1&odepv=1&id=063a0b42f8fb9401&ip=79.205.219.142&osts=668&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGwu0nbY2wSkW8N-cghnLpA", + "canonicalBaseUrl": "/@jaidenanimations" + }, + "clickTrackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@jaidenanimations", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "JaidenAnimations" + } + ] + }, + "publishedTimeText": { + "simpleText": "3 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/BjoLQvj7lAE/mqdefault_6s.webp?du=3000&sqp=CNzssLsG&rs=AOn4CLB1-dpZvo-W3WcPfXDrfkX7XPskPA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGwu0nbY2wSkW8N-cghnLpA", + "canonicalBaseUrl": "/@jaidenanimations" + }, + "clickTrackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@jaidenanimations", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "JaidenAnimations" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "3.3 million views" + } + }, + "simpleText": "3.3M views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/BjoLQvj7lAE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAYaV5yw1RNxe8d3OMwswu_V4QDIA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/BjoLQvj7lAE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD1OTZbvIfuqhDaMCuJZjpGVd1w9g", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/BjoLQvj7lAE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD3Tei6JrLOAGUYCr-m8BIXXyNzfg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayResumePlaybackRenderer": { + "percentDurationWatched": 35 + } + }, + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "31 minutes, 39 seconds" + } + }, + "simpleText": "31:39" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKMEEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "BjoLQvj7lAE" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CKMEEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKMEEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "BjoLQvj7lAE" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CKIEEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKIEEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKIEEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "BjoLQvj7lAE" + ] + } + }, + "openMiniplayer": true, + "videoId": "BjoLQvj7lAE", + "videoIds": [ + "BjoLQvj7lAE" + ] + }, + "clickTrackingParams": "CKIEEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "I played Pokemon, but with 50+ New Types by JaidenAnimations 3,385,546 views 3 days ago 31 minutes" + } + }, + "runs": [ + { + "text": "I played Pokemon, but with 50+ New Types" + } + ] + }, + "trackingParams": "CKEEENwwIhMInfL4orPDigMVbHR6BR25GwwEQIGo7sev6IKdBg==", + "videoId": "BjoLQvj7lAE", + "viewCountText": { + "simpleText": "3,385,546 views" + } + } + }, + "trackingParams": "CKAEEJmNBRgxIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/hs5HfkvpHPwpD9gk4b0z28ilP9IM1WGKY5rgB-XX5ZHLc2SRbuYcv5kfYWeVRR4Mwt2Hi-4Ckg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "my first original Christmas song! i wrote it two years ago and i still love it today.\n\nlyrics: \n\nin Georgia it barely snows\nso instead I put up the christmas lights that glow\nI watch the lights..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=nnsnXffEc88&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "nnsnXffEc88", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&siu=1&msp=1&odepv=1&id=9e7b275df7c473cf&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 24 seconds" + } + }, + "simpleText": "3:24" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8EEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJ8EEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "nnsnXffEc88" + ] + } + }, + "openMiniplayer": true, + "videoId": "nnsnXffEc88", + "videoIds": [ + "nnsnXffEc88" + ] + }, + "clickTrackingParams": "CJ8EEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJ8EEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "nnsnXffEc88" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "nnsnXffEc88" + }, + "clickTrackingParams": "CJ4EEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJ4EEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJ0EENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CJ0EENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "nnsnXffEc88" + } + }, + "videoId": "nnsnXffEc88" + } + }, + "trackingParams": "CJ0EENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CJwEEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtubnNuWGZmRWM4OA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJsEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJsEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "nnsnXffEc88", + "undoToken": "AB9zfpLWzMa9txEYKEqkEddUVSwIUqVkZLR7T6bL44k5wLPp_hsEoBZ8cTKiOd2MGUw_Q4eLZqY_LJep3Lli-LIu1nL1jYx-0Uoq14TVFXBBB6x0S7KPO9CENXb7H-tCLqFg9WGvUU9A" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJsEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJoEEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "nnsnXffEc88", + "feedbackToken": "AB9zfpI2ofObGF5QGOl_E9G8By_amGW44JtVMdXb4WFDSFDypkz0wgrgn1JSp3oNo5aobvK5T7GzzQw8UH0tcheRsRc789WlcukJbLeFSIudyUcJ8PRe6zohi_wZxMHnMozNDfd6DutE", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=nnsnXffEc88", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "nnsnXffEc88", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&siu=1&msp=1&odepv=1&id=9e7b275df7c473cf&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "publishedTimeText": { + "simpleText": "3 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/nnsnXffEc88/mqdefault_6s.webp?du=3000&sqp=CNvSsLsG&rs=AOn4CLDkurEvzDu5xlFKMXuOruZOtM1yrw", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbeDqaLm7fdIzGK-uceZ6Ow", + "canonicalBaseUrl": "/@yurilikeglass" + }, + "clickTrackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@yurilikeglass", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Yuri like glass" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "49 views" + } + }, + "simpleText": "49 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/nnsnXffEc88/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDOo4LfQY6kkYZEsi13eZ0B-SVGqw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/nnsnXffEc88/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBUqbXjD44dQ83cBlWjvSkIS3Vr4g", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/nnsnXffEc88/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCXv-23WwLRA3_DmhjX0o6BZ1dYtA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 24 seconds" + } + }, + "simpleText": "3:24" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJkEEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "nnsnXffEc88" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CJkEEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJkEEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "nnsnXffEc88" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CJgEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJgEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJgEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "nnsnXffEc88" + ] + } + }, + "openMiniplayer": true, + "videoId": "nnsnXffEc88", + "videoIds": [ + "nnsnXffEc88" + ] + }, + "clickTrackingParams": "CJgEEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Christmas Lights (original Christmas song) by Yuri like glass 49 views 3 days ago 3 minutes, 24 seconds" + } + }, + "runs": [ + { + "text": "Christmas Lights (original Christmas song)" + } + ] + }, + "trackingParams": "CJcEENwwIhMInfL4orPDigMVbHR6BR25GwwEQM_nkb7f68m9ngE=", + "videoId": "nnsnXffEc88", + "viewCountText": { + "simpleText": "49 views" + } + } + }, + "trackingParams": "CJYEEJmNBRgyIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/6pPZQkBWoQ-UAu5sT-Z47ID6vhPr-nnfziSpR84unn9vsDUzz5_iNS3WkuXSdKUKhkVGQerE=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/6pPZQkBWoQ-UAu5sT-Z47ID6vhPr-nnfziSpR84unn9vsDUzz5_iNS3WkuXSdKUKhkVGQerE=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "With chocolate chips now coming in different shapes, sizes, and even cacao percentages, how do you choose? We tested 13 options to find the best. \n\nRead our full review: https://cooks.io/49HV2jX..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Jy2-yI1t-w8&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "Jy2-yI1t-w8", + "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&siu=1&msp=1&odepv=1&id=272dbec88d6dfb0f&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "12 minutes, 1 second" + } + }, + "simpleText": "12:01" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "America's Test Kitchen" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJUEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJUEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Jy2-yI1t-w8" + ] + } + }, + "openMiniplayer": true, + "videoId": "Jy2-yI1t-w8", + "videoIds": [ + "Jy2-yI1t-w8" + ] + }, + "clickTrackingParams": "CJUEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJUEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Jy2-yI1t-w8" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "Jy2-yI1t-w8" + }, + "clickTrackingParams": "CJQEEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJQEEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJMEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CJMEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "Jy2-yI1t-w8" + } + }, + "videoId": "Jy2-yI1t-w8" + } + }, + "trackingParams": "CJMEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CJIEEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtKeTIteUkxdC13OA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJEEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJEEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "Jy2-yI1t-w8", + "undoToken": "AB9zfpL5is8lF4up4w_6NQnCuujevWP43rvxLpNSGY0KW0YSjwUFL3Pl-AlndTBhxoXOpf7lYvBgYPvAJAukBBI3UOVOkW3I63qDJgo78uqjbWxvMou-oVCEcbTYf2A8YvDpMqU8W-NViinuZ7o7PVpSy88vBP3Q_Q" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJEEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJAEEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "Jy2-yI1t-w8", + "feedbackToken": "AB9zfpKaLw1aEpnu1FtBE0a8g0D92qLCyBGzV-gEaJ89MWm0LMZ4q0FbUVHzKh7OFt5a9OfYsbEZmXxHpuXKnDUfakD2vNDiHRY_AWAC22WE6zt5c6PQxa5dOPwonY3WTdtb-P-fZz2d", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Jy2-yI1t-w8", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "Jy2-yI1t-w8", + "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&siu=1&msp=1&odepv=1&id=272dbec88d6dfb0f&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "America's Test Kitchen" + } + ] + }, + "publishedTimeText": { + "simpleText": "3 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/Jy2-yI1t-w8/mqdefault_6s.webp?du=3000&sqp=CLTUsLsG&rs=AOn4CLDBu4gqTJhFXZL8eOgR2-s1-4UO7A", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "America's Test Kitchen" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "71K views" + } + }, + "simpleText": "71K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/Jy2-yI1t-w8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_Ypx4a7VM8PWxTEkv-DUMdo6F4w", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Jy2-yI1t-w8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCgFOXPt3o4j1NJiRRXKGfnMqrDqQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Jy2-yI1t-w8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA8gx0hD2_AD2fSX4I8d5ilxmxwEQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "12 minutes, 1 second" + } + }, + "simpleText": "12:01" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CI8EEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Jy2-yI1t-w8" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CI8EEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CI8EEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Jy2-yI1t-w8" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CI4EEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CI4EEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CI4EEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Jy2-yI1t-w8" + ] + } + }, + "openMiniplayer": true, + "videoId": "Jy2-yI1t-w8", + "videoIds": [ + "Jy2-yI1t-w8" + ] + }, + "clickTrackingParams": "CI4EEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Which Chocolate Chip Makes the Best Cookies? | The Taste Test by America's Test Kitchen 71,754 views 3 days ago 12 minutes, 1 second" + } + }, + "runs": [ + { + "text": "Which Chocolate Chip Makes the Best Cookies? | The Taste Test" + } + ] + }, + "trackingParams": "CI0EENwwIhMInfL4orPDigMVbHR6BR25GwwEQI_2t-uI2e-WJw==", + "videoId": "Jy2-yI1t-w8", + "viewCountText": { + "simpleText": "71,754 views" + } + } + }, + "trackingParams": "CIwEEJmNBRgzIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Go to https://bit.ly/LMGHOLIDAYXP and check out Green Man Gaming’s Holiday Sale to save big on some of the hottest titles out right now! You can even use code LMGHOLIDAYXP to instantly become..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=kjn79Cs5Hco&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "kjn79Cs5Hco", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=9239fbf42b391dca&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "19 minutes, 43 seconds" + } + }, + "simpleText": "19:43" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIsEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIsEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "kjn79Cs5Hco" + ] + } + }, + "openMiniplayer": true, + "videoId": "kjn79Cs5Hco", + "videoIds": [ + "kjn79Cs5Hco" + ] + }, + "clickTrackingParams": "CIsEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIsEEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "kjn79Cs5Hco" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "kjn79Cs5Hco" + }, + "clickTrackingParams": "CIoEEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CIoEEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIkEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CIkEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "kjn79Cs5Hco" + } + }, + "videoId": "kjn79Cs5Hco" + } + }, + "trackingParams": "CIkEENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CIgEEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgtram43OUNzNUhjbw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIcEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIcEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "kjn79Cs5Hco", + "undoToken": "AB9zfpJ-G0stA6RPaW2oFarL7xxAeZDBNlivZquO3S5saXpqcfqSKIO5UGI3omwpT_cAe3RI49GvvyN6fCzWQl9u1Rr0owho5faPLCKVw1GD5aW4TgzQxxunFcP9TrvJg_GB9DlP4RFE" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CIcEEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CIYEEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "kjn79Cs5Hco", + "feedbackToken": "AB9zfpI54S4LtSc8VX1GuxHfTXk2hnnR45Uw6KZO2y_KNJTIt_IN351tZq95JoaTohJt4edXVqSiwYEGg_cLcclG-mbaNAB8OgGWugIULu2JIECoFx1EYXe19R4opdU9vUDeCkWbqXG5", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=kjn79Cs5Hco", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "kjn79Cs5Hco", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=9239fbf42b391dca&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "publishedTimeText": { + "simpleText": "3 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/kjn79Cs5Hco/mqdefault_6s.webp?du=3000&sqp=CPrLsLsG&rs=AOn4CLCJ5QY8zIeDWrCvBNW5d7LM13KnZQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.2 million views" + } + }, + "simpleText": "1.2M views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/kjn79Cs5Hco/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDN6wH-cUigNkueTJtTRtmGOAJBZg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/kjn79Cs5Hco/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBbvbNLNJb_thmDUB_3WQmSIYT8zQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/kjn79Cs5Hco/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCNZjs617CKNxRrAH4gBQhMQQaRIQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "19 minutes, 43 seconds" + } + }, + "simpleText": "19:43" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIUEEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "kjn79Cs5Hco" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CIUEEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIUEEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "kjn79Cs5Hco" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CIQEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIQEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIQEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "kjn79Cs5Hco" + ] + } + }, + "openMiniplayer": true, + "videoId": "kjn79Cs5Hco", + "videoIds": [ + "kjn79Cs5Hco" + ] + }, + "clickTrackingParams": "CIQEEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "His Wife Threw his Gaming PC out the Window… Can I Fix It? by Linus Tech Tips 1,263,346 views 3 days ago 19 minutes" + } + }, + "runs": [ + { + "text": "His Wife Threw his Gaming PC out the Window… Can I Fix It?" + } + ] + }, + "trackingParams": "CIMEENwwIhMInfL4orPDigMVbHR6BR25GwwEQMq75NnC_v6ckgE=", + "videoId": "kjn79Cs5Hco", + "viewCountText": { + "simpleText": "1,263,346 views" + } + } + }, + "trackingParams": "CIIEEJmNBRg0IhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Pull up a stump! Plenty of room for you around the fire." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Ia1jc2bxibQ&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "Ia1jc2bxibQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=21ad637366f189b4&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 48 seconds" + } + }, + "simpleText": "4:48" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIEEEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIEEEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Ia1jc2bxibQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "Ia1jc2bxibQ", + "videoIds": [ + "Ia1jc2bxibQ" + ] + }, + "clickTrackingParams": "CIEEEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIEEEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Ia1jc2bxibQ" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "Ia1jc2bxibQ" + }, + "clickTrackingParams": "CIAEEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CIAEEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CP8DENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CP8DENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "Ia1jc2bxibQ" + } + }, + "videoId": "Ia1jc2bxibQ" + } + }, + "trackingParams": "CP8DENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CP4DEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtJYTFqYzJieGliUQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CP0DEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CP0DEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "Ia1jc2bxibQ", + "undoToken": "AB9zfpIqCoSRnN8gEsuQBkWmpwE0TldrzY6D76ltzavnc94BcKDa5RqA6_ceiu_xNYEcavSwBdABBkqaDTxjym2N91sFjVYYYUFqLr0q9sneoQjIOGKEga5r-ZOOxNyYN0iIDN544NSI" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CP0DEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CPwDEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "Ia1jc2bxibQ", + "feedbackToken": "AB9zfpLCzkrL1S5Ij10saMd2pNiUGW_uo0P8ZDl9yi1W5xMU8l8JExTfRbjRF7nz7Jdyg_8pprHduhIuV3MxwEDeDt6sKFVSdYsFM0iXVbQrU-DQ6YVyUdKX2de4BmAcf3sAqeHzVkQI", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Ia1jc2bxibQ", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "Ia1jc2bxibQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=21ad637366f189b4&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "publishedTimeText": { + "simpleText": "3 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/Ia1jc2bxibQ/mqdefault_6s.webp?du=3000&sqp=CNTksLsG&rs=AOn4CLCRzRjie8EEjpjfMFQvYs3q1rdWVQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "25K views" + } + }, + "simpleText": "25K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/Ia1jc2bxibQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDi8xbP2eLS-LqWdZuj2VShc9GYuA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Ia1jc2bxibQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDUN9sPwD0kyryScCRArox29LnlUA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Ia1jc2bxibQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDAIASLjiD6X1mlCnim6n7PZO1xbg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 48 seconds" + } + }, + "simpleText": "4:48" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPsDEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Ia1jc2bxibQ" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CPsDEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPsDEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Ia1jc2bxibQ" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CPoDEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPoDEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPoDEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Ia1jc2bxibQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "Ia1jc2bxibQ", + "videoIds": [ + "Ia1jc2bxibQ" + ] + }, + "clickTrackingParams": "CPoDEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "cAvEman tv || homestead by AvE 25,943 views 3 days ago 4 minutes, 48 seconds" + } + }, + "runs": [ + { + "text": "cAvEman tv || homestead" + } + ] + }, + "trackingParams": "CPkDENwwIhMInfL4orPDigMVbHR6BR25GwwEQLSTxre27tjWIQ==", + "videoId": "Ia1jc2bxibQ", + "viewCountText": { + "simpleText": "25,943 views" + } + } + }, + "trackingParams": "CPgDEJmNBRg1IhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lAKf-vZLoTI-gZUoP5Y3gbdGd07E4eDHUhTee6aOzDCnU=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC5UAwBUum7CPN5buc-_N1Fw", + "canonicalBaseUrl": "/@TheLinuxEXP" + }, + "clickTrackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TheLinuxEXP", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC5UAwBUum7CPN5buc-_N1Fw", + "canonicalBaseUrl": "/@TheLinuxEXP" + }, + "clickTrackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TheLinuxEXP", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lAKf-vZLoTI-gZUoP5Y3gbdGd07E4eDHUhTee6aOzDCnU=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Check out TuxCare's partner Program to enrich your own Enterprise solutions: https://tuxcare.com/partners/?utm_campaign=The%20Linux%20Experiment&utm_source=youtube&utm_medium=social\n\nGrab a..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=sIzz0l-6_Jk&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "sIzz0l-6_Jk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&siu=1&msp=1&odepv=1&id=b08cf3d25fbafc99&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 22 seconds" + } + }, + "simpleText": "20:22" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC5UAwBUum7CPN5buc-_N1Fw", + "canonicalBaseUrl": "/@TheLinuxEXP" + }, + "clickTrackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TheLinuxEXP", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "The Linux Experiment" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPcDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "sIzz0l-6_Jk" + ] + } + }, + "openMiniplayer": true, + "videoId": "sIzz0l-6_Jk", + "videoIds": [ + "sIzz0l-6_Jk" + ] + }, + "clickTrackingParams": "CPcDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPcDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "sIzz0l-6_Jk" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "sIzz0l-6_Jk" + }, + "clickTrackingParams": "CPYDEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CPYDEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPUDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CPUDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "sIzz0l-6_Jk" + } + }, + "videoId": "sIzz0l-6_Jk" + } + }, + "trackingParams": "CPUDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CPQDEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtzSXp6MGwtNl9Kaw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPMDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPMDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "sIzz0l-6_Jk", + "undoToken": "AB9zfpIW_2o45q30F4S-K9XNvAiolqlyggdDpVDZNxNxkwnbx18OCErA-FUtzPwMMd3QgZ41YBFCop0aj1FySDmxKbo9v9b0CIWUUI9KXwRalVgrnNZzN3USccuMOak8Zd6jhNXf9vC4" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CPMDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CPIDEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "sIzz0l-6_Jk", + "feedbackToken": "AB9zfpKiv0uoQ7v5I3BD2aq9XzQYyf3lf6sA6dj90jJ21Hx_d9w5mKVOa6B6BHDOmEwI6pN-jpavtxfEi2n6eRUM_iBpsnnDaicMo367GREbbW0k47HbOmLY9iZxl1vfLQQVgpHwbCrM", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=sIzz0l-6_Jk", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "sIzz0l-6_Jk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&siu=1&msp=1&odepv=1&id=b08cf3d25fbafc99&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC5UAwBUum7CPN5buc-_N1Fw", + "canonicalBaseUrl": "/@TheLinuxEXP" + }, + "clickTrackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TheLinuxEXP", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "The Linux Experiment" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/sIzz0l-6_Jk/mqdefault_6s.webp?du=3000&sqp=COTdsLsG&rs=AOn4CLCMn3z36NlsCJpXF8STOZ6X6rHgIg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC5UAwBUum7CPN5buc-_N1Fw", + "canonicalBaseUrl": "/@TheLinuxEXP" + }, + "clickTrackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TheLinuxEXP", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "The Linux Experiment" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "34K views" + } + }, + "simpleText": "34K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/sIzz0l-6_Jk/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCfEuMtA4kg-uvdG6k0DlAX64vEIw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/sIzz0l-6_Jk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCeWM7W_Q_-rLhC4ddTrkOacpRdtQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/sIzz0l-6_Jk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB51NDkRe-VMMHxw6h3RNPVQMNUXQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 22 seconds" + } + }, + "simpleText": "20:22" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPEDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "sIzz0l-6_Jk" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CPEDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPEDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "sIzz0l-6_Jk" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CPADEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPADEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPADEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "sIzz0l-6_Jk" + ] + } + }, + "openMiniplayer": true, + "videoId": "sIzz0l-6_Jk", + "videoIds": [ + "sIzz0l-6_Jk" + ] + }, + "clickTrackingParams": "CPADEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Mozilla Ads and AI, EU investigates TikTok, Lenovo uses SteamOS: Linux & Open Source News by The Linux Experiment 34,019 views 4 days ago 20 minutes" + } + }, + "runs": [ + { + "text": "Mozilla Ads and AI, EU investigates TikTok, Lenovo uses SteamOS: Linux & Open Source News" + } + ] + }, + "trackingParams": "CO8DENwwIhMInfL4orPDigMVbHR6BR25GwwEQJn56_2l-rzGsAE=", + "videoId": "sIzz0l-6_Jk", + "viewCountText": { + "simpleText": "34,019 views" + } + } + }, + "trackingParams": "CO4DEJmNBRg2IhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "World Friends Facebook\n👉 / 100090310914821 \n\nCountry names are different!!\n\nRussia, Portugal, Spain, Italy, Poland\n\nHope you enjoy the video! \nAlso, please follow our panels!\n\n\nRU Taya..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=SetFQPnlxvY&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "SetFQPnlxvY", + "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&siu=1&msp=1&odepv=1&id=49eb4540f9e5c6f6&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "14 minutes, 18 seconds" + } + }, + "simpleText": "14:18" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "World Friends" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0DEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CO0DEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "SetFQPnlxvY" + ] + } + }, + "openMiniplayer": true, + "videoId": "SetFQPnlxvY", + "videoIds": [ + "SetFQPnlxvY" + ] + }, + "clickTrackingParams": "CO0DEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CO0DEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "SetFQPnlxvY" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "SetFQPnlxvY" + }, + "clickTrackingParams": "COwDEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "COwDEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COsDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "COsDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "SetFQPnlxvY" + } + }, + "videoId": "SetFQPnlxvY" + } + }, + "trackingParams": "COsDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "COoDEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtTZXRGUVBubHh2WQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COkDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COkDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "SetFQPnlxvY", + "undoToken": "AB9zfpIQSKeVwcqXiv-4W8Nxqpa9IBzxdI-GqKMogBJEXgT7MdjTaj8QRLqlYXM4BgCtEmYPlczkEEO7wq84H-IJtIZcwP996vzdcL1dMjYTmNaTl_IOqfu1N3vJoXAzUlVWwyq_VHJPzE0nlAzvUkC597iqwRAlxw" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "COkDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "COgDEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "SetFQPnlxvY", + "feedbackToken": "AB9zfpIBYeHomnXP3JWJdDwNHs4tU_NrIokTvp0Q470Lm-hE9OqANf7BHk8OqqcmUcxMPcoV-xqzgQ_jdxhXhK6gvT8CZ-3esPq7xCJhSYyWMe_vSubZ5R37fUaowq_kPSSeVWyA6yOB", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=SetFQPnlxvY", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "SetFQPnlxvY", + "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&siu=1&msp=1&odepv=1&id=49eb4540f9e5c6f6&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "World Friends" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/SetFQPnlxvY/mqdefault_6s.webp?du=3000&sqp=CPrssLsG&rs=AOn4CLDn2oOYIagcIslIol2c5yr95YwN2A", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "World Friends" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "34K views" + } + }, + "simpleText": "34K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/SetFQPnlxvY/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCn2gIe2ep9oAi4uciQCgBGadicAg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/SetFQPnlxvY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDqtusH3tew0XItCXFYNNd6OiX-PQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/SetFQPnlxvY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDoX8-BYAt02Begz13CberboHI-fQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "14 minutes, 18 seconds" + } + }, + "simpleText": "14:18" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COcDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "SetFQPnlxvY" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "COcDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COcDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "SetFQPnlxvY" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "COYDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COYDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COYDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "SetFQPnlxvY" + ] + } + }, + "openMiniplayer": true, + "videoId": "SetFQPnlxvY", + "videoIds": [ + "SetFQPnlxvY" + ] + }, + "clickTrackingParams": "COYDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Country Name Differences Between Russian And Other European Languages!! by World Friends 34,718 views 4 days ago 14 minutes, 18 seconds" + } + }, + "runs": [ + { + "text": "Country Name Differences Between Russian And Other European Languages!!" + } + ] + }, + "trackingParams": "COUDENwwIhMInfL4orPDigMVbHR6BR25GwwEQPaNl8-PqNH1SQ==", + "videoId": "SetFQPnlxvY", + "viewCountText": { + "simpleText": "34,718 views" + } + } + }, + "trackingParams": "COQDEJmNBRg3IhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "STARSHIP SQUARE (Domestic) : https://bit.ly/3HtQ7GF\nSTARSHIP SQUARE (Global) : https://bit.ly/3JWPxm0\nIVE US EXCLUSIVE STORE : https://shop.ive-starship.com/ \n\nIVE X (Twitter)\n: https://twitter.co..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ccoQmKWMy1s&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "ccoQmKWMy1s", + "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&siu=1&msp=1&odepv=1&id=71ca1098a58ccb5b&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "8 minutes, 20 seconds" + } + }, + "simpleText": "8:20" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "COMDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COMDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "ccoQmKWMy1s" + ] + } + }, + "openMiniplayer": true, + "videoId": "ccoQmKWMy1s", + "videoIds": [ + "ccoQmKWMy1s" + ] + }, + "clickTrackingParams": "COMDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COMDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "ccoQmKWMy1s" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "ccoQmKWMy1s" + }, + "clickTrackingParams": "COIDEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "COIDEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COEDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "COEDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "ccoQmKWMy1s" + } + }, + "videoId": "ccoQmKWMy1s" + } + }, + "trackingParams": "COEDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "COADEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtjY29RbUtXTXkxcw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CN8DEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CN8DEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "ccoQmKWMy1s", + "undoToken": "AB9zfpLvoyP4AHpHYy-LvEWT2l4IQolXv5448H4J-YWnzE_q7zHTrVbtTh9A2w34qlHZcepSLEDE9Pqs3KRTXhZOunGzqiRtxYwpTIsFp33oE4k5MPxGL9J8m2R1GTsA-SSOba76atOGjRhY0WYxh8o1TTw3k7juMw" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CN8DEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CN4DEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "ccoQmKWMy1s", + "feedbackToken": "AB9zfpI-tRrN-_AAzWfCCFRmYFbyy50NjE51i3c-CT-RBlwC9AexJd73epP_59Wj9-6ZvVCe59ocTq5d-orYqOQrQBZLI3Mv45f4CNMHV0V67ttcEt0mi2EemPq2rVu_OYxWZdm3RKPR", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ccoQmKWMy1s", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "ccoQmKWMy1s", + "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&siu=1&msp=1&odepv=1&id=71ca1098a58ccb5b&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/ccoQmKWMy1s/mqdefault_6s.webp?du=3000&sqp=CO3tsLsG&rs=AOn4CLBxHHlPQVNuMbOXN51DwZwEQX6e6A", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "99K views" + } + }, + "simpleText": "99K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/ccoQmKWMy1s/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAJSf_FKryz8SQEqJ6ool_C0nlIuw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/ccoQmKWMy1s/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB4BCuaIuLMFQfzSyclfm1_N6k9AA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/ccoQmKWMy1s/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBW8xo76SfbKSQf6XUnYD4apajVKg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "8 minutes, 20 seconds" + } + }, + "simpleText": "8:20" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CN0DEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "ccoQmKWMy1s" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CN0DEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CN0DEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "ccoQmKWMy1s" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CNwDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNwDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNwDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "ccoQmKWMy1s" + ] + } + }, + "openMiniplayer": true, + "videoId": "ccoQmKWMy1s", + "videoIds": [ + "ccoQmKWMy1s" + ] + }, + "clickTrackingParams": "CNwDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "[IVE ON] 2024 MAMA AWARDS BEHIND by IVE 99,038 views 4 days ago 8 minutes, 20 seconds" + } + }, + "runs": [ + { + "text": "[IVE ON] 2024 MAMA AWARDS BEHIND" + } + ] + }, + "trackingParams": "CNsDENwwIhMInfL4orPDigMVbHR6BR25GwwEQNuWs6yKk4TlcQ==", + "videoId": "ccoQmKWMy1s", + "viewCountText": { + "simpleText": "99,038 views" + } + } + }, + "trackingParams": "CNoDEJmNBRg4IhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/enyLBm1Sy8mVRXJJLWHT2z64nqxJGt2g61A9xnxpUjO2YAUovHaY_JT3rnAg0j6Qij9iaHQlAg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "canonicalBaseUrl": "/@Mrwhosetheboss" + }, + "clickTrackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Mrwhosetheboss", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "canonicalBaseUrl": "/@Mrwhosetheboss" + }, + "clickTrackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Mrwhosetheboss", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/enyLBm1Sy8mVRXJJLWHT2z64nqxJGt2g61A9xnxpUjO2YAUovHaY_JT3rnAg0j6Qij9iaHQlAg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "not bad ninja, not bad at all\nTake your cleaning to the next level this holiday season! 😏 https://roborock.pxf.io/POzk1R - From now until 12/29, snag Roborock Qrevo Slim with up to 30% OFF!..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=LWEDJ_YgEaA&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "LWEDJ_YgEaA", + "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&siu=1&msp=1&odepv=1&id=2d610327f62011a0&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "22 minutes, 56 seconds" + } + }, + "simpleText": "22:56" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "canonicalBaseUrl": "/@Mrwhosetheboss" + }, + "clickTrackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Mrwhosetheboss", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Mrwhosetheboss" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkDEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNkDEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "LWEDJ_YgEaA" + ] + } + }, + "openMiniplayer": true, + "videoId": "LWEDJ_YgEaA", + "videoIds": [ + "LWEDJ_YgEaA" + ] + }, + "clickTrackingParams": "CNkDEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNkDEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "LWEDJ_YgEaA" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "LWEDJ_YgEaA" + }, + "clickTrackingParams": "CNgDEJSsCRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CNgDEJSsCRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNcDENGqBRgPIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CNcDENGqBRgPIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "LWEDJ_YgEaA" + } + }, + "videoId": "LWEDJ_YgEaA" + } + }, + "trackingParams": "CNcDENGqBRgPIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CNYDEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtMV0VESl9ZZ0VhQQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNUDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNUDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "LWEDJ_YgEaA", + "undoToken": "AB9zfpKXRCNt-_PDOdWsGGL4PM28U7xlKAxBlrNWPKmATmPXF7Lgx71KCsk76A6vKCuiELIEjPwTv_v-I5mIXU-VjXJiR9T5laPZx52v1dhHzClg0TKrtxMLrTR40YvDeZVrSC7Dgobb" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CNUDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CNQDEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "LWEDJ_YgEaA", + "feedbackToken": "AB9zfpKvxv-ua1hY4Q8gW-wi3hO-wF1k5RbGTnpsDy0xdueUvALS2fXS9nH1foKPsOI1lmAkQC12kYYeatZFwpdUp-ClBxT2pfXuKdgayYadJVv7RSkqMwleEP7Ket8wI3Bqr12Z1I9P", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=LWEDJ_YgEaA", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "LWEDJ_YgEaA", + "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&siu=1&msp=1&odepv=1&id=2d610327f62011a0&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "canonicalBaseUrl": "/@Mrwhosetheboss" + }, + "clickTrackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Mrwhosetheboss", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Mrwhosetheboss" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/LWEDJ_YgEaA/mqdefault_6s.webp?du=3000&sqp=CKDxsLsG&rs=AOn4CLCeZTNUQWhSgM8deHBhGNz6nCfbIg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "canonicalBaseUrl": "/@Mrwhosetheboss" + }, + "clickTrackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Mrwhosetheboss", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Mrwhosetheboss" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "2.5 million views" + } + }, + "simpleText": "2.5M views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/LWEDJ_YgEaA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD1XVJcUexwNA_l4p4VXvhsj1oY3g", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/LWEDJ_YgEaA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCbMidD77bZYn6wGt-gsorMPUYXNw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/LWEDJ_YgEaA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB_4brfanO5qQGkDUvQjrH3l2U0Ow", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayResumePlaybackRenderer": { + "percentDurationWatched": 10 + } + }, + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "22 minutes, 56 seconds" + } + }, + "simpleText": "22:56" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNMDEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "LWEDJ_YgEaA" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CNMDEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNMDEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "LWEDJ_YgEaA" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CNIDEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNIDEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNIDEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "LWEDJ_YgEaA" + ] + } + }, + "openMiniplayer": true, + "videoId": "LWEDJ_YgEaA", + "videoIds": [ + "LWEDJ_YgEaA" + ] + }, + "clickTrackingParams": "CNIDEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "I built the Dream Smart Kitchen by Mrwhosetheboss 2,529,633 views 4 days ago 22 minutes" + } + }, + "runs": [ + { + "text": "I built the Dream Smart Kitchen" + } + ] + }, + "trackingParams": "CNEDENwwIhMInfL4orPDigMVbHR6BR25GwwEQKCjgLH_5MCwLQ==", + "videoId": "LWEDJ_YgEaA", + "viewCountText": { + "simpleText": "2,529,633 views" + } + } + }, + "trackingParams": "CNADEJmNBRg5IhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Visit the Adafruit shop online - http://www.adafruit.com\n\n-----------------------------------------\nLIVE CHAT IS HERE! http://adafru.it/discord\nSubscribe to Adafruit on YouTube: http://adafru.it/su..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Rjqru848FSM&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "Rjqru848FSM", + "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&siu=1&msp=1&odepv=1&id=463aabbbce3c1523&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 hours, 5 minutes, 26 seconds" + } + }, + "simpleText": "2:05:26" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8DEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CM8DEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Rjqru848FSM" + ] + } + }, + "openMiniplayer": true, + "videoId": "Rjqru848FSM", + "videoIds": [ + "Rjqru848FSM" + ] + }, + "clickTrackingParams": "CM8DEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CM8DEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Rjqru848FSM" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "Rjqru848FSM" + }, + "clickTrackingParams": "CM4DEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CM4DEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CM0DENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CM0DENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "Rjqru848FSM" + } + }, + "videoId": "Rjqru848FSM" + } + }, + "trackingParams": "CM0DENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CMwDEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtSanFydTg0OEZTTQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMsDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMsDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "Rjqru848FSM", + "undoToken": "AB9zfpJtcbm-_jrp50zcLuv6CGoJtQLpC0AQw-WkmmJrTdvq9FC-ebEbXt46kSQ8-1UpONEpOqKyLrX1hVGsy4SMNNaspV6a3gb0QsMalpXnnNEktVWHWuqIhzqarH_BMt0v_0-LdEAxbF7ffcEqO-hdzP0ytz2k3A" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CMsDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CMoDEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "Rjqru848FSM", + "feedbackToken": "AB9zfpIbTJQM9JYaMYj-uLDxhUdnBQrD9fVRLE57nRD9B1-T4Z9wkK9WLFKOoqvU29mjCS1AdK_xWVJGSbcMfVycQb_FH5p2QN5zxCsvIabWCQiJyxQ2tV7rL95hNbgaPksAf4MpZ-U8", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Rjqru848FSM", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "Rjqru848FSM", + "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&siu=1&msp=1&odepv=1&id=463aabbbce3c1523&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "publishedTimeText": { + "simpleText": "Streamed 4 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/Rjqru848FSM/mqdefault_6s.webp?du=3000&sqp=CL_esLsG&rs=AOn4CLC1iiAb-g_tyVQRce3kqAqRRJB-lQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "643 views" + } + }, + "simpleText": "643 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/Rjqru848FSM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCFKDLckV8EpVpFWIkQxrM_wQhM3Q", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Rjqru848FSM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDPQ5Qm-1PQPt9C7jvbl3ZaVbTHVQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Rjqru848FSM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBV1vfzPucvSdGGiBuye62dnrdcyQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 hours, 5 minutes, 26 seconds" + } + }, + "simpleText": "2:05:26" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMkDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Rjqru848FSM" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CMkDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMkDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Rjqru848FSM" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CMgDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMgDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMgDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Rjqru848FSM" + ] + } + }, + "openMiniplayer": true, + "videoId": "Rjqru848FSM", + "videoIds": [ + "Rjqru848FSM" + ] + }, + "clickTrackingParams": "CMgDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Deep Dive w/ Tim: Working on LED_Animation GH Issues #circuitpython #adafruit by Adafruit Industries 643 views Streamed 4 days ago 2 hours, 5 minutes" + } + }, + "runs": [ + { + "text": "Deep Dive w/ Tim: Working on LED_Animation GH Issues #circuitpython #adafruit" + } + ] + }, + "trackingParams": "CMcDENwwIhMInfL4orPDigMVbHR6BR25GwwEQKOq8PG896qdRg==", + "videoId": "Rjqru848FSM", + "viewCountText": { + "simpleText": "643 views" + } + } + }, + "trackingParams": "CMYDEJmNBRg6IhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/JUvHJvdoccdG9aX_h9gOovEoMOT9gDquwjWpN_zEwv75ENRJns35kLZuUsr-Ft3oXdh8ciG6TQ=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCtOcDBKgyr-f50SgbMErFkQ" + }, + "clickTrackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtOcDBKgyr-f50SgbMErFkQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCtOcDBKgyr-f50SgbMErFkQ" + }, + "clickTrackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtOcDBKgyr-f50SgbMErFkQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/JUvHJvdoccdG9aX_h9gOovEoMOT9gDquwjWpN_zEwv75ENRJns35kLZuUsr-Ft3oXdh8ciG6TQ=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "#BINI : Our cutesy animated BINI is spreading joy-joy-joy to the world, but real-life BINI is bringing the LOLs w/ their reactions!🎄😂\n\nWho’s fangirling over their cartoon selves the..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=a-TF1iOUYhU&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "a-TF1iOUYhU", + "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&siu=1&msp=1&odepv=1&id=6be4c5d623946215&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 2 seconds" + } + }, + "simpleText": "4:02" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCtOcDBKgyr-f50SgbMErFkQ", + "canonicalBaseUrl": "/channel/UCtOcDBKgyr-f50SgbMErFkQ" + }, + "clickTrackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtOcDBKgyr-f50SgbMErFkQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "BINI Official" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMUDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMUDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "a-TF1iOUYhU" + ] + } + }, + "openMiniplayer": true, + "videoId": "a-TF1iOUYhU", + "videoIds": [ + "a-TF1iOUYhU" + ] + }, + "clickTrackingParams": "CMUDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMUDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "a-TF1iOUYhU" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "a-TF1iOUYhU" + }, + "clickTrackingParams": "CMQDEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMQDEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMMDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CMMDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "a-TF1iOUYhU" + } + }, + "videoId": "a-TF1iOUYhU" + } + }, + "trackingParams": "CMMDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CMIDEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgthLVRGMWlPVVloVQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMEDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMEDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "a-TF1iOUYhU", + "undoToken": "AB9zfpJcoVfQNhTheqUyQJ2L61pYdlP1_q3nc6l2ualZE0evkker-aOXpNRfm7HgzOGuBoYaW_BllGZ4EMKlt08XkldBVzcBMc5LMvCjne3zHPqP98pRg-BquUtFp1Mx3rbYSggZV8t2" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CMEDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CMADEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "a-TF1iOUYhU", + "feedbackToken": "AB9zfpKXLIaEvQBh_bYaXYukdo2LayPyKYWc5IOPKuhIRV1rElxO1Z8gq_rt7v7ZmbfFhxWcyT5wScOmI4MEUFnaN1r-Y-09lo8inlHBTqvvBlhx3qqb5EBhotBPBh04JtfInEmBNK8n", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=a-TF1iOUYhU", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "a-TF1iOUYhU", + "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&siu=1&msp=1&odepv=1&id=6be4c5d623946215&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCtOcDBKgyr-f50SgbMErFkQ", + "canonicalBaseUrl": "/channel/UCtOcDBKgyr-f50SgbMErFkQ" + }, + "clickTrackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtOcDBKgyr-f50SgbMErFkQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "BINI Official" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/a-TF1iOUYhU/mqdefault_6s.webp?du=3000&sqp=CMbjsLsG&rs=AOn4CLAeZAB2OU-3UIAONd7AerdflyL19Q", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCtOcDBKgyr-f50SgbMErFkQ", + "canonicalBaseUrl": "/channel/UCtOcDBKgyr-f50SgbMErFkQ" + }, + "clickTrackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtOcDBKgyr-f50SgbMErFkQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "BINI Official" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "171K views" + } + }, + "simpleText": "171K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/a-TF1iOUYhU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDUsscy52tIsOi2nGDimScSz1FeqQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/a-TF1iOUYhU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDhLdpw6TuCfKCY-Gl9raxasfDpmQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/a-TF1iOUYhU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC46netzz54xcNOUiCrggNcu0S7JQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 2 seconds" + } + }, + "simpleText": "4:02" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CL8DEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "a-TF1iOUYhU" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CL8DEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CL8DEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "a-TF1iOUYhU" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CL4DEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CL4DEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CL4DEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "a-TF1iOUYhU" + ] + } + }, + "openMiniplayer": true, + "videoId": "a-TF1iOUYhU", + "videoIds": [ + "a-TF1iOUYhU" + ] + }, + "clickTrackingParams": "CL4DEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "#BINI : BINI Reacts to “Joy To The World” Official Video by BINI Official 171,186 views 4 days ago 4 minutes, 2 seconds" + } + }, + "runs": [ + { + "text": "#BINI : BINI Reacts to “Joy To The World” Official Video" + } + ] + }, + "trackingParams": "CL0DENwwIhMInfL4orPDigMVbHR6BR25GwwEQJXE0ZziurHyaw==", + "videoId": "a-TF1iOUYhU", + "viewCountText": { + "simpleText": "171,186 views" + } + } + }, + "trackingParams": "CLwDEJmNBRg7IhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "현진(Hyunjin) \"So Good\" | [Stray Kids(스트레이 키즈) : SKZ-PLAYER(슼즈 플레이어)]\n\nListen to \"合 (HOP)\" now💦\nhttps://Stray-Kids.lnk.to/HOP\n\nListen to \"Walkin On Water (Remixes)\"..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=3yp17XEP5ck&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "3yp17XEP5ck", + "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&siu=1&msp=1&odepv=1&id=df2a75ed710fe5c9&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 52 seconds" + } + }, + "simpleText": "2:52" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLsDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLsDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "3yp17XEP5ck" + ] + } + }, + "openMiniplayer": true, + "videoId": "3yp17XEP5ck", + "videoIds": [ + "3yp17XEP5ck" + ] + }, + "clickTrackingParams": "CLsDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLsDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "3yp17XEP5ck" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "3yp17XEP5ck" + }, + "clickTrackingParams": "CLoDEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLoDEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLkDENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CLkDENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "3yp17XEP5ck" + } + }, + "videoId": "3yp17XEP5ck" + } + }, + "trackingParams": "CLkDENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CLgDEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgszeXAxN1hFUDVjaw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLcDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLcDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "3yp17XEP5ck", + "undoToken": "AB9zfpINYWa3Sep2fWzgUJXJ8FOQsFhAjpGcw754TnuIAVhD21-5SAC0fkTX4m91JSAXBd3dNgxfRkGc9FCigumx4Dl280SFSJktQZiJemst6Hhkncvah_zi5xIx3eSPjVW3KxIZPKhU" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CLcDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CLYDEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "3yp17XEP5ck", + "feedbackToken": "AB9zfpJ5hT36-pJrAR7sHQe9iDpdyLdLv1KT3RyqirTzMAJ7uuzIfqIpbklRTRO54f7tRH6ut5Frt-rlrGxjH9StY_Fmc6hewqWnfkIYETowFDDgao-5SP3eS-SB873--wVEtlRhCeOR", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=3yp17XEP5ck", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "3yp17XEP5ck", + "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&siu=1&msp=1&odepv=1&id=df2a75ed710fe5c9&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "3.2 million views" + } + }, + "simpleText": "3.2M views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/3yp17XEP5ck/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBTkt6iX3pSwpFTRDPFEy4UDre5LA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/3yp17XEP5ck/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLApR_2NODAeQLkfaDiOslNUbdDajg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/3yp17XEP5ck/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB2jJwPxRNHYyh35QfUzRN-EoJ-rA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 52 seconds" + } + }, + "simpleText": "2:52" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLUDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "3yp17XEP5ck" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CLUDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLUDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "3yp17XEP5ck" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CLQDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLQDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLQDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "3yp17XEP5ck" + ] + } + }, + "openMiniplayer": true, + "videoId": "3yp17XEP5ck", + "videoIds": [ + "3yp17XEP5ck" + ] + }, + "clickTrackingParams": "CLQDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Hyunjin \"So Good\" | [Stray Kids : SKZ-PLAYER] by Stray Kids 3,257,760 views 4 days ago 2 minutes, 52 seconds" + } + }, + "runs": [ + { + "text": "Hyunjin \"So Good\" | [Stray Kids : SKZ-PLAYER]" + } + ] + }, + "trackingParams": "CLMDENwwIhMInfL4orPDigMVbHR6BR25GwwEQMnLv4jXvZ2V3wE=", + "videoId": "3yp17XEP5ck", + "viewCountText": { + "simpleText": "3,257,760 views" + } + } + }, + "trackingParams": "CLIDEJmNBRg8IhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/qhmEoqhG9u8lCm3NgdJc1hJ4yZYBPCZ8l2J-ia6cf_gSsnuFLo1sM_NUmFn48oPRAiJIkNUo=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCtiObj3CsEAdNU6ZPWDsddQ" + }, + "clickTrackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCtiObj3CsEAdNU6ZPWDsddQ" + }, + "clickTrackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/qhmEoqhG9u8lCm3NgdJc1hJ4yZYBPCZ8l2J-ia6cf_gSsnuFLo1sM_NUmFn48oPRAiJIkNUo=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Connect with TOMORROW X TOGETHER:\nhttps://txt.ibighit.com\nhttps://x.com/TXT_bighit\nhttps://x.com/TXT_members \nhttps://x.com/TXT_bighit_jp\nhttps://www.facebook.com/TXT.bighit\nhttps://www.instagram.c..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=x2zuG__aGXU&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "x2zuG__aGXU", + "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&siu=1&msp=1&odepv=1&id=c76cee1bffda1975&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "12 minutes, 19 seconds" + } + }, + "simpleText": "12:19" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCtiObj3CsEAdNU6ZPWDsddQ", + "canonicalBaseUrl": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ" + }, + "clickTrackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "TOMORROW X TOGETHER OFFICIAL" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLEDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLEDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "x2zuG__aGXU" + ] + } + }, + "openMiniplayer": true, + "videoId": "x2zuG__aGXU", + "videoIds": [ + "x2zuG__aGXU" + ] + }, + "clickTrackingParams": "CLEDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLEDEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "x2zuG__aGXU" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "x2zuG__aGXU" + }, + "clickTrackingParams": "CLADEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLADEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CK8DENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CK8DENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "x2zuG__aGXU" + } + }, + "videoId": "x2zuG__aGXU" + } + }, + "trackingParams": "CK8DENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CK4DEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgt4Mnp1R19fYUdYVQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CK0DEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CK0DEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "x2zuG__aGXU", + "undoToken": "AB9zfpKF_ERZsgyIRjUX9FUahPqTchdMMO-lFQBLFNw4DbiBMqW7jH7aVmAXR6k7FWzGao67flDrXlnc5ZPtmzubdoQB5R59nN3eBm8h04qaUNuD9kiiwNmfQetkpPXf-Z3mFf7Nz1zf" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CK0DEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CKwDEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "x2zuG__aGXU", + "feedbackToken": "AB9zfpKKJAfRsrTHlbp7atFU4YJamCV1gZeSbE8MlG6pcDxieiNQ5ksK77yyQ-aDcAkHlzNl2YPT-DGOjHIefF8U9hhxy84TtVYsyKxfNG4f-bCd-CSpVEoqpFyaghN33sZEPai_GZJN", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=x2zuG__aGXU", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "x2zuG__aGXU", + "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&siu=1&msp=1&odepv=1&id=c76cee1bffda1975&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCtiObj3CsEAdNU6ZPWDsddQ", + "canonicalBaseUrl": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ" + }, + "clickTrackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "TOMORROW X TOGETHER OFFICIAL" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/x2zuG__aGXU/mqdefault_6s.webp?du=3000&sqp=CMHzsLsG&rs=AOn4CLCpmAUwrjjybwOgfYLfuLcxJP0LJA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCtiObj3CsEAdNU6ZPWDsddQ", + "canonicalBaseUrl": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ" + }, + "clickTrackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCtiObj3CsEAdNU6ZPWDsddQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "TOMORROW X TOGETHER OFFICIAL" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "146K views" + } + }, + "simpleText": "146K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/x2zuG__aGXU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCpAPPB94Ad668ASGZQvMbtvjj0aA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/x2zuG__aGXU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAwfeRmYTDNr-Zvfw5yN6hDsZQc7A", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/x2zuG__aGXU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDaiR-P3QBWP1IKdcOKmEqV8_RtVQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "12 minutes, 19 seconds" + } + }, + "simpleText": "12:19" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKsDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "x2zuG__aGXU" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CKsDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKsDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "x2zuG__aGXU" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CKoDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKoDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKoDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "x2zuG__aGXU" + ] + } + }, + "openMiniplayer": true, + "videoId": "x2zuG__aGXU", + "videoIds": [ + "x2zuG__aGXU" + ] + }, + "clickTrackingParams": "CKoDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "The Star Chapter: Sanctuary Challenge Shoot Sketch | T:TIME | TXT (투모로우바이투게더) by TOMORROW X TOGETHER OFFICIAL 146,994 views 4 days ago 12 minutes, 19 seconds" + } + }, + "runs": [ + { + "text": "The Star Chapter: Sanctuary Challenge Shoot Sketch | T:TIME | TXT (투모로우바이투게더)" + } + ] + }, + "trackingParams": "CKkDENwwIhMInfL4orPDigMVbHR6BR25GwwEQPWy6P6_w7u2xwE=", + "videoId": "x2zuG__aGXU", + "viewCountText": { + "simpleText": "146,994 views" + } + } + }, + "trackingParams": "CKgDEJmNBRg9IhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Presented By\n\"THE COLLAB X\"\n \nArtists:\nIVE x DAVID GUETTA x BE@RBRICK\n \nProduced by:\nE2W GROUP\nMOVE INTERACTIVE\nExecutive Producer:\nDaniel Kim, Dennis Kim\nCG Director:\nVictor Choi\nLicensed..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=eOSX4WPiokI&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "eOSX4WPiokI", + "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&siu=1&msp=1&odepv=1&id=78e497e163e2a242&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "23 seconds" + } + }, + "simpleText": "0:23" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKcDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "eOSX4WPiokI" + ] + } + }, + "openMiniplayer": true, + "videoId": "eOSX4WPiokI", + "videoIds": [ + "eOSX4WPiokI" + ] + }, + "clickTrackingParams": "CKcDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKcDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "eOSX4WPiokI" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "eOSX4WPiokI" + }, + "clickTrackingParams": "CKYDEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKYDEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKUDENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CKUDENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "eOSX4WPiokI" + } + }, + "videoId": "eOSX4WPiokI" + } + }, + "trackingParams": "CKUDENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CKQDEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtlT1NYNFdQaW9rSQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKMDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKMDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "eOSX4WPiokI", + "undoToken": "AB9zfpK-EOHyfjuyVNIfrbFxcW994H4RA8lpGSX1nqSrpTDeukm90TBcfmPlpk-wb2o_0Ul18zhlZhFJsrYJpTjZS2AMssouCYbLfm_eT5lGDNznY_qggB15PWtohLtCbL__DkerJVK_MRsE-olVoYy5Sx6dQfvb4Q" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CKMDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CKIDEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "eOSX4WPiokI", + "feedbackToken": "AB9zfpKTE6AT1_jNDo9Oa3JzKEv7SAcMWFYgVb-h-3-EYNdYEAoIO57vTKEX6603iNcYTMrBYrCV-DhaVzEZbDpQSkXAaNjRIqWXBjT-ylz5vauzXG0irPnvyFHMwmBujcvou42VOyLe", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=eOSX4WPiokI", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "eOSX4WPiokI", + "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&siu=1&msp=1&odepv=1&id=78e497e163e2a242&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "60K views" + } + }, + "simpleText": "60K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/eOSX4WPiokI/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAGfhoVF6fcdM3eqt04fJtNh34Pcg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/eOSX4WPiokI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBhAts6rQEfdSl_dHr9KnMY7IaJYA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/eOSX4WPiokI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBvlj7qCSekcp-fdMGyjnic9LRIuw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "23 seconds" + } + }, + "simpleText": "0:23" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKEDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "eOSX4WPiokI" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CKEDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKEDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "eOSX4WPiokI" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CKADEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKADEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKADEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "eOSX4WPiokI" + ] + } + }, + "openMiniplayer": true, + "videoId": "eOSX4WPiokI", + "videoIds": [ + "eOSX4WPiokI" + ] + }, + "clickTrackingParams": "CKADEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "[Teaser] IVE, David Guetta, BE@RBRICK 'Supernova Love' by IVE 60,749 views 4 days ago 23 seconds" + } + }, + "runs": [ + { + "text": "[Teaser] IVE, David Guetta, BE@RBRICK 'Supernova Love'" + } + ] + }, + "trackingParams": "CJ8DENwwIhMInfL4orPDigMVbHR6BR25GwwEQMLEip-W_KXyeA==", + "videoId": "eOSX4WPiokI", + "viewCountText": { + "simpleText": "60,749 views" + } + } + }, + "trackingParams": "CJ4DEJmNBRg-IhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Save 10% and get free shipping at Ridge by using the code WAN at https://www.ridge.com/wan\n\nGo to http://rocketmoney.com/wan to cancel your unwanted subscriptions with Rocket Money.\n\nTry Pulseway..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=pF-1W-JxXSc&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "pF-1W-JxXSc", + "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&siu=1&msp=1&odepv=1&id=a45fb55be2715d27&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 hours, 58 minutes, 34 seconds" + } + }, + "simpleText": "2:58:34" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0DEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJ0DEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "pF-1W-JxXSc" + ] + } + }, + "openMiniplayer": true, + "videoId": "pF-1W-JxXSc", + "videoIds": [ + "pF-1W-JxXSc" + ] + }, + "clickTrackingParams": "CJ0DEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJ0DEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "pF-1W-JxXSc" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "pF-1W-JxXSc" + }, + "clickTrackingParams": "CJwDEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJwDEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJsDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CJsDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "pF-1W-JxXSc" + } + }, + "videoId": "pF-1W-JxXSc" + } + }, + "trackingParams": "CJsDENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CJoDEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtwRi0xVy1KeFhTYw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJkDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJkDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "pF-1W-JxXSc", + "undoToken": "AB9zfpKVqelKGatlJ2UUb0bl8wL0wCdJhsFDs0kRgUx_oF4IVEsqtEM639AqDNez9BXvUicYnlc-w0V7wquM36OzMRJ65U3MWaoHwJClmzgjDmxD6aixrMIO2-LJoELtTdqEqYAQ6DFG" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJkDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJgDEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "pF-1W-JxXSc", + "feedbackToken": "AB9zfpIQAV2afJ0b_MvFSDruPxN5tFBjAibnf_uvaNQi7hkzplJNGmdAxT7GV-Xe6m0QypzMVC45gyWV6rV5f4uhecRKNdKx17X0uEO-f__SLxcyVrTVqSoAIVW5rmXpRhkb42uyQ6sM", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=pF-1W-JxXSc", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "pF-1W-JxXSc", + "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&siu=1&msp=1&odepv=1&id=a45fb55be2715d27&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "publishedTimeText": { + "simpleText": "Streamed 4 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/pF-1W-JxXSc/mqdefault_6s.webp?du=3000&sqp=CM_QsLsG&rs=AOn4CLDU5VAXV9qOWZmhohAXYAlxluvMUg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "470K views" + } + }, + "simpleText": "470K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/pF-1W-JxXSc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQGseaAKrlViBLDXNzB3lUcU451Q", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/pF-1W-JxXSc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA38E2YmWzRY5q9c4L1SRM3KJGSJg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/pF-1W-JxXSc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC4bN0T7EfkvKsYM6SLy70oL66B0A", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 hours, 58 minutes, 34 seconds" + } + }, + "simpleText": "2:58:34" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJcDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "pF-1W-JxXSc" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CJcDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJcDEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "pF-1W-JxXSc" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CJYDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJYDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJYDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "pF-1W-JxXSc" + ] + } + }, + "openMiniplayer": true, + "videoId": "pF-1W-JxXSc", + "videoIds": [ + "pF-1W-JxXSc" + ] + }, + "clickTrackingParams": "CJYDEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "I’ve Got 99 Problems - WAN Show December 20, 2024 by Linus Tech Tips 470,247 views Streamed 4 days ago 2 hours, 58 minutes" + } + }, + "runs": [ + { + "text": "I’ve Got 99 Problems - WAN Show December 20, 2024" + } + ] + }, + "trackingParams": "CJUDENwwIhMInfL4orPDigMVbHR6BR25GwwEQKe6xZO-q-2vpAE=", + "videoId": "pF-1W-JxXSc", + "viewCountText": { + "simpleText": "470,247 views" + } + } + }, + "trackingParams": "CJQDEJmNBRg_IhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "A Christmas Story around the fire." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=PxUKjvZesTw&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "PxUKjvZesTw", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=3f150a8ef65eb13c&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 25 seconds" + } + }, + "simpleText": "4:25" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJMDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJMDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "PxUKjvZesTw" + ] + } + }, + "openMiniplayer": true, + "videoId": "PxUKjvZesTw", + "videoIds": [ + "PxUKjvZesTw" + ] + }, + "clickTrackingParams": "CJMDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJMDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "PxUKjvZesTw" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "PxUKjvZesTw" + }, + "clickTrackingParams": "CJIDEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJIDEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJEDENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CJEDENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "PxUKjvZesTw" + } + }, + "videoId": "PxUKjvZesTw" + } + }, + "trackingParams": "CJEDENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CJADEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtQeFVLanZaZXNUdw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CI8DEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CI8DEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "PxUKjvZesTw", + "undoToken": "AB9zfpKQsez8v5bp7bWav-MA1OTJ70yZ7AAijc4umSkVxV5IA3_9lm7Gp3Hl0Tq9imbrwvSbms7GR1ajPSlxh_oxVFjsysZ08JtBx6psDc8Y4bzBArgq942VrJrVF8AyWlYrFv8F4W8n" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CI8DEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CI4DEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "PxUKjvZesTw", + "feedbackToken": "AB9zfpJq_3XODrBd-iazvlWnPUNMX_C5OmBYiQdngZKJ9U5iR4gg4jCdXA2DGvovRRmZwqtXxfc-fjJIdktQOB23oZ5rzLTvX6RZ3x_clq22TWuXeNa2wZR7O5Utn4dhMMzErugp7Lye", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=PxUKjvZesTw", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "PxUKjvZesTw", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=3f150a8ef65eb13c&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/PxUKjvZesTw/mqdefault_6s.webp?du=3000&sqp=CNjTsLsG&rs=AOn4CLA1MCfWK57dLmWM-k5hXtRj8fB-fw", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "50K views" + } + }, + "simpleText": "50K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/PxUKjvZesTw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBIwFx-QOAbaWCo4UABLYTsNwCkbw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/PxUKjvZesTw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAbQ2ziJaDHsGB3QLBOzVt-4vEmVg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/PxUKjvZesTw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA51ExwFf76E68yX0bDREv1wyjSag", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 25 seconds" + } + }, + "simpleText": "4:25" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CI0DEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "PxUKjvZesTw" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CI0DEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CI0DEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "PxUKjvZesTw" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CIwDEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIwDEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIwDEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "PxUKjvZesTw" + ] + } + }, + "openMiniplayer": true, + "videoId": "PxUKjvZesTw", + "videoIds": [ + "PxUKjvZesTw" + ] + }, + "clickTrackingParams": "CIwDEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "cAvEman TV || Remittance Men by AvE 50,997 views 4 days ago 4 minutes, 25 seconds" + } + }, + "runs": [ + { + "text": "cAvEman TV || Remittance Men" + } + ] + }, + "trackingParams": "CIsDENwwIhMInfL4orPDigMVbHR6BR25GwwEQLzi-rLv0cKKPw==", + "videoId": "PxUKjvZesTw", + "viewCountText": { + "simpleText": "50,997 views" + } + } + }, + "trackingParams": "CIoDEJmNBRhAIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Knife here: https://aveworkshop.myshopify.com/" + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=gs1g-z8ZLcY&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "gs1g-z8ZLcY", + "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&siu=1&msp=1&odepv=1&id=82cd60fb3f192dc6&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "7 minutes, 11 seconds" + } + }, + "simpleText": "7:11" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIkDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "gs1g-z8ZLcY" + ] + } + }, + "openMiniplayer": true, + "videoId": "gs1g-z8ZLcY", + "videoIds": [ + "gs1g-z8ZLcY" + ] + }, + "clickTrackingParams": "CIkDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIkDEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "gs1g-z8ZLcY" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "gs1g-z8ZLcY" + }, + "clickTrackingParams": "CIgDEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CIgDEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIcDENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CIcDENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "gs1g-z8ZLcY" + } + }, + "videoId": "gs1g-z8ZLcY" + } + }, + "trackingParams": "CIcDENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CIYDEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtnczFnLXo4WkxjWQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIUDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIUDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "gs1g-z8ZLcY", + "undoToken": "AB9zfpIU7OKjUC0_o-XdX7rBHjMR8VchF6AmkCYMjdplrBBGP3AzSO6j1koNn63NAa6DDHBIMk_1dN6fRPYfPvVqBSLFapDxcJjWCH-9rUM7QtI9jrT4qJI2uBDzt9TAq-evzw-WLnpm" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CIUDEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CIQDEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "gs1g-z8ZLcY", + "feedbackToken": "AB9zfpJrkSdMWt1wzxLf2HFV22dj6vmE9cjjENjgxOaKCuj-Cts3NQD3I52XPxKlyE32ekaRvhQyBOGxD40ZFypUDLbVFiDrpnST2Vcl9QOMuON8fo9t1_IZ5EVNYR7FTjOaJWHckpTx", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=gs1g-z8ZLcY", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "gs1g-z8ZLcY", + "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&siu=1&msp=1&odepv=1&id=82cd60fb3f192dc6&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/gs1g-z8ZLcY/mqdefault_6s.webp?du=3000&sqp=CNjTsLsG&rs=AOn4CLD6x8EI-mGuTX6KLs8WAHug8GBBhg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + }, + "clickTrackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AvE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "30K views" + } + }, + "simpleText": "30K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/gs1g-z8ZLcY/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDx3JslzGomnKFgAZZM-6CbmKP-Cg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/gs1g-z8ZLcY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDndh5LZHYfsdYrBd9SQvU9tzspGg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/gs1g-z8ZLcY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBgKnDcPbAR4UQvIhCDGXB00yX7mw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "7 minutes, 11 seconds" + } + }, + "simpleText": "7:11" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIMDEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "gs1g-z8ZLcY" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CIMDEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIMDEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "gs1g-z8ZLcY" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CIIDEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIIDEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIIDEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "gs1g-z8ZLcY" + ] + } + }, + "openMiniplayer": true, + "videoId": "gs1g-z8ZLcY", + "videoIds": [ + "gs1g-z8ZLcY" + ] + }, + "clickTrackingParams": "CIIDEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "AvE Knife || Quick-Start by AvE 30,134 views 4 days ago 7 minutes, 11 seconds" + } + }, + "runs": [ + { + "text": "AvE Knife || Quick-Start" + } + ] + }, + "trackingParams": "CIEDENwwIhMInfL4orPDigMVbHR6BR25GwwEQMbb5Pizn9jmggE=", + "videoId": "gs1g-z8ZLcY", + "viewCountText": { + "simpleText": "30,134 views" + } + } + }, + "trackingParams": "CIADEJmNBRhBIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "CD Projekt Red's franchise and lore designer has been exposed for being woke and hating gamers. This adds more concern about the lore of Witcher 4 being corrupted.\n\nMerch: https://uwumarket.us/coll..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=dWYSIw8AYQY&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "dWYSIw8AYQY", + "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&siu=1&msp=1&odepv=1&id=756612230f006106&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "15 minutes, 47 seconds" + } + }, + "simpleText": "15:47" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8CEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CP8CEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "dWYSIw8AYQY" + ] + } + }, + "openMiniplayer": true, + "videoId": "dWYSIw8AYQY", + "videoIds": [ + "dWYSIw8AYQY" + ] + }, + "clickTrackingParams": "CP8CEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CP8CEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "dWYSIw8AYQY" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "dWYSIw8AYQY" + }, + "clickTrackingParams": "CP4CEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CP4CEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CP0CENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CP0CENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "dWYSIw8AYQY" + } + }, + "videoId": "dWYSIw8AYQY" + } + }, + "trackingParams": "CP0CENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CPwCEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtkV1lTSXc4QVlRWQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPsCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPsCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "dWYSIw8AYQY", + "undoToken": "AB9zfpLSWX6gY-joGl7WmI87QWDdj7OHOv_Zs-qXUxS3r2wAMSGhdXZmRlz5obk7ViI-7hKj4mekAHLUidVJTJSZLzDO24_u6utKJ-fiiuC-LLFa9lPcw9FmSKAnQ_KYaaXoMNl-UkCm" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CPsCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CPoCEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "dWYSIw8AYQY", + "feedbackToken": "AB9zfpL2gVIN-k67zNqy_jRZQSt7xkttnhthVaf3FHwspDcBIIWSTM8QS5KSaSlsxXJTHCpucrfGWd7-gZDC54ceWRyEms4-MPTMqqzpQfgI2MgoltQ120Hae6DMcJIEKO4sUXV56vYb", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=dWYSIw8AYQY", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "dWYSIw8AYQY", + "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&siu=1&msp=1&odepv=1&id=756612230f006106&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/dWYSIw8AYQY/mqdefault_6s.webp?du=3000&sqp=CLbcsLsG&rs=AOn4CLAOfFprrJqjcASVaQb7GWwMxn2YCA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "81K views" + } + }, + "simpleText": "81K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/dWYSIw8AYQY/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDEWSh3FGkRPMX106nbaZw7LcTLWw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/dWYSIw8AYQY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCo-R7WSjd46TEDAZMF_JMIOTmsXw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/dWYSIw8AYQY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDMjxjOY0vZXNyYditAPG-7o4C7og", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "15 minutes, 47 seconds" + } + }, + "simpleText": "15:47" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPkCEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "dWYSIw8AYQY" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CPkCEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPkCEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "dWYSIw8AYQY" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CPgCEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPgCEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPgCEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "dWYSIw8AYQY" + ] + } + }, + "openMiniplayer": true, + "videoId": "dWYSIw8AYQY", + "videoIds": [ + "dWYSIw8AYQY" + ] + }, + "clickTrackingParams": "CPgCEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Woke CDPR Lore Designer Exposed For Hating Gamers As Concerns About \"Witcher 4\" Grow by Rev says desu 81,964 views 4 days ago 15 minutes" + } + }, + "runs": [ + { + "text": "Woke CDPR Lore Designer Exposed For Hating Gamers As Concerns About \"Witcher 4\" Grow" + } + ] + }, + "trackingParams": "CPcCENwwIhMInfL4orPDigMVbHR6BR25GwwEQIbCgfiwxISzdQ==", + "videoId": "dWYSIw8AYQY", + "viewCountText": { + "simpleText": "81,964 views" + } + } + }, + "trackingParams": "CPYCEJmNBRhCIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_kMwLH77YtyKHVCbKrQfzYYFSc4IQ5e5mILkvgvXSP0UpA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCcmxOGYGF51T1XsqQLewGtQ", + "canonicalBaseUrl": "/@TrashTaste" + }, + "clickTrackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TrashTaste", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCcmxOGYGF51T1XsqQLewGtQ", + "canonicalBaseUrl": "/@TrashTaste" + }, + "clickTrackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TrashTaste", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_kMwLH77YtyKHVCbKrQfzYYFSc4IQ5e5mILkvgvXSP0UpA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "🥤Buy Waifu Cups at https://gamersupps.gg/TrashTaste with code [trashtaste]\n\nSupport Us On Patreon:\nhttps://www.patreon.com/trashtaste\n\nFollow Trash Taste:\nhttps://twitter.com/TrashTastePod..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=QULJ0ScQEoc&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "QULJ0ScQEoc", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=4142c9d127101287&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 hour, 53 minutes, 35 seconds" + } + }, + "simpleText": "1:53:35" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCcmxOGYGF51T1XsqQLewGtQ", + "canonicalBaseUrl": "/@TrashTaste" + }, + "clickTrackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TrashTaste", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Trash Taste" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPUCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPUCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "QULJ0ScQEoc" + ] + } + }, + "openMiniplayer": true, + "videoId": "QULJ0ScQEoc", + "videoIds": [ + "QULJ0ScQEoc" + ] + }, + "clickTrackingParams": "CPUCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPUCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "QULJ0ScQEoc" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "QULJ0ScQEoc" + }, + "clickTrackingParams": "CPQCEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CPQCEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPMCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CPMCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "QULJ0ScQEoc" + } + }, + "videoId": "QULJ0ScQEoc" + } + }, + "trackingParams": "CPMCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CPICEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtRVUxKMFNjUUVvYw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPECEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPECEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "QULJ0ScQEoc", + "undoToken": "AB9zfpKe1c6--fG7TUIm5PnPFRJIzCnUZMuh-1o0EfpNYLDRhfDTs0DGr3mGqcsVDwhOXljZNIoSXRHbn_ocgsrxEUpoSaH7RSPQdA3RBsUsu-YN-Khx6LO30QqvlJOpTszNguEnxybo" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CPECEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CPACEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "QULJ0ScQEoc", + "feedbackToken": "AB9zfpJB-1349TIo83A1-jU0b2Xy1sqyfpb5WQ83QMT4s9JKCF_3_8ECdGU575N6EXBf1Jd0kp3XaFmC7YrAZigUdochnf71K1k2yLwmrt-_woGCwuNW1PFfKnaP7Nx2kSm8_yX6FaYu", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=QULJ0ScQEoc", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "QULJ0ScQEoc", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=4142c9d127101287&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCcmxOGYGF51T1XsqQLewGtQ", + "canonicalBaseUrl": "/@TrashTaste" + }, + "clickTrackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TrashTaste", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Trash Taste" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/QULJ0ScQEoc/mqdefault_6s.webp?du=3000&sqp=CMvcsLsG&rs=AOn4CLCHtCSsCbhb7xTg3kIzBOKb2pG6tw", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCcmxOGYGF51T1XsqQLewGtQ", + "canonicalBaseUrl": "/@TrashTaste" + }, + "clickTrackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TrashTaste", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Trash Taste" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "363K views" + } + }, + "simpleText": "363K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/QULJ0ScQEoc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBEZYJaPdWfqdBL35yHHn-wJ_N0rw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/QULJ0ScQEoc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD2ebMtvvxvjuwrzPImA3EtaaAjpQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/QULJ0ScQEoc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC59u2OWwbZgDdZc5e7sHOSpNFRqQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 hour, 53 minutes, 35 seconds" + } + }, + "simpleText": "1:53:35" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CO8CEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "QULJ0ScQEoc" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CO8CEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CO8CEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "QULJ0ScQEoc" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CO4CEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CO4CEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CO4CEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "QULJ0ScQEoc" + ] + } + }, + "openMiniplayer": true, + "videoId": "QULJ0ScQEoc", + "videoIds": [ + "QULJ0ScQEoc" + ] + }, + "clickTrackingParams": "CO4CEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Our Favorite Things of 2024 | Trash Taste #235 by Trash Taste 363,707 views 4 days ago 1 hour, 53 minutes" + } + }, + "runs": [ + { + "text": "Our Favorite Things of 2024 | Trash Taste #235" + } + ] + }, + "trackingParams": "CO0CENwwIhMInfL4orPDigMVbHR6BR25GwwEQIelwLiSurKhQQ==", + "videoId": "QULJ0ScQEoc", + "viewCountText": { + "simpleText": "363,707 views" + } + } + }, + "trackingParams": "COwCEJmNBRhDIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/6pPZQkBWoQ-UAu5sT-Z47ID6vhPr-nnfziSpR84unn9vsDUzz5_iNS3WkuXSdKUKhkVGQerE=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/6pPZQkBWoQ-UAu5sT-Z47ID6vhPr-nnfziSpR84unn9vsDUzz5_iNS3WkuXSdKUKhkVGQerE=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "This buying guide highlights our favorite equipment for achieving the ultimate Holiday breakfast. \n\nBuy our winning Breville Citrus Juicer: https://cooks.io/4ey7yU0\nBuy our best-buy Dash Citrus..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=xrjr1jYxuXE&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "xrjr1jYxuXE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=c6b8ebd63631b971&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 7 seconds" + } + }, + "simpleText": "4:07" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "America's Test Kitchen" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "COsCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COsCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "xrjr1jYxuXE" + ] + } + }, + "openMiniplayer": true, + "videoId": "xrjr1jYxuXE", + "videoIds": [ + "xrjr1jYxuXE" + ] + }, + "clickTrackingParams": "COsCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COsCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "xrjr1jYxuXE" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "xrjr1jYxuXE" + }, + "clickTrackingParams": "COoCEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "COoCEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COkCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "COkCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "xrjr1jYxuXE" + } + }, + "videoId": "xrjr1jYxuXE" + } + }, + "trackingParams": "COkCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "COgCEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgt4cmpyMWpZeHVYRQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COcCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COcCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "xrjr1jYxuXE", + "undoToken": "AB9zfpK34JOkz2ZMus6jz_tr7IL1sJSKtIstxXe8GoDIODYGNIFTTjApHFV9bykx6dlCHU9osx2RNRNVJuDyZhS8aoeT_OdrI8f_lupdWyWwsy7C5w6TLv8DpQXtJqcW9Akc7dPJzLLV" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "COcCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "COYCEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "xrjr1jYxuXE", + "feedbackToken": "AB9zfpJ8_8qpLIIxNwhptgBCiX-kmM7mxTNR4VCv_FlE6m7REd1OyZqGwcPkWkxW-hpOP8MUpjj1hLrby7yyaJR3UVD_myzGzblDq-tuYjdC7pFrnp-sef_vBIlcm5Yt-mhGDKeTgKuE", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=xrjr1jYxuXE", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "xrjr1jYxuXE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=c6b8ebd63631b971&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "America's Test Kitchen" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/xrjr1jYxuXE/mqdefault_6s.webp?du=3000&sqp=CIHhsLsG&rs=AOn4CLAZ9u84lRc5fAGU8NWs8RaPcpfPWA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + }, + "clickTrackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "America's Test Kitchen" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "40K views" + } + }, + "simpleText": "40K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/xrjr1jYxuXE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLALqJt3bI15Li56jhwIzuBWuVT7Bw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/xrjr1jYxuXE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCmjplNFxPKLQFjCOgYcxptKnkNtQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/xrjr1jYxuXE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCsoaQOYTOU_fsv2d0mp0PhVCJ6oA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 7 seconds" + } + }, + "simpleText": "4:07" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COUCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "xrjr1jYxuXE" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "COUCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COUCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "xrjr1jYxuXE" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "COQCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COQCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COQCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "xrjr1jYxuXE" + ] + } + }, + "openMiniplayer": true, + "videoId": "xrjr1jYxuXE", + "videoIds": [ + "xrjr1jYxuXE" + ] + }, + "clickTrackingParams": "COQCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Essential Tools for Breakfast | America's Test Kitchen (S24 E21) by America's Test Kitchen 40,010 views 4 days ago 4 minutes, 7 seconds" + } + }, + "runs": [ + { + "text": "Essential Tools for Breakfast | America's Test Kitchen (S24 E21)" + } + ] + }, + "trackingParams": "COMCENwwIhMInfL4orPDigMVbHR6BR25GwwEQPHyxrHj-rrcxgE=", + "videoId": "xrjr1jYxuXE", + "viewCountText": { + "simpleText": "40,010 views" + } + } + }, + "trackingParams": "COICEJmNBRhEIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/emA0C_i9tUyJgxrfVpJ31e0QCU2MlovjYvQkAC9mDuSJyhl6h8PkFj5-ozRzz2vFtpbnls8s1W4=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC0C-w0YjGpqDXGB8IHb662A" + }, + "clickTrackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0C-w0YjGpqDXGB8IHb662A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0C-w0YjGpqDXGB8IHb662A" + }, + "clickTrackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0C-w0YjGpqDXGB8IHb662A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/emA0C_i9tUyJgxrfVpJ31e0QCU2MlovjYvQkAC9mDuSJyhl6h8PkFj5-ozRzz2vFtpbnls8s1W4=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Under the Tree, from the Netflix film “That Christmas”, out now on Netflix. \n\nSingle out now: https://es.lnk.to/UnderTheTree \nWatch the official video: https://youtu.be/nBCkXe3ZfoI\n\nSubscribe..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=1wgVMVeb34A&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "1wgVMVeb34A", + "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&siu=1&msp=1&odepv=1&id=d7081531579bdf80&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 3 seconds" + } + }, + "simpleText": "4:03" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0C-w0YjGpqDXGB8IHb662A", + "canonicalBaseUrl": "/channel/UC0C-w0YjGpqDXGB8IHb662A" + }, + "clickTrackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0C-w0YjGpqDXGB8IHb662A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Ed Sheeran" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "COECEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COECEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "1wgVMVeb34A" + ] + } + }, + "openMiniplayer": true, + "videoId": "1wgVMVeb34A", + "videoIds": [ + "1wgVMVeb34A" + ] + }, + "clickTrackingParams": "COECEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COECEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "1wgVMVeb34A" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "1wgVMVeb34A" + }, + "clickTrackingParams": "COACEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "COACEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CN8CENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CN8CENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "1wgVMVeb34A" + } + }, + "videoId": "1wgVMVeb34A" + } + }, + "trackingParams": "CN8CENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CN4CEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgsxd2dWTVZlYjM0QQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CN0CEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CN0CEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "1wgVMVeb34A", + "undoToken": "AB9zfpKBVobrBHfDHjSD9YDmqcs44-2SnuIOEbVoFWcAArY--9g1MUk3YipVvrxGDJmF0qfQVG8KQSjo5gMXeSAifQ9AwbvwpTf5H-gNGgkvtlBSoN2Nt_6uaHDvbx_pbEfBqmhtiHu3" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CN0CEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CNwCEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "1wgVMVeb34A", + "feedbackToken": "AB9zfpKGrpaW2zq41CYnXaw4K8o9cI-f25yVnk0SabVRL8TxiPhSxoRHPpVF8jp9gdQUuvbloj5SR21wiEkJLbUvW8_2gfDr_18h43wwf7KyewzvpWF0a9Ftqs7RmiDYrxcgn4fm-YtR", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=1wgVMVeb34A", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "1wgVMVeb34A", + "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&siu=1&msp=1&odepv=1&id=d7081531579bdf80&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0C-w0YjGpqDXGB8IHb662A", + "canonicalBaseUrl": "/channel/UC0C-w0YjGpqDXGB8IHb662A" + }, + "clickTrackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0C-w0YjGpqDXGB8IHb662A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Ed Sheeran" + } + ] + }, + "publishedTimeText": { + "simpleText": "4 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0C-w0YjGpqDXGB8IHb662A", + "canonicalBaseUrl": "/channel/UC0C-w0YjGpqDXGB8IHb662A" + }, + "clickTrackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0C-w0YjGpqDXGB8IHb662A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Ed Sheeran" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "343K views" + } + }, + "simpleText": "343K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/1wgVMVeb34A/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDXtZI__wBhqILmipnEnGo3UOt4fA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/1wgVMVeb34A/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCzs1FvHxPlsqBPp1mmsgQzcq2mQg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/1wgVMVeb34A/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAUIQR_QDiGLjlul2Kf9i2LV8NzgQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 3 seconds" + } + }, + "simpleText": "4:03" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNsCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "1wgVMVeb34A" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CNsCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNsCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "1wgVMVeb34A" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CNoCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNoCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNoCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "1wgVMVeb34A" + ] + } + }, + "openMiniplayer": true, + "videoId": "1wgVMVeb34A", + "videoIds": [ + "1wgVMVeb34A" + ] + }, + "clickTrackingParams": "CNoCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Ed Sheeran - Under the Tree (from “That Christmas”) | Behind The Scenes by Ed Sheeran 343,347 views 4 days ago 4 minutes, 3 seconds" + } + }, + "runs": [ + { + "text": "Ed Sheeran - Under the Tree (from “That Christmas”) | Behind The Scenes" + } + ] + }, + "trackingParams": "CNkCENwwIhMInfL4orPDigMVbHR6BR25GwwEQIC_77yVpoWE1wE=", + "videoId": "1wgVMVeb34A", + "viewCountText": { + "simpleText": "343,347 views" + } + } + }, + "trackingParams": "CNgCEJmNBRhFIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/m8NTmy6jGdmct02X6EM3Lf_Q5uSzF4BkXn-5IJ5q7pWuHX-28HemhElO3ynyHQm60OzYT90M=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UChCWmgEgUXwS5QEZZ-iWN-Q" + }, + "clickTrackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChCWmgEgUXwS5QEZZ-iWN-Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChCWmgEgUXwS5QEZZ-iWN-Q" + }, + "clickTrackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChCWmgEgUXwS5QEZZ-iWN-Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/m8NTmy6jGdmct02X6EM3Lf_Q5uSzF4BkXn-5IJ5q7pWuHX-28HemhElO3ynyHQm60OzYT90M=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Stand By Me Out Now: https://lnk.to/CC_StandByMe\n\r\nFollow Cheat Codes:\r\nFacebook: https://www.facebook.com/cheatcodes\r\nTwitter: https://twitter.com/cheatcodesmusic\r\nInstagram: https://www.instagram..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=hk3_fFvRt34&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "hk3_fFvRt34", + "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&siu=1&msp=1&odepv=1&id=864dff7c5bd1b77e&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 11 seconds" + } + }, + "simpleText": "3:11" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChCWmgEgUXwS5QEZZ-iWN-Q", + "canonicalBaseUrl": "/channel/UChCWmgEgUXwS5QEZZ-iWN-Q" + }, + "clickTrackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChCWmgEgUXwS5QEZZ-iWN-Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Cheat Codes" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcCEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNcCEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "hk3_fFvRt34" + ] + } + }, + "openMiniplayer": true, + "videoId": "hk3_fFvRt34", + "videoIds": [ + "hk3_fFvRt34" + ] + }, + "clickTrackingParams": "CNcCEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNcCEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "hk3_fFvRt34" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "hk3_fFvRt34" + }, + "clickTrackingParams": "CNYCEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CNYCEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNUCENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CNUCENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "hk3_fFvRt34" + } + }, + "videoId": "hk3_fFvRt34" + } + }, + "trackingParams": "CNUCENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CNQCEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtoazNfZkZ2UnQzNA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNMCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNMCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "hk3_fFvRt34", + "undoToken": "AB9zfpJaClDfXCG8n3NFOMA0r0bVIRrngrcPDDDF70ovksMx-pBzRBF3d1kV3OGioJbp9YEH1JHg1OZuyEzlZutR7gxyV4pPXpFKna3PLfVSfloybZ_MRXB-cxyFjFpDNxczvTVPbldZ" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CNMCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CNICEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "hk3_fFvRt34", + "feedbackToken": "AB9zfpLC-iQ8XuS3uG4bDLSQIX2HdXkXL76OVZlaeEJQ7tlyMz-63M0sN-HF83GcWdtT6gsfHYOIbf9HHI1XuBX9haBl-VHh90n2shOpOjV3HRchCxvBv9qv630nixFKDy9s8sZbxxo5", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=hk3_fFvRt34", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "hk3_fFvRt34", + "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&siu=1&msp=1&odepv=1&id=864dff7c5bd1b77e&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChCWmgEgUXwS5QEZZ-iWN-Q", + "canonicalBaseUrl": "/channel/UChCWmgEgUXwS5QEZZ-iWN-Q" + }, + "clickTrackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChCWmgEgUXwS5QEZZ-iWN-Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Cheat Codes" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChCWmgEgUXwS5QEZZ-iWN-Q", + "canonicalBaseUrl": "/channel/UChCWmgEgUXwS5QEZZ-iWN-Q" + }, + "clickTrackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChCWmgEgUXwS5QEZZ-iWN-Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Cheat Codes" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "63K views" + } + }, + "simpleText": "63K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/hk3_fFvRt34/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLADC9m5DaMR11zDsHSOWCY_GMH59w", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/hk3_fFvRt34/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCc-gv7fWl5Z1-NOV2PPt7dcKSPjA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/hk3_fFvRt34/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD1_xdMp-KThU6_N7DrAu4XopigLQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 11 seconds" + } + }, + "simpleText": "3:11" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNECEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "hk3_fFvRt34" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CNECEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNECEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "hk3_fFvRt34" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CNACEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNACEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNACEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "hk3_fFvRt34" + ] + } + }, + "openMiniplayer": true, + "videoId": "hk3_fFvRt34", + "videoIds": [ + "hk3_fFvRt34" + ] + }, + "clickTrackingParams": "CNACEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Cheat Codes - Stand By Me (Official Music Video) by Cheat Codes 63,218 views 5 days ago 3 minutes, 11 seconds" + } + }, + "runs": [ + { + "text": "Cheat Codes - Stand By Me (Official Music Video)" + } + ] + }, + "trackingParams": "CM8CENwwIhMInfL4orPDigMVbHR6BR25GwwEQP7uxt7F7_-mhgE=", + "videoId": "hk3_fFvRt34", + "viewCountText": { + "simpleText": "63,218 views" + } + } + }, + "trackingParams": "CM4CEJmNBRhGIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Lilí and Miguel's peaceful escape is shattered when she's forced into a risky quest for the Tear of Fire diamond, risking everything to save her friends.\n\nWatch on Netflix: https://www.netflix.com..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=k4oI1nzcJIs&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "k4oI1nzcJIs", + "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&siu=1&msp=1&odepv=1&id=938a08d67cdc248b&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 42 seconds" + } + }, + "simpleText": "1:42" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0CEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CM0CEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "k4oI1nzcJIs" + ] + } + }, + "openMiniplayer": true, + "videoId": "k4oI1nzcJIs", + "videoIds": [ + "k4oI1nzcJIs" + ] + }, + "clickTrackingParams": "CM0CEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CM0CEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "k4oI1nzcJIs" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "k4oI1nzcJIs" + }, + "clickTrackingParams": "CMwCEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMwCEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMsCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CMsCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "k4oI1nzcJIs" + } + }, + "videoId": "k4oI1nzcJIs" + } + }, + "trackingParams": "CMsCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CMoCEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtrNG9JMW56Y0pJcw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMkCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMkCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "k4oI1nzcJIs", + "undoToken": "AB9zfpJ7JPaiMa5ZN-xTZs9KNkg-pw_y-SrCAqY13XluJamd9Ki3kv9olR0ZvDAS31gKjWZ3K9-EVUq0u_kGoQQYK4nQYilcpiN1fxBMT0lP-d40tLiNBj4NhE8ilxpoD6x4OATcN5NKGTwZPLx1ZdOPzR0WJIOTwA" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CMkCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CMgCEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "k4oI1nzcJIs", + "feedbackToken": "AB9zfpIIm0pEcB-h-g9ikPBQNIl1RgzHbBl06ThMU_LiSadXhxcqYYWw7J7JXPPUK5Bc0WnOI_0NXZZpqfMvw1fIcL8pJvmqR_33joZJhCz5YGFdjECi2ZI8vBoe1oyr_4tk0H2uS_5A", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=k4oI1nzcJIs", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "k4oI1nzcJIs", + "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&siu=1&msp=1&odepv=1&id=938a08d67cdc248b&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/k4oI1nzcJIs/mqdefault_6s.webp?du=3000&sqp=CNLQsLsG&rs=AOn4CLDuC5u9umrmmPB4lFO6472nuXwJDQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "79K views" + } + }, + "simpleText": "79K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/k4oI1nzcJIs/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCgTGucY6btlloskX2ZABmSatzikA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/k4oI1nzcJIs/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCGGTaXbYUoNi3aDW8NBezhu_gE_w", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/k4oI1nzcJIs/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBvzlmReF6iOtrLkXPpy6WjD3XlTg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 42 seconds" + } + }, + "simpleText": "1:42" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMcCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "k4oI1nzcJIs" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CMcCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMcCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "k4oI1nzcJIs" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CMYCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMYCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMYCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "k4oI1nzcJIs" + ] + } + }, + "openMiniplayer": true, + "videoId": "k4oI1nzcJIs", + "videoIds": [ + "k4oI1nzcJIs" + ] + }, + "clickTrackingParams": "CMYCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Bandidos: Season 2 | Official Trailer | Netflix by Netflix 79,621 views 5 days ago 1 minute, 42 seconds" + } + }, + "runs": [ + { + "text": "Bandidos: Season 2 | Official Trailer | Netflix" + } + ] + }, + "trackingParams": "CMUCENwwIhMInfL4orPDigMVbHR6BR25GwwEQIvJ8ObnmoLFkwE=", + "videoId": "k4oI1nzcJIs", + "viewCountText": { + "simpleText": "79,621 views" + } + } + }, + "trackingParams": "CMQCEJmNBRhHIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Netflix Sports brings you closer to the stories and athletes you love the most. And the best is yet to come. \r\n\r\nAnnouncing upcoming series and films for Netflix Sports: Court of Gold, Elway,..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=g0xgOKRsJLI&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "g0xgOKRsJLI", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=834c6038a46c24b2&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 15 seconds" + } + }, + "simpleText": "1:15" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMMCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMMCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "g0xgOKRsJLI" + ] + } + }, + "openMiniplayer": true, + "videoId": "g0xgOKRsJLI", + "videoIds": [ + "g0xgOKRsJLI" + ] + }, + "clickTrackingParams": "CMMCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMMCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "g0xgOKRsJLI" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "g0xgOKRsJLI" + }, + "clickTrackingParams": "CMICEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMICEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMECENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CMECENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "g0xgOKRsJLI" + } + }, + "videoId": "g0xgOKRsJLI" + } + }, + "trackingParams": "CMECENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CMACEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtnMHhnT0tSc0pMSQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CL8CEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CL8CEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "g0xgOKRsJLI", + "undoToken": "AB9zfpLjR6-IT2HL9jqb234sCrXKAqp-9wNS_EXUn-OLoZkx08-aINI7mo7r9nYWhaHJ1yHNQkXlIDEtVFekNH6yDeEf22DWOrOFydIO015cvNw6KGpnZlPnkD7PB64DF27lMh_VxfuN" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CL8CEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CL4CEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "g0xgOKRsJLI", + "feedbackToken": "AB9zfpLMxuzpqJDwlsAACVpKBcjo3Gjl0ZtYYsLf8XW6aMSI-gkZkrpreiZSxGqbRDE_kY7HCeHIgyTpyUnVIQk-XsSx0AXCH7PdQjNVphYwNz89Xo8NpJcVEIeZpUl41Jug5XIGi3Q-", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=g0xgOKRsJLI", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "g0xgOKRsJLI", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=834c6038a46c24b2&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/g0xgOKRsJLI/mqdefault_6s.webp?du=3000&sqp=CLDrsLsG&rs=AOn4CLA7UGub3tLSEhqmY5SwV6o8a5pKAA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "21K views" + } + }, + "simpleText": "21K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/g0xgOKRsJLI/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDxdXiVuSuDegkE2UDSLqyOUjTnPQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/g0xgOKRsJLI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB1qS7lO9fzjI4vCBEFwWs8aYWlXw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/g0xgOKRsJLI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDkuPwFzvIJd8BeyQontXfoEYLvsQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 15 seconds" + } + }, + "simpleText": "1:15" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CL0CEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "g0xgOKRsJLI" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CL0CEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CL0CEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "g0xgOKRsJLI" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CLwCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLwCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLwCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "g0xgOKRsJLI" + ] + } + }, + "openMiniplayer": true, + "videoId": "g0xgOKRsJLI", + "videoIds": [ + "g0xgOKRsJLI" + ] + }, + "clickTrackingParams": "CLwCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "What's Next for Netflix Sports | Tyson, SEC Football, Elway and more | Netflix by Netflix 21,031 views 5 days ago 1 minute, 15 seconds" + } + }, + "runs": [ + { + "text": "What's Next for Netflix Sports | Tyson, SEC Football, Elway and more | Netflix" + } + ] + }, + "trackingParams": "CLsCENwwIhMInfL4orPDigMVbHR6BR25GwwEQLLJsKOKh5imgwE=", + "videoId": "g0xgOKRsJLI", + "viewCountText": { + "simpleText": "21,031 views" + } + } + }, + "trackingParams": "CLoCEJmNBRhIIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "World Friends Facebook\n👉 / 100090310914821 \n\nCan you read the Russian Alphabet? Let's Learn!\n\nHope you enjoy the video! \nAlso, please follow our panels!\n\n\nRU Taya @tae_yeon04.10\nPT Miguel..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=khdq9L5ygxw&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "khdq9L5ygxw", + "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&siu=1&msp=1&odepv=1&id=92176af4be72831c&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 38 seconds" + } + }, + "simpleText": "17:38" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "World Friends" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLkCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "khdq9L5ygxw" + ] + } + }, + "openMiniplayer": true, + "videoId": "khdq9L5ygxw", + "videoIds": [ + "khdq9L5ygxw" + ] + }, + "clickTrackingParams": "CLkCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLkCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "khdq9L5ygxw" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "khdq9L5ygxw" + }, + "clickTrackingParams": "CLgCEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLgCEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLcCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CLcCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "khdq9L5ygxw" + } + }, + "videoId": "khdq9L5ygxw" + } + }, + "trackingParams": "CLcCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CLYCEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtraGRxOUw1eWd4dw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLUCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLUCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "khdq9L5ygxw", + "undoToken": "AB9zfpL9E5169lY0CQ5qlxREN5I3TmCV253-IFnaAZxDgPEYC3n6kBCb52d8Xj4GJ7wTeCWyNBVomsCCYv-4iwrBPJkVSC1-G979tbgxuezLdzMM65FpN7INbaAeWbM4ZeMtG5Xx_ST9_442gTrQccmuXIzO-O6IKw" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CLUCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CLQCEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "khdq9L5ygxw", + "feedbackToken": "AB9zfpKghI19fxuMaFxXcbvKqlpMlLiDuTp5ddO6PW59HCLIaNd9S4ChDtvaKy8_Tr4iy1CpIxqWlW86LfIAM_EwFDvFKB0mU2L9W1lTVgNDtSffzLC2mR2_y48BHFoKKIavA4zJM8S3", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=khdq9L5ygxw", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "khdq9L5ygxw", + "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&siu=1&msp=1&odepv=1&id=92176af4be72831c&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "World Friends" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/khdq9L5ygxw/mqdefault_6s.webp?du=3000&sqp=CMTpsLsG&rs=AOn4CLD7KcPfmw3S-GRQ0kOSsk97NSIvSA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + }, + "clickTrackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "World Friends" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "52K views" + } + }, + "simpleText": "52K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/khdq9L5ygxw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAOl3mW9uCAlZuqkGWGzXZAkjn1ig", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/khdq9L5ygxw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDJl7m0n7Nx3rWQOri5Hb2uS_upOA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/khdq9L5ygxw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB9w71DBa64O2NL_ENEypvWtL7Nbw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 38 seconds" + } + }, + "simpleText": "17:38" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLMCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "khdq9L5ygxw" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CLMCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLMCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "khdq9L5ygxw" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CLICEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLICEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLICEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "khdq9L5ygxw" + ] + } + }, + "openMiniplayer": true, + "videoId": "khdq9L5ygxw", + "videoIds": [ + "khdq9L5ygxw" + ] + }, + "clickTrackingParams": "CLICEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "European Learn The Hardest Alphabet l Russian Alphabet is insane!! by World Friends 52,639 views 5 days ago 17 minutes" + } + }, + "runs": [ + { + "text": "European Learn The Hardest Alphabet l Russian Alphabet is insane!!" + } + ] + }, + "trackingParams": "CLECENwwIhMInfL4orPDigMVbHR6BR25GwwEQJyGyvPL3tqLkgE=", + "videoId": "khdq9L5ygxw", + "viewCountText": { + "simpleText": "52,639 views" + } + } + }, + "trackingParams": "CLACEJmNBRhJIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "CircuitPython Wiz Library: https://github.com/adafruit/Adafruit_CircuitPython_Wiz\n\nVisit the Adafruit shop online - http://www.adafruit.com\n\n-----------------------------------------\nLIVE CHAT..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Kc68RUhF8Eg&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "Kc68RUhF8Eg", + "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&siu=1&msp=1&odepv=1&id=29cebc454845f048&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 9 seconds" + } + }, + "simpleText": "1:09" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8CEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CK8CEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Kc68RUhF8Eg" + ] + } + }, + "openMiniplayer": true, + "videoId": "Kc68RUhF8Eg", + "videoIds": [ + "Kc68RUhF8Eg" + ] + }, + "clickTrackingParams": "CK8CEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CK8CEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Kc68RUhF8Eg" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "Kc68RUhF8Eg" + }, + "clickTrackingParams": "CK4CEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CK4CEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CK0CENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CK0CENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "Kc68RUhF8Eg" + } + }, + "videoId": "Kc68RUhF8Eg" + } + }, + "trackingParams": "CK0CENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CKwCEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtLYzY4UlVoRjhFZw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKsCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKsCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "Kc68RUhF8Eg", + "undoToken": "AB9zfpKHJEJOIRyrHH71kK_HWuqoigzzwVO3vwJHFTQBsYJLiY1bh689km18KXrh2ur3qi3Y8adq-f29SmQAFhTs3t9HZTO9-DNdb8DqwkaFPoBr3mllvr5dCkUU2ViMYKYFjDnv6Bza" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CKsCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CKoCEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "Kc68RUhF8Eg", + "feedbackToken": "AB9zfpIvuPbTxndLCfJooLYzaZMrIcPhEtjXpzBjrDjZx73jP59d-UnUbp6wYlM8J9eCxpd2RYr7wfjZal_OIx2UI13qbxLbgTHv14j8WpNmHt1VL3xeYh0MTe0R5NZB7j7wkEyPKaqC", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Kc68RUhF8Eg", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "Kc68RUhF8Eg", + "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&siu=1&msp=1&odepv=1&id=29cebc454845f048&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/Kc68RUhF8Eg/mqdefault_6s.webp?du=3000&sqp=CMjksLsG&rs=AOn4CLBVInPJTH6alAf8HCse_2Ux4x0q0w", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "964 views" + } + }, + "simpleText": "964 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/Kc68RUhF8Eg/hqdefault.jpg?sqp=-oaymwE1CNIBEHZIVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgZShlMA8=&rs=AOn4CLD1PvkkceTAre4AVRlpOPoGo6ZotQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Kc68RUhF8Eg/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhlIGUoZTAP&rs=AOn4CLDaS0L07kW27M7oKkVE2POICyiQpw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Kc68RUhF8Eg/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhlIGUoZTAP&rs=AOn4CLBQIpnJfKAkhbtPLl00Jq0olWJ5Cw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 9 seconds" + } + }, + "simpleText": "1:09" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKkCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Kc68RUhF8Eg" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CKkCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKkCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "Kc68RUhF8Eg" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CKgCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKgCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKgCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Kc68RUhF8Eg" + ] + } + }, + "openMiniplayer": true, + "videoId": "Kc68RUhF8Eg", + "videoIds": [ + "Kc68RUhF8Eg" + ] + }, + "clickTrackingParams": "CKgCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Control Wiz Lights From CircuitPython #adafruit #circuitpython by Adafruit Industries 964 views 5 days ago 1 minute, 9 seconds" + } + }, + "runs": [ + { + "text": "Control Wiz Lights From CircuitPython #adafruit #circuitpython" + } + ] + }, + "trackingParams": "CKcCENwwIhMInfL4orPDigMVbHR6BR25GwwEQMjgl8LUiK_nKQ==", + "videoId": "Kc68RUhF8Eg", + "viewCountText": { + "simpleText": "964 views" + } + } + }, + "trackingParams": "CKYCEJmNBRhKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_n3V8UR7V7bO4lbA8IhEYHO_sYqEwV3eByDzoB0RF8B_Q=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCZem9C5rWjSb0B8tV3k2EZg", + "canonicalBaseUrl": "/@TorqueTestChannel" + }, + "clickTrackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TorqueTestChannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCZem9C5rWjSb0B8tV3k2EZg", + "canonicalBaseUrl": "/@TorqueTestChannel" + }, + "clickTrackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TorqueTestChannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_n3V8UR7V7bO4lbA8IhEYHO_sYqEwV3eByDzoB0RF8B_Q=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Klein: https://amzn.to/3TZHQ3q Bahco: https://amzn.to/3YhaEa4 SK: https://amzn.to/3Y4BIIj Workpro: https://amzn.to/3ZUXfWr\nOur lifetime worth of *TOOL RANKINGS* https://torquetestchannel.etsy.com/l..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=_eiTelPB56s&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "_eiTelPB56s", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=fde8937a53c1e7ab&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 29 seconds" + } + }, + "simpleText": "17:29" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCZem9C5rWjSb0B8tV3k2EZg", + "canonicalBaseUrl": "/@TorqueTestChannel" + }, + "clickTrackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TorqueTestChannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Torque Test Channel" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKUCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKUCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "_eiTelPB56s" + ] + } + }, + "openMiniplayer": true, + "videoId": "_eiTelPB56s", + "videoIds": [ + "_eiTelPB56s" + ] + }, + "clickTrackingParams": "CKUCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKUCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "_eiTelPB56s" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "_eiTelPB56s" + }, + "clickTrackingParams": "CKQCEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKQCEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKMCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CKMCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "_eiTelPB56s" + } + }, + "videoId": "_eiTelPB56s" + } + }, + "trackingParams": "CKMCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CKICEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtfZWlUZWxQQjU2cw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKECEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKECEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "_eiTelPB56s", + "undoToken": "AB9zfpLAwAYFcuWpjHvYs27MYd-6miP2_lzJryR9mHei_R8dVSZ9cdatPxmyZakPpk3QCDhCeRfwbQQUO-eMuuBVA0zZqTSDvI08Zj0Z14d-UHlQ21sk4aaF2ED0o3U73DIQiRmEiPz3" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CKECEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CKACEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "_eiTelPB56s", + "feedbackToken": "AB9zfpKr6Yc0Su8-EnoFBmezTfwPbBp5tGjy6uUS7UIKKJ5lI0gYgWo3UJQ1b-yIcJ_XImKY8IGGLdYzouOaetXp55oSZHRkNTEJfFfOJLFYtIhNubExcIDMt4fGs2-QthuZzPFQ-2XL", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=_eiTelPB56s", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "_eiTelPB56s", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=fde8937a53c1e7ab&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCZem9C5rWjSb0B8tV3k2EZg", + "canonicalBaseUrl": "/@TorqueTestChannel" + }, + "clickTrackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TorqueTestChannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Torque Test Channel" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/_eiTelPB56s/mqdefault_6s.webp?du=3000&sqp=CPfgsLsG&rs=AOn4CLCiz3X7KmeNfj7TcVk__10e4Ot9Ng", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCZem9C5rWjSb0B8tV3k2EZg", + "canonicalBaseUrl": "/@TorqueTestChannel" + }, + "clickTrackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TorqueTestChannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Torque Test Channel" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "113K views" + } + }, + "simpleText": "113K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/_eiTelPB56s/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBP0o-eNwsLn1hYzniXmRpPoMhCQg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/_eiTelPB56s/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBA9gZpgmZmyQlO8fyDlg6cW_ygRg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/_eiTelPB56s/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAGHi2Oa83_N74E4yywRmUa07rdlw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 29 seconds" + } + }, + "simpleText": "17:29" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJ8CEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "_eiTelPB56s" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CJ8CEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJ8CEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "_eiTelPB56s" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CJ4CEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJ4CEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJ4CEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "_eiTelPB56s" + ] + } + }, + "openMiniplayer": true, + "videoId": "_eiTelPB56s", + "videoIds": [ + "_eiTelPB56s" + ] + }, + "clickTrackingParams": "CJ4CEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Best Adjustable Wrench? Testing Viewer Suggestions by Torque Test Channel 113,608 views 5 days ago 17 minutes" + } + }, + "runs": [ + { + "text": "Best Adjustable Wrench? Testing Viewer Suggestions" + } + ] + }, + "trackingParams": "CJ0CENwwIhMInfL4orPDigMVbHR6BR25GwwEQKvPh56l76T0_QE=", + "videoId": "_eiTelPB56s", + "viewCountText": { + "simpleText": "113,608 views" + } + } + }, + "trackingParams": "CJwCEJmNBRhLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/ytc/AIdro_lYwM_1_M7MxhF_wY2lAem2tZM-P_cVA9JgaQeYewaeyw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCC9192yGQD25eBZgFZ84MPw" + }, + "clickTrackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCC9192yGQD25eBZgFZ84MPw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCC9192yGQD25eBZgFZ84MPw" + }, + "clickTrackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCC9192yGQD25eBZgFZ84MPw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/ytc/AIdro_lYwM_1_M7MxhF_wY2lAem2tZM-P_cVA9JgaQeYewaeyw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Das ganze Abschiedskonzert im \"Goldener Schluss\" Box-Set:\nhttps://tp4l.de\n\n►►TRAILERPARK:◄◄\nhttp://www.facebook.com/trailerpark" + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=0mcING0Zdis&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "0mcING0Zdis", + "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&siu=1&msp=1&odepv=1&id=d26708346d19762b&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 4 seconds" + } + }, + "simpleText": "3:04" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCC9192yGQD25eBZgFZ84MPw", + "canonicalBaseUrl": "/channel/UCC9192yGQD25eBZgFZ84MPw" + }, + "clickTrackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCC9192yGQD25eBZgFZ84MPw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Trailerpark" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsCEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJsCEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "0mcING0Zdis" + ] + } + }, + "openMiniplayer": true, + "videoId": "0mcING0Zdis", + "videoIds": [ + "0mcING0Zdis" + ] + }, + "clickTrackingParams": "CJsCEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJsCEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "0mcING0Zdis" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "0mcING0Zdis" + }, + "clickTrackingParams": "CJoCEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJoCEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJkCENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CJkCENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "0mcING0Zdis" + } + }, + "videoId": "0mcING0Zdis" + } + }, + "trackingParams": "CJkCENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CJgCEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgswbWNJTkcwWmRpcw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJcCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJcCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "0mcING0Zdis", + "undoToken": "AB9zfpJ0g7R05vPc-YewBj3Hvp4Ehg_dDEokMdVzYTWYCqg0nCy8CQVrlUyleObqeSq06qDNJ9ZRnTQJglUHQ5d2aKFzR-tGXVVtyMuNu-zZfwT4rfJehXSehzf1QOqhk5cArYxSBMXi3lG2KfCzTNChjUxym6iw9g" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJcCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJYCEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "0mcING0Zdis", + "feedbackToken": "AB9zfpJx7pVWe5SYGSFzKOU23O3f3kdicS2ki6FU5ZCnKRKBJkN0a4WovBdFSL3zrn5x08OS3ScgTKNLoKCRmI5TR1zwYvNz6uIdHNUF8wKjxH2rKRTII_Ybye0Dm7wte8UU5N5VkGPK", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=0mcING0Zdis", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "0mcING0Zdis", + "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&siu=1&msp=1&odepv=1&id=d26708346d19762b&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCC9192yGQD25eBZgFZ84MPw", + "canonicalBaseUrl": "/channel/UCC9192yGQD25eBZgFZ84MPw" + }, + "clickTrackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCC9192yGQD25eBZgFZ84MPw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Trailerpark" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCC9192yGQD25eBZgFZ84MPw", + "canonicalBaseUrl": "/channel/UCC9192yGQD25eBZgFZ84MPw" + }, + "clickTrackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCC9192yGQD25eBZgFZ84MPw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Trailerpark" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "11K views" + } + }, + "simpleText": "11K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/0mcING0Zdis/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAJxUfs-0jsVxGtcSus64KlAa3ThQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/0mcING0Zdis/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDSnc2TM8NFoaimnK6kZrY39VvKPg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/0mcING0Zdis/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAIxWTFA3p2iFO9AJhvFA7Gd0oPPQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 4 seconds" + } + }, + "simpleText": "3:04" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJUCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "0mcING0Zdis" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CJUCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJUCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "0mcING0Zdis" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CJQCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJQCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJQCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "0mcING0Zdis" + ] + } + }, + "openMiniplayer": true, + "videoId": "0mcING0Zdis", + "videoIds": [ + "0mcING0Zdis" + ] + }, + "clickTrackingParams": "CJQCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Trailerpark - TP4L (Live Abschiedskonzert) by Trailerpark 11,118 views 5 days ago 3 minutes, 4 seconds" + } + }, + "runs": [ + { + "text": "Trailerpark - TP4L (Live Abschiedskonzert)" + } + ] + }, + "trackingParams": "CJMCENwwIhMInfL4orPDigMVbHR6BR25GwwEQKvs5ejGhsKz0gE=", + "videoId": "0mcING0Zdis", + "viewCountText": { + "simpleText": "11,118 views" + } + } + }, + "trackingParams": "CJICEJmNBRhMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lgA3xMKNY0-d05dSmj3zt7CeTS1QSS5jVgOWqD03VsSm4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCWFKCr40YwOZQx8FHU_ZqqQ", + "canonicalBaseUrl": "/@JerryRigEverything" + }, + "clickTrackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@JerryRigEverything", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWFKCr40YwOZQx8FHU_ZqqQ", + "canonicalBaseUrl": "/@JerryRigEverything" + }, + "clickTrackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@JerryRigEverything", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lgA3xMKNY0-d05dSmj3zt7CeTS1QSS5jVgOWqD03VsSm4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Today we tour an Industrial diamond manufacturing facility, that makes real diamonds right here in the USA. Utah to be exact. US Synthetic uses massive presses the size of a car to smash diamond..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=6o5RprIJmfA&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "6o5RprIJmfA", + "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&siu=1&msp=1&odepv=1&id=ea8e51a6b20999f0&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "8 minutes, 51 seconds" + } + }, + "simpleText": "8:51" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWFKCr40YwOZQx8FHU_ZqqQ", + "canonicalBaseUrl": "/@JerryRigEverything" + }, + "clickTrackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@JerryRigEverything", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "JerryRigEverything" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJECEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJECEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "6o5RprIJmfA" + ] + } + }, + "openMiniplayer": true, + "videoId": "6o5RprIJmfA", + "videoIds": [ + "6o5RprIJmfA" + ] + }, + "clickTrackingParams": "CJECEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJECEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "6o5RprIJmfA" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "6o5RprIJmfA" + }, + "clickTrackingParams": "CJACEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJACEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CI8CENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CI8CENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "6o5RprIJmfA" + } + }, + "videoId": "6o5RprIJmfA" + } + }, + "trackingParams": "CI8CENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CI4CEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgs2bzVScHJJSm1mQQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CI0CEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CI0CEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "6o5RprIJmfA", + "undoToken": "AB9zfpIy6AM1_gDDfTQgbent01sCNV2Av7Rko0hDWRnhRJO7qflqOhaRtAzSyzTAnz_jLOh5fEJLGJgs5FvuryDibF6Ez2AKElVsO6oS8ceo8fTlOZ7WWPS7ye5NwL2tXYa4pT5Ilk8JQJ0Ow1GUNadllPn0yw5hPg" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CI0CEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CIwCEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "6o5RprIJmfA", + "feedbackToken": "AB9zfpKDVbNhidV8uBAQsEOjzynrxEH51WZS8ULCRfRZEsHn7FrsonUgVIgG_AXvCPTFJ8n2tG_MD7mYnyyRyvAbDo5ImmOxegq6dOJCkKAiJkYn0iqgdod7LFDiU07cmIuh3TOhrAuY", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=6o5RprIJmfA", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "6o5RprIJmfA", + "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&siu=1&msp=1&odepv=1&id=ea8e51a6b20999f0&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWFKCr40YwOZQx8FHU_ZqqQ", + "canonicalBaseUrl": "/@JerryRigEverything" + }, + "clickTrackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@JerryRigEverything", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "JerryRigEverything" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/6o5RprIJmfA/mqdefault_6s.webp?du=3000&sqp=CMDTsLsG&rs=AOn4CLAxFR6drmTr3UXsTvdYgnap4eEP3Q", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWFKCr40YwOZQx8FHU_ZqqQ", + "canonicalBaseUrl": "/@JerryRigEverything" + }, + "clickTrackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@JerryRigEverything", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "JerryRigEverything" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "2.7 million views" + } + }, + "simpleText": "2.7M views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/6o5RprIJmfA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAK_QgmENCb6PZIRAGM9PJps-jHNA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/6o5RprIJmfA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD8l-VuFXzjuTr1F_O20JDIi0RQEg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/6o5RprIJmfA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBgc8-Fqr1NQKVy9jqmufyWr6y0RQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "8 minutes, 51 seconds" + } + }, + "simpleText": "8:51" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIsCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "6o5RprIJmfA" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CIsCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIsCEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "6o5RprIJmfA" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CIoCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIoCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIoCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "6o5RprIJmfA" + ] + } + }, + "openMiniplayer": true, + "videoId": "6o5RprIJmfA", + "videoIds": [ + "6o5RprIJmfA" + ] + }, + "clickTrackingParams": "CIoCEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "How to Make a Real Diamond - (Not Clickbait) by JerryRigEverything 2,773,065 views 5 days ago 8 minutes, 51 seconds" + } + }, + "runs": [ + { + "text": "How to Make a Real Diamond - (Not Clickbait)" + } + ] + }, + "trackingParams": "CIkCENwwIhMInfL4orPDigMVbHR6BR25GwwEQPCzppDrtJTH6gE=", + "videoId": "6o5RprIJmfA", + "viewCountText": { + "simpleText": "2,773,065 views" + } + } + }, + "trackingParams": "CIgCEJmNBRhNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/yJlMNr2TRPPNCkijsPlW_urjXKEXg44NBhZhz5j3jy4OCJTg5WPhnEQKamrd6bNTqh48-_rtZ7E=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCEdvpU2pFRCVqU6yIPyTpMQ" + }, + "clickTrackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCEdvpU2pFRCVqU6yIPyTpMQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCEdvpU2pFRCVqU6yIPyTpMQ" + }, + "clickTrackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCEdvpU2pFRCVqU6yIPyTpMQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/yJlMNr2TRPPNCkijsPlW_urjXKEXg44NBhZhz5j3jy4OCJTg5WPhnEQKamrd6bNTqh48-_rtZ7E=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "How I Made “Just Can’t Stop” - Marshmello Music Production Breakdown\nListen to \"Just Can't Stop\" on my new EP \"The R♾️ts\": https://marshmello.ffm.to/theroots\n\nOfficial Marshmello..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=MHiH9x1n7Do&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "MHiH9x1n7Do", + "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&siu=1&msp=1&odepv=1&id=307887f71d67ec3a&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "53 minutes, 47 seconds" + } + }, + "simpleText": "53:47" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCEdvpU2pFRCVqU6yIPyTpMQ", + "canonicalBaseUrl": "/channel/UCEdvpU2pFRCVqU6yIPyTpMQ" + }, + "clickTrackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCEdvpU2pFRCVqU6yIPyTpMQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Marshmello" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIcCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "MHiH9x1n7Do" + ] + } + }, + "openMiniplayer": true, + "videoId": "MHiH9x1n7Do", + "videoIds": [ + "MHiH9x1n7Do" + ] + }, + "clickTrackingParams": "CIcCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIcCEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "MHiH9x1n7Do" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "MHiH9x1n7Do" + }, + "clickTrackingParams": "CIYCEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CIYCEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIUCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CIUCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "MHiH9x1n7Do" + } + }, + "videoId": "MHiH9x1n7Do" + } + }, + "trackingParams": "CIUCENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CIQCEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtNSGlIOXgxbjdEbw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIMCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIMCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "MHiH9x1n7Do", + "undoToken": "AB9zfpI7mX08OMoaeBMWSSwDba7Mq7f0bhCb-MO8DnrQKxPC66nuugDWwMBUQsnDDkPR4X7jmxE6ceT78Z91BBGc-vr_sbUosv8fgsJCJHAUaM1_huAb_LgnQFjOB0Z1K4Bj1Mo_7A8s_XlhqeBB4k0LKlYb0C9mzw" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CIMCEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CIICEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "MHiH9x1n7Do", + "feedbackToken": "AB9zfpJ_NVXOnQ-gaS7qgw07XH0fhm3XmtJz4YEkMKKu9Mx75dokZdY57T25lVXDFhxSx3htb_b-mRTSwPssJ0o6gCPFPevaPfepnN0oahazByIDm1j2cvSgnDIiNwbEDTm7urP7UhEi", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=MHiH9x1n7Do", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "MHiH9x1n7Do", + "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&siu=1&msp=1&odepv=1&id=307887f71d67ec3a&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCEdvpU2pFRCVqU6yIPyTpMQ", + "canonicalBaseUrl": "/channel/UCEdvpU2pFRCVqU6yIPyTpMQ" + }, + "clickTrackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCEdvpU2pFRCVqU6yIPyTpMQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Marshmello" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/MHiH9x1n7Do/mqdefault_6s.webp?du=3000&sqp=CLy3sLsG&rs=AOn4CLAycWJC3_c-GUYgKdcOIovMqHDzNw", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCEdvpU2pFRCVqU6yIPyTpMQ", + "canonicalBaseUrl": "/channel/UCEdvpU2pFRCVqU6yIPyTpMQ" + }, + "clickTrackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCEdvpU2pFRCVqU6yIPyTpMQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Marshmello" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "120K views" + } + }, + "simpleText": "120K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/MHiH9x1n7Do/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCSowIJpHcJhQiZx5R-Bzo0gslGtw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/MHiH9x1n7Do/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCdZblm9gHHlNU3ZGbt-mYI8AZwmg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/MHiH9x1n7Do/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDsTmRA8yEb-bU41NhtBrgrxCQv1A", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "53 minutes, 47 seconds" + } + }, + "simpleText": "53:47" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIECEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "MHiH9x1n7Do" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CIECEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIECEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "MHiH9x1n7Do" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CIACEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIACEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIACEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "MHiH9x1n7Do" + ] + } + }, + "openMiniplayer": true, + "videoId": "MHiH9x1n7Do", + "videoIds": [ + "MHiH9x1n7Do" + ] + }, + "clickTrackingParams": "CIACEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "How I Made “Just Can’t Stop” - Marshmello Music Production Breakdown by Marshmello 120,050 views 5 days ago 53 minutes" + } + }, + "runs": [ + { + "text": "How I Made “Just Can’t Stop” - Marshmello Music Production Breakdown" + } + ] + }, + "trackingParams": "CP8BENwwIhMInfL4orPDigMVbHR6BR25GwwEQLrYn-vx_qG8MA==", + "videoId": "MHiH9x1n7Do", + "viewCountText": { + "simpleText": "120,050 views" + } + } + }, + "trackingParams": "CP4BEJmNBRhOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "한(HAN) \"Hold my hand\" | [Stray Kids(스트레이 키즈) : SKZ-PLAYER(슼즈 플레이어)]\n\nListen to \"合 (HOP)\" now💦\nhttps://Stray-Kids.lnk.to/HOP\n\nListen to \"Walkin On Water (Remixes)\"..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=DzBB7izZnZk&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "DzBB7izZnZk", + "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&siu=1&msp=1&odepv=1&id=0f3041ee2cd99d99&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 4 seconds" + } + }, + "simpleText": "3:04" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0BEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CP0BEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "DzBB7izZnZk" + ] + } + }, + "openMiniplayer": true, + "videoId": "DzBB7izZnZk", + "videoIds": [ + "DzBB7izZnZk" + ] + }, + "clickTrackingParams": "CP0BEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CP0BEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "DzBB7izZnZk" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "DzBB7izZnZk" + }, + "clickTrackingParams": "CPwBEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CPwBEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPsBENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CPsBENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "DzBB7izZnZk" + } + }, + "videoId": "DzBB7izZnZk" + } + }, + "trackingParams": "CPsBENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CPoBEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtEekJCN2l6Wm5aaw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPkBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CPkBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "DzBB7izZnZk", + "undoToken": "AB9zfpKTPlCLU7v5wsTIutG2Nlk8a2oBTfvZhLc7oX0u-RCS5AWuS_2FTH3bWs_9aOCpV_bICEjF4HypvtweIUHPSmCDGcRW6Uqqfs0Eayd8S3ymJsyskxxpN6GJJ7_MSjFfAIwr2c5K" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CPkBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CPgBEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "DzBB7izZnZk", + "feedbackToken": "AB9zfpLP9QWlRTBqMM0nx5qcaIYeYHGtDfrCj8_3199vLC28Xczma0cqtLcufFyPhbdvTb0dMKB1N64taVqhPcArCC02gZPhsiHJB0SLNExF0Y-eO7xmMjnZpYza83wcKWXSypXku6gA", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=DzBB7izZnZk", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "DzBB7izZnZk", + "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&siu=1&msp=1&odepv=1&id=0f3041ee2cd99d99&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/channel/UC9rMiEjNaCSsebs31MRDCRA" + }, + "clickTrackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC9rMiEjNaCSsebs31MRDCRA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stray Kids" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "2.3 million views" + } + }, + "simpleText": "2.3M views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/DzBB7izZnZk/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDor_k6wD1zG2N9B4OeT5IYsLB1Mw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/DzBB7izZnZk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDd_U9EMa1r9SaP_AFRzRPBFB5tKg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/DzBB7izZnZk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAW8Uu3mBuNd2svn793XwIEn-hgCQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 4 seconds" + } + }, + "simpleText": "3:04" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPcBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "DzBB7izZnZk" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CPcBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPcBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "DzBB7izZnZk" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CPYBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPYBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPYBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "DzBB7izZnZk" + ] + } + }, + "openMiniplayer": true, + "videoId": "DzBB7izZnZk", + "videoIds": [ + "DzBB7izZnZk" + ] + }, + "clickTrackingParams": "CPYBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "HAN \"Hold my hand\" | [Stray Kids : SKZ-PLAYER] by Stray Kids 2,308,522 views 5 days ago 3 minutes, 4 seconds" + } + }, + "runs": [ + { + "text": "HAN \"Hold my hand\" | [Stray Kids : SKZ-PLAYER]" + } + ] + }, + "trackingParams": "CPUBENwwIhMInfL4orPDigMVbHR6BR25GwwEQJm75ubivZCYDw==", + "videoId": "DzBB7izZnZk", + "viewCountText": { + "simpleText": "2,308,522 views" + } + } + }, + "trackingParams": "CPQBEJmNBRhPIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/XKHPGrWr9hhVN3Xp3h1GC7bR20Tcz4NYPkYas-Fx1ZnavMbUbDHgjMiGBLpdWfwCIqE233Iq=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "STARSHIP SQUARE (Domestic) : https://bit.ly/3HtQ7GF\nSTARSHIP SQUARE (Global) : https://bit.ly/3JWPxm0\nIVE US EXCLUSIVE STORE : https://shop.ive-starship.com/ \n\nIVE X (Twitter)\n: https://twitter.co..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=MB1S8soDTn4&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "MB1S8soDTn4", + "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&siu=1&msp=1&odepv=1&id=301d52f2ca034e7e&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "41 minutes, 43 seconds" + } + }, + "simpleText": "41:43" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPMBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPMBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "MB1S8soDTn4" + ] + } + }, + "openMiniplayer": true, + "videoId": "MB1S8soDTn4", + "videoIds": [ + "MB1S8soDTn4" + ] + }, + "clickTrackingParams": "CPMBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPMBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "MB1S8soDTn4" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "MB1S8soDTn4" + }, + "clickTrackingParams": "CPIBEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CPIBEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPEBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CPEBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "MB1S8soDTn4" + } + }, + "videoId": "MB1S8soDTn4" + } + }, + "trackingParams": "CPEBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CPABEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtNQjFTOHNvRFRuNA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CO8BEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CO8BEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "MB1S8soDTn4", + "undoToken": "AB9zfpLOjL7nAmEi530CIYtEVgK1g75IH_iyJ8FG7oVnnOjhfmdvm9Om-1GS3kWujgDk27aqeDUVDSSiT19vVCNQ6wK_3CRVVjOoT1CpmeY8u-uFoLlkr1CJKQO2KdkkFOYFR_bl1fqEEOApHYNf-VfSXYYXqDokbQ" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CO8BEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CO4BEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "MB1S8soDTn4", + "feedbackToken": "AB9zfpKz36d5SyKDh66omZidtGMI_IKxf9VaHaA88vSy4g4uZTUG3e2qIHiUa7jqT4V5-Q3F-rU4zQ6FkXhNvQxiu2hqXpLUJOPN6fg9BsaA7JboYRc2vD-HzV3_yuJXl5hg1i3ZVkH_", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=MB1S8soDTn4", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "MB1S8soDTn4", + "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&siu=1&msp=1&odepv=1&id=301d52f2ca034e7e&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/MB1S8soDTn4/mqdefault_6s.webp?du=3000&sqp=COrQsLsG&rs=AOn4CLA6txhqNNdgXBQ0h3_n8rW8DCOdVg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/channel/UC-Fnix71vRP64WXeo0ikd0Q" + }, + "clickTrackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC-Fnix71vRP64WXeo0ikd0Q", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "IVE" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "385K views" + } + }, + "simpleText": "385K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/MB1S8soDTn4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDmMoJ8vaGAegmdpG6b0xSt1spT-g", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/MB1S8soDTn4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAHXdyiqHH56c-G5Y92XNYVIeXe7w", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/MB1S8soDTn4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDrCfUiN5NWkjj75N4p04_pwQewSQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "41 minutes, 43 seconds" + } + }, + "simpleText": "41:43" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CO0BEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "MB1S8soDTn4" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CO0BEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CO0BEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "MB1S8soDTn4" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "COwBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COwBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COwBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "MB1S8soDTn4" + ] + } + }, + "openMiniplayer": true, + "videoId": "MB1S8soDTn4", + "videoIds": [ + "MB1S8soDTn4" + ] + }, + "clickTrackingParams": "COwBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "1,2,3 IVE 5 EP.7 by IVE 385,293 views 5 days ago 41 minutes" + } + }, + "runs": [ + { + "text": "1,2,3 IVE 5 EP.7" + } + ] + }, + "trackingParams": "COsBENwwIhMInfL4orPDigMVbHR6BR25GwwEQP6cjdCs3tSOMA==", + "videoId": "MB1S8soDTn4", + "viewCountText": { + "simpleText": "385,293 views" + } + } + }, + "trackingParams": "COoBEJmNBRhQIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/4qrLd3kEQp0HKI5kKfewXXHxR_WxBAb7r2-Dp_V4ZHp9XVvLfDQ9OpBa3Nhr1lgkOQuodZzymyU=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCs-QBT4qkj_YiQw1ZntDO3g" + }, + "clickTrackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCs-QBT4qkj_YiQw1ZntDO3g", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCs-QBT4qkj_YiQw1ZntDO3g" + }, + "clickTrackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCs-QBT4qkj_YiQw1ZntDO3g", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/4qrLd3kEQp0HKI5kKfewXXHxR_WxBAb7r2-Dp_V4ZHp9XVvLfDQ9OpBa3Nhr1lgkOQuodZzymyU=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "#LE_SSERAFIM #르세라핌 공식 채널\n#LE_SSERAFIM #르세라핌 OFFICIAL CHANNEL\n\nConnect with LE SSERAFIM:\nOFFICIAL INSTAGRAM https://www.instagram.com/le_sserafim/\nOFFICIAL X (TWITTER)..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=BICoukMrTJo&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "BICoukMrTJo", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=0480a8ba432b4c9a&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "7 minutes, 12 seconds" + } + }, + "simpleText": "7:12" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCs-QBT4qkj_YiQw1ZntDO3g", + "canonicalBaseUrl": "/channel/UCs-QBT4qkj_YiQw1ZntDO3g" + }, + "clickTrackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCs-QBT4qkj_YiQw1ZntDO3g", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "LE SSERAFIM" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COkBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "BICoukMrTJo" + ] + } + }, + "openMiniplayer": true, + "videoId": "BICoukMrTJo", + "videoIds": [ + "BICoukMrTJo" + ] + }, + "clickTrackingParams": "COkBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COkBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "BICoukMrTJo" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "BICoukMrTJo" + }, + "clickTrackingParams": "COgBEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "COgBEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COcBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "COcBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "BICoukMrTJo" + } + }, + "videoId": "BICoukMrTJo" + } + }, + "trackingParams": "COcBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "COYBEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtCSUNvdWtNclRKbw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COUBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "COUBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "BICoukMrTJo", + "undoToken": "AB9zfpLXChwbNHbAEKdxto8pkMyxzxUvN2wVsU0ypo4MicuDiLyQ24k2nDOI2f-4ysSeMcDUDO9hxWqY4q-FVi1FBEyIcLnlQ88PtLVFdPSdY5WEp7OHPkgpnXr6WGXMaGTm5nR6XTIHT5jT__CArHlgpV8z7inQ7w" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "COUBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "COQBEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "BICoukMrTJo", + "feedbackToken": "AB9zfpKr7I_vneMFA7ckEwy3vGc8N5N8mKTuI1q2xsTDU4ueuoJFR7kGkRlH6xoxVshE1SC_ml9vwL9GXourWuD2YK9hX-UXFTfRX1j2iyxjqDa8-LCEntIkwjbwVOZXeDcsXWgulIPj", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=BICoukMrTJo", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "BICoukMrTJo", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=0480a8ba432b4c9a&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCs-QBT4qkj_YiQw1ZntDO3g", + "canonicalBaseUrl": "/channel/UCs-QBT4qkj_YiQw1ZntDO3g" + }, + "clickTrackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCs-QBT4qkj_YiQw1ZntDO3g", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "LE SSERAFIM" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/BICoukMrTJo/mqdefault_6s.webp?du=3000&sqp=CM7IsLsG&rs=AOn4CLB8dNO-ol4I7eFG5GLHnQvYUUBdRQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCs-QBT4qkj_YiQw1ZntDO3g", + "canonicalBaseUrl": "/channel/UCs-QBT4qkj_YiQw1ZntDO3g" + }, + "clickTrackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCs-QBT4qkj_YiQw1ZntDO3g", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "LE SSERAFIM" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "289K views" + } + }, + "simpleText": "289K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/BICoukMrTJo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCIm9-VqQV9nU9-wzwzO4b3G2K33Q", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/BICoukMrTJo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDv_7JyF8QVpgHZ1_oozK0C4juzYA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/BICoukMrTJo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD7c8NQvk2Ik5O15-66_s76IILNeA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "7 minutes, 12 seconds" + } + }, + "simpleText": "7:12" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COMBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "BICoukMrTJo" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "COMBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COMBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "BICoukMrTJo" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "COIBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "COIBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COIBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "BICoukMrTJo" + ] + } + }, + "openMiniplayer": true, + "videoId": "BICoukMrTJo", + "videoIds": [ + "BICoukMrTJo" + ] + }, + "clickTrackingParams": "COIBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "LE SSERAFIM (르세라핌) 2024 뮤직뱅크 글로벌 페스티벌 in JAPAN Dress Rehearsal by LE SSERAFIM 289,798 views 5 days ago 7 minutes, 12 seconds" + } + }, + "runs": [ + { + "text": "LE SSERAFIM (르세라핌) 2024 뮤직뱅크 글로벌 페스티벌 in JAPAN Dress Rehearsal" + } + ] + }, + "trackingParams": "COEBENwwIhMInfL4orPDigMVbHR6BR25GwwEQJqZrZmkl6rABA==", + "videoId": "BICoukMrTJo", + "viewCountText": { + "simpleText": "289,798 views" + } + } + }, + "trackingParams": "COABEJmNBRhRIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "JOHN PARK'S WORKSHOP LIVE 12/19/24\nProject: Dancing Gnomes\nCircuitPython Parsec\nJPPPoW recap\nProjects\nand more!\n\nVisit the Adafruit shop online - http://www.adafruit.com\n\n--------------------------..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=1qY64k4dFLQ&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "1qY64k4dFLQ", + "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&siu=1&msp=1&odepv=1&id=d6a63ae24e1d14b4&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "49 minutes, 56 seconds" + } + }, + "simpleText": "49:56" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8BEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CN8BEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "1qY64k4dFLQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "1qY64k4dFLQ", + "videoIds": [ + "1qY64k4dFLQ" + ] + }, + "clickTrackingParams": "CN8BEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CN8BEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "1qY64k4dFLQ" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "1qY64k4dFLQ" + }, + "clickTrackingParams": "CN4BEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CN4BEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CN0BENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CN0BENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "1qY64k4dFLQ" + } + }, + "videoId": "1qY64k4dFLQ" + } + }, + "trackingParams": "CN0BENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CNwBEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgsxcVk2NGs0ZEZMUQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNsBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNsBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "1qY64k4dFLQ", + "undoToken": "AB9zfpKWNAODvWdpmueNbuKAoPmunxM2pcL5tJ2-rF50-RcPprOppdiNYTVdiSDKf7JqGrYO-XDObbXNs7gah8gP3Yb1WocSsTuoKV85i9CmMNC695KhCFRUgWnzB44Lez4r-XYQ8x74" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CNsBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CNoBEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "1qY64k4dFLQ", + "feedbackToken": "AB9zfpJ8dD9U20AyooVz0j16OIaTe0zg2XJSY6hlvsvP5NJcfYGvbycJOOMtNNJjppEmz5mtdhXY_CGPA7pZQ1Dbguq_Zz8iPMqJDPZY4YBZdcNsos8x-R4ySarP57laFDs1Wp0wMe74", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=1qY64k4dFLQ", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "1qY64k4dFLQ", + "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&siu=1&msp=1&odepv=1&id=d6a63ae24e1d14b4&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "publishedTimeText": { + "simpleText": "Streamed 5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/1qY64k4dFLQ/mqdefault_6s.webp?du=3000&sqp=COTysLsG&rs=AOn4CLCvU2dghhG8OIlD7cb2PK_clRKjHg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "539 views" + } + }, + "simpleText": "539 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/1qY64k4dFLQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBlXWcjPhpWT4CYWTMulNdq58jqOQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/1qY64k4dFLQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAWFHafWYYjtG3hyKbGjgBzDohIiA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/1qY64k4dFLQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCO8nUslfZ8FZXaxFOY3mlqloYtLQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "49 minutes, 56 seconds" + } + }, + "simpleText": "49:56" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNkBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "1qY64k4dFLQ" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CNkBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNkBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "1qY64k4dFLQ" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CNgBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNgBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNgBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "1qY64k4dFLQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "1qY64k4dFLQ", + "videoIds": [ + "1qY64k4dFLQ" + ] + }, + "clickTrackingParams": "CNgBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "JOHN PARK'S WORKSHOP LIVE 12/19/24 by Adafruit Industries 539 views Streamed 5 days ago 49 minutes" + } + }, + "runs": [ + { + "text": "JOHN PARK'S WORKSHOP LIVE 12/19/24" + } + ] + }, + "trackingParams": "CNcBENwwIhMInfL4orPDigMVbHR6BR25GwwEQLSp9PCk3I7T1gE=", + "videoId": "1qY64k4dFLQ", + "viewCountText": { + "simpleText": "539 views" + } + } + }, + "trackingParams": "CNYBEJmNBRhSIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Pods open, eyes shut, feelings on. Love Is Blind is coming to Germany! January 3, only on Netflix.\r\n\r\nWatch on Netflix: https://www.netflix.com/title/81682953\r\n\r\nAbout Netflix:\r\nNetflix is..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=U9MnGYDbhtU&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "U9MnGYDbhtU", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=53d3271980db86d5&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 6 seconds" + } + }, + "simpleText": "2:06" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNUBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNUBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "U9MnGYDbhtU" + ] + } + }, + "openMiniplayer": true, + "videoId": "U9MnGYDbhtU", + "videoIds": [ + "U9MnGYDbhtU" + ] + }, + "clickTrackingParams": "CNUBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNUBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "U9MnGYDbhtU" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "U9MnGYDbhtU" + }, + "clickTrackingParams": "CNQBEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CNQBEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNMBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CNMBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "U9MnGYDbhtU" + } + }, + "videoId": "U9MnGYDbhtU" + } + }, + "trackingParams": "CNMBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CNIBEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtVOU1uR1lEYmh0VQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNEBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CNEBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "U9MnGYDbhtU", + "undoToken": "AB9zfpJyJrg218pW13ku4Se7EtHuta-kMKMayy68_hNmf4_06W6bvFTLjNbrigPzNgDg1139puz3dhNmVChP-7D_r7eZlTMxprDOn7ev5aR811yNLUh1rSd7mGBEuJPidY4HuKbgjet1Ghld7sqHH63pSpKhZLiLyQ" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CNEBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CNABEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "U9MnGYDbhtU", + "feedbackToken": "AB9zfpLMkDCCzYvkSawUBEeHmpJudmHk1X0hN8wz_K4eAiuLPp0-AxFahfiWf7NqD8XWgwJjcEML-A2QIOa8iUJl9qAoMux711jWTW_LSOzu5V9ANg1hqJ0eQFO0APSrZoMcLraVjZ7z", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=U9MnGYDbhtU", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "U9MnGYDbhtU", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---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&siu=1&msp=1&odepv=1&id=53d3271980db86d5&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/U9MnGYDbhtU/mqdefault_6s.webp?du=3000&sqp=CLr0sLsG&rs=AOn4CLDo19IWGJE5UyiIAUaaK9bgwm8fCg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "22K views" + } + }, + "simpleText": "22K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/U9MnGYDbhtU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDNR_J1cWJdmmajHUj2RN60LxVMtw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/U9MnGYDbhtU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB_yed98u22Phrhom-dfWRWSlYKZQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/U9MnGYDbhtU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCsy2WYNM5MxfTA2TUlIC9Np2GGsQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 6 seconds" + } + }, + "simpleText": "2:06" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CM8BEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "U9MnGYDbhtU" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CM8BEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CM8BEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "U9MnGYDbhtU" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CM4BEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CM4BEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CM4BEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "U9MnGYDbhtU" + ] + } + }, + "openMiniplayer": true, + "videoId": "U9MnGYDbhtU", + "videoIds": [ + "U9MnGYDbhtU" + ] + }, + "clickTrackingParams": "CM4BEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Love Is Blind: Germany | Official Trailer | Netflix by Netflix 22,330 views 5 days ago 2 minutes, 6 seconds" + } + }, + "runs": [ + { + "text": "Love Is Blind: Germany | Official Trailer | Netflix" + } + ] + }, + "trackingParams": "CM0BENwwIhMInfL4orPDigMVbHR6BR25GwwEQNWN7oaY48npUw==", + "videoId": "U9MnGYDbhtU", + "viewCountText": { + "simpleText": "22,330 views" + } + } + }, + "trackingParams": "CMwBEJmNBRhTIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Round Panel Mount Micro SD Card Extender (0:17)\nhttps://www.adafruit.com/product/6070\n\nUSB-C Screw Panel Mount to 4pin JST PH Cable (2:11)\nhttps://www.adafruit.com/product/6071\n\nSnap-In Panel..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=jQy9oyQvpXA&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "jQy9oyQvpXA", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&siu=1&msp=1&odepv=1&id=8d0cbda3242fa570&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "8 minutes, 5 seconds" + } + }, + "simpleText": "8:05" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMsBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMsBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "jQy9oyQvpXA" + ] + } + }, + "openMiniplayer": true, + "videoId": "jQy9oyQvpXA", + "videoIds": [ + "jQy9oyQvpXA" + ] + }, + "clickTrackingParams": "CMsBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMsBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "jQy9oyQvpXA" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "jQy9oyQvpXA" + }, + "clickTrackingParams": "CMoBEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMoBEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMkBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CMkBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "jQy9oyQvpXA" + } + }, + "videoId": "jQy9oyQvpXA" + } + }, + "trackingParams": "CMkBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CMgBEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtqUXk5b3lRdnBYQQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMcBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CMcBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "jQy9oyQvpXA", + "undoToken": "AB9zfpLLiPr1b9Lq_FsP9WEe3cAsJ0UODT3AD41vAhpM-2UFMnImOEuHa14y_lk46cJI95FDkWxWTebrj3YR5FHFHqk9TX93_7dkGI7gF2pZg54542ANG10IGRAEuX7uERLpJqfWU_jqFRpOz7FJJbx8lgFhV721Aw" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CMcBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CMYBEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "jQy9oyQvpXA", + "feedbackToken": "AB9zfpJOLCaEvZVjFiE04tLG3B246b5DNZ6Y97wSUCgRJ11ezxwukHSN5X5MWmQ4sODPXpZXclB-cUyONYlU7xBIgmWddQt4wbHch_AfXscUc4aONzxFd-b5hDuMcyh3pYh412s2w1UE", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=jQy9oyQvpXA", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "jQy9oyQvpXA", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&siu=1&msp=1&odepv=1&id=8d0cbda3242fa570&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/jQy9oyQvpXA/mqdefault_6s.webp?du=3000&sqp=CKDjsLsG&rs=AOn4CLAUnYadlpBYCBsooILsBnlwIqFOlw", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "3.7K views" + } + }, + "simpleText": "3.7K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/jQy9oyQvpXA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBgFq1ah5v1M6qak0nUnOPmCN4L1g", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/jQy9oyQvpXA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDFbCYquI_kQ1yrcIM6S3vhzp26cQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/jQy9oyQvpXA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC_y46uHe4jJGcRW0swTvHfL10Xhg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "8 minutes, 5 seconds" + } + }, + "simpleText": "8:05" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMUBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "jQy9oyQvpXA" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CMUBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMUBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "jQy9oyQvpXA" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CMQBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMQBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMQBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "jQy9oyQvpXA" + ] + } + }, + "openMiniplayer": true, + "videoId": "jQy9oyQvpXA", + "videoIds": [ + "jQy9oyQvpXA" + ] + }, + "clickTrackingParams": "CMQBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "#NewProducts 12/18/24 Feat @Adafruit 1.14\" 240x135 Color Newxie TFT Display - ST7789 by Adafruit Industries 3,736 views 5 days ago 8 minutes, 5 seconds" + } + }, + "runs": [ + { + "text": "#NewProducts 12/18/24 Feat @Adafruit 1.14\" 240x135 Color Newxie TFT Display - ST7789" + } + ] + }, + "trackingParams": "CMMBENwwIhMInfL4orPDigMVbHR6BR25GwwEQPDKvqGytK-GjQE=", + "videoId": "jQy9oyQvpXA", + "viewCountText": { + "simpleText": "3,736 views" + } + } + }, + "trackingParams": "CMIBEJmNBRhUIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The first chapter of the manga \"Drama Queen\" has been censored after users complained about its \"insensitive\" themes including a scene mocking gender neutral terms.\n\nMerch: https://uwumarket.us/col..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=NLc24clKRuU&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "NLc24clKRuU", + "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&siu=1&msp=1&odepv=1&id=34b736e1c94a46e5&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "10 minutes, 43 seconds" + } + }, + "simpleText": "10:43" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMEBEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMEBEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "NLc24clKRuU" + ] + } + }, + "openMiniplayer": true, + "videoId": "NLc24clKRuU", + "videoIds": [ + "NLc24clKRuU" + ] + }, + "clickTrackingParams": "CMEBEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMEBEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "NLc24clKRuU" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "NLc24clKRuU" + }, + "clickTrackingParams": "CMABEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMABEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CL8BENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CL8BENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "NLc24clKRuU" + } + }, + "videoId": "NLc24clKRuU" + } + }, + "trackingParams": "CL8BENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CL4BEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtOTGMyNGNsS1J1VQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CL0BEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CL0BEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "NLc24clKRuU", + "undoToken": "AB9zfpLJS76pXFGl-9aKGoX5tWs_6rcwOCkyMsofZM6MXukNv9pE68XgbviFGJkqZp4ssbxlYbuGHO7Y9QC4vdwTmC567HgkE0wPnV_awEc0twiyS3p7qGDqQrH1iLthhkTxOxJxlOzn" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CL0BEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CLwBEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "NLc24clKRuU", + "feedbackToken": "AB9zfpL6zM9Y7qGgGdoFoFF-C9MC0Yk3W1fZd07ZQk-wP7s7W4o-IqOOx7_eyJ9olecDkXbaE54Yc1MrjLXmZdrAxlv7Hjood6F9QBcu5QqzhD0BCiZUCDySBSa7064ciTiFvk6qSUUj", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=NLc24clKRuU", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "NLc24clKRuU", + "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&siu=1&msp=1&odepv=1&id=34b736e1c94a46e5&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/NLc24clKRuU/mqdefault_6s.webp?du=3000&sqp=CO_ksLsG&rs=AOn4CLC8vrTEkcFU25tj44lsyB9cB31EyQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + }, + "clickTrackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rev says desu" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "78K views" + } + }, + "simpleText": "78K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/NLc24clKRuU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2yjeET0I0xK8q7Q6XnkGbPeK80w", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/NLc24clKRuU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAQA973Ial1XFm8zOIJVegtLiEf5g", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/NLc24clKRuU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCGg31UGGnNRbTgXI7b2P24vEx9lg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "10 minutes, 43 seconds" + } + }, + "simpleText": "10:43" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLsBEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "NLc24clKRuU" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CLsBEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLsBEPnnAxgBIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "NLc24clKRuU" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CLoBEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLoBEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLoBEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "NLc24clKRuU" + ] + } + }, + "openMiniplayer": true, + "videoId": "NLc24clKRuU", + "videoIds": [ + "NLc24clKRuU" + ] + }, + "clickTrackingParams": "CLoBEMfsBBgCIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Popular Manga CENSORED After Its Mockery Of \"Gender Neutral Terms\" Enraged Western Tourists by Rev says desu 78,606 views 5 days ago 10 minutes, 43 seconds" + } + }, + "runs": [ + { + "text": "Popular Manga CENSORED After Its Mockery Of \"Gender Neutral Terms\" Enraged Western Tourists" + } + ] + }, + "trackingParams": "CLkBENwwIhMInfL4orPDigMVbHR6BR25GwwEQOWNqcqc3M3bNA==", + "videoId": "NLc24clKRuU", + "viewCountText": { + "simpleText": "78,606 views" + } + } + }, + "trackingParams": "CLgBEJmNBRhVIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "DREiNACHTEN EP STREAMEN► https://wtw.lnk.to/dreinachten\nALBUM JETZT VORBESTELLEN► https://schlussmitlustig.shop/\nTiCKETS ZUR ARENA TOUR 2025 BESTELLEN► http://finch-live.de/\nKANAL ABONNiEREN..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ZO_MHVDiQZc&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "ZO_MHVDiQZc", + "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&siu=1&msp=1&odepv=1&id=64efcc1d50e24197&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 5 seconds" + } + }, + "simpleText": "2:05" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/channel/UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "FiNCH" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcBEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLcBEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "ZO_MHVDiQZc" + ] + } + }, + "openMiniplayer": true, + "videoId": "ZO_MHVDiQZc", + "videoIds": [ + "ZO_MHVDiQZc" + ] + }, + "clickTrackingParams": "CLcBEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLcBEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "ZO_MHVDiQZc" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "ZO_MHVDiQZc" + }, + "clickTrackingParams": "CLYBEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLYBEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLUBENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CLUBENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "ZO_MHVDiQZc" + } + }, + "videoId": "ZO_MHVDiQZc" + } + }, + "trackingParams": "CLUBENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CLQBEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtaT19NSFZEaVFaYw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLMBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CLMBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "ZO_MHVDiQZc", + "undoToken": "AB9zfpKVE65zpkUmhIEZb6WxR-6vtNZ64Cf5rloNgJvJ3UmN5SXe5amjfJqg7zquM_nYZxEQBqPfyrw2xzMjn_B0XBl2ZP3Yt1k9dt7IOPlTylTfplgrk2pUm3XwkjNNWjeKQgdkpTzVi157-buchbWvYsjsmVTQzw" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CLMBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CLIBEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "ZO_MHVDiQZc", + "feedbackToken": "AB9zfpLBglGcae7XbfoccEp6cIWOa_IVK0-wzPRGeqAiePvaE8DLCDU_xuMgzKzxrTIHJn679n04uv83VD7WbZOdNlteAWV_RLhnL7g6bxQhMYgeJA_aIC_ApjBVrgFMH4yrUdHZBLt8", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ZO_MHVDiQZc", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "ZO_MHVDiQZc", + "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&siu=1&msp=1&odepv=1&id=64efcc1d50e24197&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/channel/UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "FiNCH" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/channel/UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "FiNCH" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "107K views" + } + }, + "simpleText": "107K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/ZO_MHVDiQZc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA8_gaDQsm8OcnAbuh02LRtPrc7VA", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/ZO_MHVDiQZc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLABZ3yElepRnwZyR2LJQvgCXhN1Kg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/ZO_MHVDiQZc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA9C5D-4Z5qbBjdlDE8ft2sZ1payw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 5 seconds" + } + }, + "simpleText": "2:05" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLEBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "ZO_MHVDiQZc" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CLEBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLEBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "ZO_MHVDiQZc" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CLABEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLABEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLABEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "ZO_MHVDiQZc" + ] + } + }, + "openMiniplayer": true, + "videoId": "ZO_MHVDiQZc", + "videoIds": [ + "ZO_MHVDiQZc" + ] + }, + "clickTrackingParams": "CLABEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "FiNCH - WiEDER ANGESAGT (Visualizer) by FiNCH 107,497 views 5 days ago 2 minutes, 5 seconds" + } + }, + "runs": [ + { + "text": "FiNCH - WiEDER ANGESAGT (Visualizer)" + } + ] + }, + "trackingParams": "CK8BENwwIhMInfL4orPDigMVbHR6BR25GwwEQJeDiYfVg_P3ZA==", + "videoId": "ZO_MHVDiQZc", + "viewCountText": { + "simpleText": "107,497 views" + } + } + }, + "trackingParams": "CK4BEJmNBRhWIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "DREiNACHTEN EP STREAMEN► https://wtw.lnk.to/dreinachten\nALBUM JETZT VORBESTELLEN► https://schlussmitlustig.shop/\nTiCKETS ZUR ARENA TOUR 2025 BESTELLEN► http://finch-live.de/\nKANAL ABONNiEREN..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=kNZAnOQ8Y4w&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "kNZAnOQ8Y4w", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=90d6409ce43c638c&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 16 seconds" + } + }, + "simpleText": "2:16" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/channel/UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "FiNCH" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0BEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CK0BEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "kNZAnOQ8Y4w" + ] + } + }, + "openMiniplayer": true, + "videoId": "kNZAnOQ8Y4w", + "videoIds": [ + "kNZAnOQ8Y4w" + ] + }, + "clickTrackingParams": "CK0BEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CK0BEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "kNZAnOQ8Y4w" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "kNZAnOQ8Y4w" + }, + "clickTrackingParams": "CKwBEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKwBEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKsBENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CKsBENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "kNZAnOQ8Y4w" + } + }, + "videoId": "kNZAnOQ8Y4w" + } + }, + "trackingParams": "CKsBENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CKoBEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtrTlpBbk9ROFk0dw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKkBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CKkBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "kNZAnOQ8Y4w", + "undoToken": "AB9zfpInlQBq_9e5uvCcp7h33KdLaXlEhr5DTvj9HgEFHOIWyypUzoJK9CcDssD_4MlLZGIo5n8j1xnp-Qg_4eMK-s0jnmVz6uotiXq96a4mIjpf0E3mchQIGbgJ_qy4dTrzO-uUe0dV" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CKkBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CKgBEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "kNZAnOQ8Y4w", + "feedbackToken": "AB9zfpIsmVa5DOtxbCpYiHWpABWXeptTEC_IUVHbvcdiMJTwYXU-nfg8W1XNyO3isC62mUCJVarXTizJ7Iy8ZcCupOPJihS9NJFIbPIRkyu-oVy_NbjaGrktPJrM37mUST-kGHMCZrHy", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=kNZAnOQ8Y4w", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "kNZAnOQ8Y4w", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=90d6409ce43c638c&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/channel/UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "FiNCH" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/channel/UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "FiNCH" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "180K views" + } + }, + "simpleText": "180K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/kNZAnOQ8Y4w/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBXHKJhk_MKmOxKe4uTQ6ylbK6eGg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/kNZAnOQ8Y4w/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBYXPOsFcoBk6hIpDPQN1BuEIRyBA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/kNZAnOQ8Y4w/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD-6xH064PYerFcJwFKhtBZkDKWvA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 16 seconds" + } + }, + "simpleText": "2:16" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKcBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "kNZAnOQ8Y4w" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CKcBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKcBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "kNZAnOQ8Y4w" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CKYBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKYBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKYBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "kNZAnOQ8Y4w" + ] + } + }, + "openMiniplayer": true, + "videoId": "kNZAnOQ8Y4w", + "videoIds": [ + "kNZAnOQ8Y4w" + ] + }, + "clickTrackingParams": "CKYBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "FiNCH - NEVER STOP (Visualizer) by FiNCH 180,744 views 5 days ago 2 minutes, 16 seconds" + } + }, + "runs": [ + { + "text": "FiNCH - NEVER STOP (Visualizer)" + } + ] + }, + "trackingParams": "CKUBENwwIhMInfL4orPDigMVbHR6BR25GwwEQIzH8aHOk5DrkAE=", + "videoId": "kNZAnOQ8Y4w", + "viewCountText": { + "simpleText": "180,744 views" + } + } + }, + "trackingParams": "CKQBEJmNBRhXIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "DREiNACHTEN EP STREAMEN► https://wtw.lnk.to/dreinachten\nALBUM JETZT VORBESTELLEN► https://schlussmitlustig.shop/\nTiCKETS ZUR ARENA TOUR 2025 BESTELLEN► http://finch-live.de/\nKANAL ABONNiEREN..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=usMaoeE1gKE&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "usMaoeE1gKE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&siu=1&msp=1&odepv=1&id=bac31aa1e13580a1&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 10 seconds" + } + }, + "simpleText": "2:10" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/channel/UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "FiNCH" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKMBEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKMBEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "usMaoeE1gKE" + ] + } + }, + "openMiniplayer": true, + "videoId": "usMaoeE1gKE", + "videoIds": [ + "usMaoeE1gKE" + ] + }, + "clickTrackingParams": "CKMBEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKMBEP6YBBgKIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "usMaoeE1gKE" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "usMaoeE1gKE" + }, + "clickTrackingParams": "CKIBEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKIBEJSsCRgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKEBENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CKEBENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "usMaoeE1gKE" + } + }, + "videoId": "usMaoeE1gKE" + } + }, + "trackingParams": "CKEBENGqBRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CKABEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgt1c01hb2VFMWdLRQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJ8BEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJ8BEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "usMaoeE1gKE", + "undoToken": "AB9zfpIrAI5tbwkjyUi5kZAciWKj8-0YWKjkuM2TZJyDMCFUWczI74fTkQsu50fWAABgUVDc3XLD7FNYTZpucDwfRxvskFuV66tjmJ5db34RGSH8RXopZyPe4bjoT12D1uMGTD19zM1O" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJ8BEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJ4BEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "usMaoeE1gKE", + "feedbackToken": "AB9zfpLisrd9y8T9hblBKzKXrDfbdx05GC5Peg20sZnyjqjA1fYGBar-UuRkEaYdUMqvvMTbgSzVswZWfT6PqhSkKYfdqhtsC9MInuRTaGN_3dO87jwGuwznTEqtPGb5D7OiIQRMPp0z", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=usMaoeE1gKE", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "usMaoeE1gKE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&siu=1&msp=1&odepv=1&id=bac31aa1e13580a1&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/channel/UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "FiNCH" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/channel/UC3eP48LEsxo4moTFYrOrG9A" + }, + "clickTrackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC3eP48LEsxo4moTFYrOrG9A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "FiNCH" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "154K views" + } + }, + "simpleText": "154K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/usMaoeE1gKE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA0DygVcaf6UGlrtpzYvBZxaTJCzg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/usMaoeE1gKE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAWRnX2L-EHkgNFufEpjcej5yoE_g", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/usMaoeE1gKE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB4D7vShYWo7DhM2e4sCqp0Uug47g", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 10 seconds" + } + }, + "simpleText": "2:10" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJ0BEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "usMaoeE1gKE" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CJ0BEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJ0BEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "usMaoeE1gKE" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CJwBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJwBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJwBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "usMaoeE1gKE" + ] + } + }, + "openMiniplayer": true, + "videoId": "usMaoeE1gKE", + "videoIds": [ + "usMaoeE1gKE" + ] + }, + "clickTrackingParams": "CJwBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "FiNCH - GMKH by FiNCH 154,057 views 5 days ago 2 minutes, 10 seconds" + } + }, + "runs": [ + { + "text": "FiNCH - GMKH" + } + ] + }, + "trackingParams": "CJsBENwwIhMInfL4orPDigMVbHR6BR25GwwEQKGB1ome1MbhugE=", + "videoId": "usMaoeE1gKE", + "viewCountText": { + "simpleText": "154,057 views" + } + } + }, + "trackingParams": "CJoBEJmNBRhYIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Go to https://ground.news/ltt to get 50% off the Ground News Vantage plan. Outsmart algorithms and optimize the way you read the news.\n\nCheckout MSI’s laptops deals at https://msi.gm/S621A5A8..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=PcnWneULGAQ&t=1s&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "startTimeSeconds": 1, + "videoId": "PcnWneULGAQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&siu=1&msp=1&odepv=1&id=3dc9d69de50b1804&ip=79.205.219.142&osts=1&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "18 minutes, 13 seconds" + } + }, + "simpleText": "18:13" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkBEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJkBEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "PcnWneULGAQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "PcnWneULGAQ", + "videoIds": [ + "PcnWneULGAQ" + ] + }, + "clickTrackingParams": "CJkBEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJkBEP6YBBgMIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "PcnWneULGAQ" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "PcnWneULGAQ" + }, + "clickTrackingParams": "CJgBEJSsCRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJgBEJSsCRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJcBENGqBRgPIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CJcBENGqBRgPIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "PcnWneULGAQ" + } + }, + "videoId": "PcnWneULGAQ" + } + }, + "trackingParams": "CJcBENGqBRgPIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CJYBEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtQY25XbmVVTEdBUQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJUBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CJUBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "PcnWneULGAQ", + "undoToken": "AB9zfpLoZMQZvEm2SMB8SmH5NdKv0b9tHCGnwAquoNIGbMI27lRdvsAEv9TbUi0JNWEpe27DYCefXtBzH-Ed8c9HcERETPHWtdcG1xa2llYOnbd24RWb6qBkAVdkNB3OMT56_oIlDv4a" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CJUBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CJQBEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "PcnWneULGAQ", + "feedbackToken": "AB9zfpJwiLmB2uPPiuOCDxA7LpYL6xG28Nk-L34LodrNaIolkHYSrKcn7HUJTPtmSSvsDVXNf_yAL0a7rrtvMejisRX1yQ2QkPJ99LuzqZ_dYYkTK9K8s6R7K4wAmzu-DmfI9Of4IKhf", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=PcnWneULGAQ&t=1s", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "params": "uAIB", + "startTimeSeconds": 1, + "videoId": "PcnWneULGAQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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&siu=1&msp=1&odepv=1&id=3dc9d69de50b1804&ip=79.205.219.142&osts=1&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/PcnWneULGAQ/mqdefault_6s.webp?du=3000&sqp=CIzMsLsG&rs=AOn4CLBj6KqbS38uQoftKbTnzjCu851HXg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + }, + "clickTrackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Linus Tech Tips" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.7 million views" + } + }, + "simpleText": "1.7M views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/PcnWneULGAQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAXZd7_Fr3Up9XkHn6QNezPKcGS9w", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/PcnWneULGAQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLARoTX17ApJ3ZedvOJSTxaBQ_eVrA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/PcnWneULGAQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAVxhfeqfetPC2F_4JNV2ScR0FQeA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayResumePlaybackRenderer": { + "percentDurationWatched": 10 + } + }, + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "18 minutes, 13 seconds" + } + }, + "simpleText": "18:13" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJMBEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "PcnWneULGAQ" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CJMBEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJMBEPnnAxgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "PcnWneULGAQ" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CJIBEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJIBEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJIBEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "PcnWneULGAQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "PcnWneULGAQ", + "videoIds": [ + "PcnWneULGAQ" + ] + }, + "clickTrackingParams": "CJIBEMfsBBgEIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Is Buying a PETABYTE on Ebay Stupid? by Linus Tech Tips 1,749,525 views 5 days ago 18 minutes" + } + }, + "runs": [ + { + "text": "Is Buying a PETABYTE on Ebay Stupid?" + } + ] + }, + "trackingParams": "CJEBENwwIhMInfL4orPDigMVbHR6BR25GwwEQISwrKje0_XkPQ==", + "videoId": "PcnWneULGAQ", + "viewCountText": { + "simpleText": "1,749,525 views" + } + } + }, + "trackingParams": "CJABEJmNBRhZIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "From small clubs to the world’s biggest stages – Avicii took the world by storm with Levels. Discover Tim Bergling's story and see where it all began in the documentary Avicii - I’m Tim..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=X6sbHrfIcYI&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "X6sbHrfIcYI", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=5fab1b1eb7c87182&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 2 seconds" + } + }, + "simpleText": "1:02" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8BEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CI8BEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "X6sbHrfIcYI" + ] + } + }, + "openMiniplayer": true, + "videoId": "X6sbHrfIcYI", + "videoIds": [ + "X6sbHrfIcYI" + ] + }, + "clickTrackingParams": "CI8BEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CI8BEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "X6sbHrfIcYI" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "X6sbHrfIcYI" + }, + "clickTrackingParams": "CI4BEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CI4BEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CI0BENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CI0BENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "X6sbHrfIcYI" + } + }, + "videoId": "X6sbHrfIcYI" + } + }, + "trackingParams": "CI0BENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CIwBEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtYNnNiSHJmSWNZSQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIsBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIsBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "X6sbHrfIcYI", + "undoToken": "AB9zfpKQjjR7TRnewoGN5TTHAMfinIMYpi0WUxtev1-DvcRbFuS5DeHizpdSBngv3xi6Ss8ZXSojlUD_gVWhc9e8l0Di0p-8sddq8KcxWbINRCl8yCPgNDJBbjoD7p9Ya3UJ4eDeT_zl0ZjcqgBeXvxFQdGnN0Y_Jw" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CIsBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CIoBEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "X6sbHrfIcYI", + "feedbackToken": "AB9zfpLoCKLE0718TgJn-ntovna4IUioBPDIB8q88VmaK7Dozm8EJdIW5CQv8XuzRQbYdRWzxrWnLtoXzgQrAyl_BPnple-dj69B3TZpmu0Y9TBJ75KcElLBv1-g9UX2qEesuzYu8EAp", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "trackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwEMgZnLWhpZ2haD0ZFc3Vic2NyaXB0aW9uc5oBBwi3ARDw8AU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=X6sbHrfIcYI", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "X6sbHrfIcYI", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=5fab1b1eb7c87182&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/X6sbHrfIcYI/mqdefault_6s.webp?du=3000&sqp=CI7usLsG&rs=AOn4CLCv5KN0-MThVM2D6mW2Ls-k5CgmCA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "41K views" + } + }, + "simpleText": "41K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/X6sbHrfIcYI/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCRrrvfgSDQ7YId4coVIbrOmaWpMQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/X6sbHrfIcYI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDF4VH-N9slpMTRxRTQEqtKGdHRRg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/X6sbHrfIcYI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBmQHzIEm9OsDoaSFhqH3TvB8-PuQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 2 seconds" + } + }, + "simpleText": "1:02" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIkBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "X6sbHrfIcYI" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CIkBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIkBEPnnAxgCIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "X6sbHrfIcYI" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CIgBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIgBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIgBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "X6sbHrfIcYI" + ] + } + }, + "openMiniplayer": true, + "videoId": "X6sbHrfIcYI", + "videoIds": [ + "X6sbHrfIcYI" + ] + }, + "clickTrackingParams": "CIgBEMfsBBgDIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Avicii - I’m Tim | Sneak Peek | Netflix by Netflix 41,189 views 5 days ago 1 minute, 2 seconds" + } + }, + "runs": [ + { + "text": "Avicii - I’m Tim | Sneak Peek | Netflix" + } + ] + }, + "trackingParams": "CIcBENwwIhMInfL4orPDigMVbHR6BR25GwwEQILjob7r48bVXw==", + "videoId": "X6sbHrfIcYI", + "viewCountText": { + "simpleText": "41,189 views" + } + } + }, + "trackingParams": "CIYBEJmNBRhaIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/in43p8oqmcxvsiLuIj3hJZwU-ToArJZg-jdzfF534h5hmKNHO7e2JPN_r7g0y2Fp2xSJ_HnOrN0=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCJl-cGDSoGlB86vB_3scwAQ" + }, + "clickTrackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCJl-cGDSoGlB86vB_3scwAQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCJl-cGDSoGlB86vB_3scwAQ" + }, + "clickTrackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCJl-cGDSoGlB86vB_3scwAQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/in43p8oqmcxvsiLuIj3hJZwU-ToArJZg-jdzfF534h5hmKNHO7e2JPN_r7g0y2Fp2xSJ_HnOrN0=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "► Komm auf meine Tour: https://bausa-tickets.com\n\n►VIDEO\nAbonniere Bausa auf YouTube, um kein neues Video zu verpassen: http://smarturl.it/BAUSA_YouTube \n\n►BAUSA IM NETZ\nTikTok: https://www.t..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=pDMVpVXDfbg&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "pDMVpVXDfbg", + "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&siu=1&msp=1&odepv=1&id=a43315a555c37db8&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "15 minutes" + } + }, + "simpleText": "15:00" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCJl-cGDSoGlB86vB_3scwAQ", + "canonicalBaseUrl": "/channel/UCJl-cGDSoGlB86vB_3scwAQ" + }, + "clickTrackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCJl-cGDSoGlB86vB_3scwAQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "bausashaus" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIUBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIUBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "pDMVpVXDfbg" + ] + } + }, + "openMiniplayer": true, + "videoId": "pDMVpVXDfbg", + "videoIds": [ + "pDMVpVXDfbg" + ] + }, + "clickTrackingParams": "CIUBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIUBEP6YBBgLIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "pDMVpVXDfbg" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "pDMVpVXDfbg" + }, + "clickTrackingParams": "CIQBEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CIQBEJSsCRgNIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIMBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CIMBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "pDMVpVXDfbg" + } + }, + "videoId": "pDMVpVXDfbg" + } + }, + "trackingParams": "CIMBENGqBRgOIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CIIBEI5iIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtwRE1WcFZYRGZiZw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIEBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CIEBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "pDMVpVXDfbg", + "undoToken": "AB9zfpKH9eairuBouHpTNKOegHNoi-VnI_xX_ZI-I-X8cXWSygaR7D9g5t0PhIAdl5RZFWnEeFP9dlFytSLV45usqPtlblLB8vAnACpYoxugYyQLmXM05Do3uEjRqXKXQCXeq9hHe2CfLcQ1nofhP7oPZOJ-QmmZ2w" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CIEBEPBbGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CIABEKW8ASITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + } + } + ], + "contentId": "pDMVpVXDfbg", + "feedbackToken": "AB9zfpLdIeBPkvspD2TRLtH0gCMiNFkiKmK9Wqh7BrrMtwBYFF5urWmVlCTClbmtDLnKb2EO0zfzVJYR7BgKrcRldLLZxN1OBZhejosGtL2KZniffvBTU0ffhcKpFpYbOca3199-w1Fo", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=pDMVpVXDfbg", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "pDMVpVXDfbg", + "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&siu=1&msp=1&odepv=1&id=a43315a555c37db8&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCJl-cGDSoGlB86vB_3scwAQ", + "canonicalBaseUrl": "/channel/UCJl-cGDSoGlB86vB_3scwAQ" + }, + "clickTrackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCJl-cGDSoGlB86vB_3scwAQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "bausashaus" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/pDMVpVXDfbg/mqdefault_6s.webp?du=3000&sqp=CMDCsLsG&rs=AOn4CLA6PYd4jcP0JDe6Ws25lOas0GQf8Q", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCJl-cGDSoGlB86vB_3scwAQ", + "canonicalBaseUrl": "/channel/UCJl-cGDSoGlB86vB_3scwAQ" + }, + "clickTrackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCJl-cGDSoGlB86vB_3scwAQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "bausashaus" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "11K views" + } + }, + "simpleText": "11K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/pDMVpVXDfbg/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCbkoBPVDAPLuirTPvu0WqibNCZpg", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/pDMVpVXDfbg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC94o5W7ctvHtu5ysr3p_nBI2Pvng", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/pDMVpVXDfbg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDTaKt5IduG29C20ASuYhCZA87hUg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "15 minutes" + } + }, + "simpleText": "15:00" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CH8Q-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "pDMVpVXDfbg" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CH8Q-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CH8Q-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "pDMVpVXDfbg" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CH4Qx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CH4Qx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CH4Qx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "pDMVpVXDfbg" + ] + } + }, + "openMiniplayer": true, + "videoId": "pDMVpVXDfbg", + "videoIds": [ + "pDMVpVXDfbg" + ] + }, + "clickTrackingParams": "CH4Qx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "ICON LEAGUE GEWONNEN! & mein Gastauftritt beim TREAM Konzert by bausashaus 11,137 views 5 days ago 15 minutes" + } + }, + "runs": [ + { + "text": "ICON LEAGUE GEWONNEN! & mein Gastauftritt beim TREAM Konzert" + } + ] + }, + "trackingParams": "CH0Q3DAiEwid8viis8OKAxVsdHoFHbkbDARAuPuNrtW0xZmkAQ==", + "videoId": "pDMVpVXDfbg", + "viewCountText": { + "simpleText": "11,137 views" + } + } + }, + "trackingParams": "CHwQmY0FGFsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "How far would you go to live forever - or even just slow down the aging process? This startling documentary by Chris Smith (Fyre, 100 Foot Wave) is told through intimate access to Bryan Johnson,..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=kf9e1o7rUeo&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "kf9e1o7rUeo", + "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&siu=1&msp=1&odepv=1&id=91ff5ed68eeb51ea&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 13 seconds" + } + }, + "simpleText": "2:13" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHsQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHsQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "kf9e1o7rUeo" + ] + } + }, + "openMiniplayer": true, + "videoId": "kf9e1o7rUeo", + "videoIds": [ + "kf9e1o7rUeo" + ] + }, + "clickTrackingParams": "CHsQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CHsQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "kf9e1o7rUeo" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "kf9e1o7rUeo" + }, + "clickTrackingParams": "CHoQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CHoQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CHkQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CHkQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "kf9e1o7rUeo" + } + }, + "videoId": "kf9e1o7rUeo" + } + }, + "trackingParams": "CHkQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CHgQjmIiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtrZjllMW83clVlbw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CHcQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CHcQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "kf9e1o7rUeo", + "undoToken": "AB9zfpKYdaXeCBVgyszxZuqTcgbkaQZkHLp85DVlNSePxAeJleSyJQ9zO86revW1yTRMnIRuneFbWuYmX6Msz4RfhCb3UEPrSJeuFUn3qaddAsTdE9BYSRtAtFVFI939WhRxfQvEYVADvP2b4jkj7RW0lyW2RqXx-Q" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CHcQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CHYQpbwBIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + } + } + ], + "contentId": "kf9e1o7rUeo", + "feedbackToken": "AB9zfpKwa9RzR8kTF3LQ9Wl8tiIXgHXUlzmJrMG92lhCMobo3u0f-YvfB2FQenzAAihk3u0VsKAeZjyN3QsRTVbjJYPpuAx7cFW4E5zE8yp5d2MrfxyK91bemraPO7WycKjt7hsZOQRK", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=kf9e1o7rUeo", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "kf9e1o7rUeo", + "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&siu=1&msp=1&odepv=1&id=91ff5ed68eeb51ea&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "publishedTimeText": { + "simpleText": "5 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/kf9e1o7rUeo/mqdefault_6s.webp?du=3000&sqp=CMzmsLsG&rs=AOn4CLD1KHSarqWlUSPJ5m-L17PXTcrJoA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "203K views" + } + }, + "simpleText": "203K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/kf9e1o7rUeo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAGmAdhoe2RXjEKZaEIXZLK1SgEiw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/kf9e1o7rUeo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDguPfkCwUek0D5K8rBKnjrrxXA5A", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/kf9e1o7rUeo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDEJ_m8eYz4muYrcscYc-hmkDOOig", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 13 seconds" + } + }, + "simpleText": "2:13" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CHUQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "kf9e1o7rUeo" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CHUQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CHUQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "kf9e1o7rUeo" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CHQQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CHQQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHQQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "kf9e1o7rUeo" + ] + } + }, + "openMiniplayer": true, + "videoId": "kf9e1o7rUeo", + "videoIds": [ + "kf9e1o7rUeo" + ] + }, + "clickTrackingParams": "CHQQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Don't Die: The Man Who Wants to Live Forever | Official Trailer | Netflix by Netflix 203,200 views 5 days ago 2 minutes, 13 seconds" + } + }, + "runs": [ + { + "text": "Don't Die: The Man Who Wants to Live Forever | Official Trailer | Netflix" + } + ] + }, + "trackingParams": "CHMQ3DAiEwid8viis8OKAxVsdHoFHbkbDARA6qOt9-ja1_-RAQ==", + "videoId": "kf9e1o7rUeo", + "viewCountText": { + "simpleText": "203,200 views" + } + } + }, + "trackingParams": "CHIQmY0FGFwiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/WHvw1ak1FcJaHeEiTmG2iN0dqEjjPxAtT_tA8ruJ3MlNr9I-RHsAur1iAenYeQN_d6LNPH2Z8Ic=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC0WP5P-ufpRfjbNrmOWwLBQ" + }, + "clickTrackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0WP5P-ufpRfjbNrmOWwLBQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0WP5P-ufpRfjbNrmOWwLBQ" + }, + "clickTrackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0WP5P-ufpRfjbNrmOWwLBQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/WHvw1ak1FcJaHeEiTmG2iN0dqEjjPxAtT_tA8ruJ3MlNr9I-RHsAur1iAenYeQN_d6LNPH2Z8Ic=s68-c-k-c0x00ffffff-no-rj", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Music video by The Weeknd, Anitta performing São Paulo (The Making of 'São Paulo' | Vevo Footnotes).© 2024 The Weeknd XO Music ULC, marketed by Republic Records, a division of UMG Recordings, Inc." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=PUZBEpPffV4&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "PUZBEpPffV4", + "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&siu=1&msp=1&odepv=1&id=3d46411293df7d5e&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 24 seconds" + } + }, + "simpleText": "3:24" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0WP5P-ufpRfjbNrmOWwLBQ", + "canonicalBaseUrl": "/channel/UC0WP5P-ufpRfjbNrmOWwLBQ" + }, + "clickTrackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0WP5P-ufpRfjbNrmOWwLBQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "The Weeknd" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHEQ_pgEGAoiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHEQ_pgEGAoiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "PUZBEpPffV4" + ] + } + }, + "openMiniplayer": true, + "videoId": "PUZBEpPffV4", + "videoIds": [ + "PUZBEpPffV4" + ] + }, + "clickTrackingParams": "CHEQ_pgEGAoiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CHEQ_pgEGAoiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "PUZBEpPffV4" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "PUZBEpPffV4" + }, + "clickTrackingParams": "CHAQlKwJGAwiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CHAQlKwJGAwiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CG8Q0aoFGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CG8Q0aoFGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "PUZBEpPffV4" + } + }, + "videoId": "PUZBEpPffV4" + } + }, + "trackingParams": "CG8Q0aoFGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CG4QjmIiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtQVVpCRXBQZmZWNA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CG0Q8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CG0Q8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "PUZBEpPffV4", + "undoToken": "AB9zfpIoBd8uhhaNrWrIay6oxBEVswav5BHEJMWIqbnE5AJsYSFk-DHIxa3kWME4lILrlqQMs11iTJjmHj494_JA7s09VpyNvDsSkesanLDOfu1yqWlkocNgsIrlEe2Uv257BJaJTssQcJKmNNpivAjxv204QqKs0w" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CG0Q8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CGwQpbwBIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + } + } + ], + "contentId": "PUZBEpPffV4", + "feedbackToken": "AB9zfpKf-5Pv5PuME-1ZSgaoVKCTma7cZZQSp1Oma3aMkVCrlRTjf5SX7ZkRpn9bIP4n6UUOvSGMCrreDHByiFId1ZptYbZGYz9z1BWcbdUI9VEWT8iddR_TUW7vJdINuwf6OjntKxAo", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=PUZBEpPffV4", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "PUZBEpPffV4", + "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&siu=1&msp=1&odepv=1&id=3d46411293df7d5e&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Official Artist Channel" + }, + "icon": { + "iconType": "AUDIO_BADGE" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0WP5P-ufpRfjbNrmOWwLBQ", + "canonicalBaseUrl": "/channel/UC0WP5P-ufpRfjbNrmOWwLBQ" + }, + "clickTrackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0WP5P-ufpRfjbNrmOWwLBQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "The Weeknd" + } + ] + }, + "publishedTimeText": { + "simpleText": "6 days ago" + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0WP5P-ufpRfjbNrmOWwLBQ", + "canonicalBaseUrl": "/channel/UC0WP5P-ufpRfjbNrmOWwLBQ" + }, + "clickTrackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0WP5P-ufpRfjbNrmOWwLBQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "The Weeknd" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "96K views" + } + }, + "simpleText": "96K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/PUZBEpPffV4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDePeTeD9en_RluckBW5r_9okOlNQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/PUZBEpPffV4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCRHd2wvCWEYnqEqg8yRdGwqTJBdA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/PUZBEpPffV4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDGuEDZYrpeyzuKgfCYkEBgTigKOg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 24 seconds" + } + }, + "simpleText": "3:24" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CGsQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "PUZBEpPffV4" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CGsQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CGsQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "PUZBEpPffV4" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CGoQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CGoQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGoQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "PUZBEpPffV4" + ] + } + }, + "openMiniplayer": true, + "videoId": "PUZBEpPffV4", + "videoIds": [ + "PUZBEpPffV4" + ] + }, + "clickTrackingParams": "CGoQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "The Weeknd, Anitta - São Paulo (The Making of 'São Paulo' | Vevo Footnotes) by The Weeknd 96,209 views 6 days ago 3 minutes, 24 seconds" + } + }, + "runs": [ + { + "text": "The Weeknd, Anitta - São Paulo (The Making of 'São Paulo' | Vevo Footnotes)" + } + ] + }, + "trackingParams": "CGkQ3DAiEwid8viis8OKAxVsdHoFHbkbDARA3vr9nqmikKM9", + "videoId": "PUZBEpPffV4", + "viewCountText": { + "simpleText": "96,209 views" + } + } + }, + "trackingParams": "CGgQmY0FGF0iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/enyLBm1Sy8mVRXJJLWHT2z64nqxJGt2g61A9xnxpUjO2YAUovHaY_JT3rnAg0j6Qij9iaHQlAg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "canonicalBaseUrl": "/@Mrwhosetheboss" + }, + "clickTrackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Mrwhosetheboss", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "canonicalBaseUrl": "/@Mrwhosetheboss" + }, + "clickTrackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Mrwhosetheboss", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/enyLBm1Sy8mVRXJJLWHT2z64nqxJGt2g61A9xnxpUjO2YAUovHaY_JT3rnAg0j6Qij9iaHQlAg=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "So yeah, the MrBeast Beast Games are wilder than you think - I have NEVER seen Tech like this just to make ONE YOUTUBE VIDEO\n\nI spend a LOT of time trying to make my videos as concise, polished..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=-hlwlML6pEg&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "-hlwlML6pEg", + "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&siu=1&msp=1&odepv=1&id=fa197094c2faa448&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "35 minutes, 12 seconds" + } + }, + "simpleText": "35:12" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "canonicalBaseUrl": "/@Mrwhosetheboss" + }, + "clickTrackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Mrwhosetheboss", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Mrwhosetheboss" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGcQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGcQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "-hlwlML6pEg" + ] + } + }, + "openMiniplayer": true, + "videoId": "-hlwlML6pEg", + "videoIds": [ + "-hlwlML6pEg" + ] + }, + "clickTrackingParams": "CGcQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CGcQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "-hlwlML6pEg" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "-hlwlML6pEg" + }, + "clickTrackingParams": "CGYQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CGYQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CGUQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CGUQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "-hlwlML6pEg" + } + }, + "videoId": "-hlwlML6pEg" + } + }, + "trackingParams": "CGUQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CGQQjmIiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgstaGx3bE1MNnBFZw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CGMQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CGMQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "-hlwlML6pEg", + "undoToken": "AB9zfpK-YV48XW2ZjrFRhLwpExbRvgRBio7pKMRwqg1LDdPpcjpU3gov0NoYAEVvGuQa3-DuSxWEAmRNsQ-9dYmDJyurPcn-pdjgM1f7ej2Vcgh8pI_yE4HH3VaScAJ-owEeltyv4R0jvzByiz1KhGvlycd12hY3_A" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CGMQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CGIQpbwBIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + } + } + ], + "contentId": "-hlwlML6pEg", + "feedbackToken": "AB9zfpLDIpztxDhTXQrwxQTBiQh5-bVJwlvsVU46wDMR-ZZBTV7AD3lvACYQNJeb-nV0FIerZnDwcLcxcVfRZrD2XxXk98IKAj5-ovkEmMcIHTwLIZ7FLS95CJWXOwKy4tsEuOw5CXCM", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=-hlwlML6pEg", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "-hlwlML6pEg", + "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&siu=1&msp=1&odepv=1&id=fa197094c2faa448&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "canonicalBaseUrl": "/@Mrwhosetheboss" + }, + "clickTrackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Mrwhosetheboss", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Mrwhosetheboss" + } + ] + }, + "publishedTimeText": { + "simpleText": "6 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/-hlwlML6pEg/mqdefault_6s.webp?du=3000&sqp=CMDxsLsG&rs=AOn4CLC5GGNhOnNtYTgMGpZT89uVeaHF5g", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "canonicalBaseUrl": "/@Mrwhosetheboss" + }, + "clickTrackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Mrwhosetheboss", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Mrwhosetheboss" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "2.8 million views" + } + }, + "simpleText": "2.8M views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/-hlwlML6pEg/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCQ9oGROGnCmdKKxpvo_N7oZ7WBXQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/-hlwlML6pEg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDExO_OU8M9_Bhwhjiu88UNB80eog", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/-hlwlML6pEg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAm9-mKlP4vO38XSlkXBjYPGkE9eQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "35 minutes, 12 seconds" + } + }, + "simpleText": "35:12" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CGEQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "-hlwlML6pEg" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CGEQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CGEQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "-hlwlML6pEg" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CGAQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CGAQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGAQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "-hlwlML6pEg" + ] + } + }, + "openMiniplayer": true, + "videoId": "-hlwlML6pEg", + "videoIds": [ + "-hlwlML6pEg" + ] + }, + "clickTrackingParams": "CGAQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "The INSANE Tech behind MrBeast’s Biggest Video Ever by Mrwhosetheboss 2,848,369 views 6 days ago 35 minutes" + } + }, + "runs": [ + { + "text": "The INSANE Tech behind MrBeast’s Biggest Video Ever" + } + ] + }, + "trackingParams": "CF8Q3DAiEwid8viis8OKAxVsdHoFHbkbDARAyMjql8yS3Iz6AQ==", + "videoId": "-hlwlML6pEg", + "viewCountText": { + "simpleText": "2,848,369 views" + } + } + }, + "trackingParams": "CF4QmY0FGF4iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/fxGKYucJAVme-Yz4fsdCroCFCrANWqw0ql4GYuvx8Uq4l_euNJHgE-w9MTkLQA805vWCi-kE0g=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCX6OQ3DkcsbYNE6H8uQQuVA", + "canonicalBaseUrl": "/@MrBeast" + }, + "clickTrackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@MrBeast", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCX6OQ3DkcsbYNE6H8uQQuVA", + "canonicalBaseUrl": "/@MrBeast" + }, + "clickTrackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@MrBeast", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/fxGKYucJAVme-Yz4fsdCroCFCrANWqw0ql4GYuvx8Uq4l_euNJHgE-w9MTkLQA805vWCi-kE0g=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Watch Beast Games now on Prime Video: https://unfur.ly/BeastGames\nThank you to @MoneyLion for partnering with me on Beast Games. You can enter the MoneyLion Beast Games Giveaway where over..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=gs8qfL9PNac&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "gs8qfL9PNac", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=82cf2a7cbf4f35a7&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "24 minutes, 45 seconds" + } + }, + "simpleText": "24:45" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCX6OQ3DkcsbYNE6H8uQQuVA", + "canonicalBaseUrl": "/@MrBeast" + }, + "clickTrackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@MrBeast", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "MrBeast" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF0Q_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CF0Q_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "gs8qfL9PNac" + ] + } + }, + "openMiniplayer": true, + "videoId": "gs8qfL9PNac", + "videoIds": [ + "gs8qfL9PNac" + ] + }, + "clickTrackingParams": "CF0Q_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CF0Q_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "gs8qfL9PNac" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "gs8qfL9PNac" + }, + "clickTrackingParams": "CFwQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CFwQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CFsQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CFsQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "gs8qfL9PNac" + } + }, + "videoId": "gs8qfL9PNac" + } + }, + "trackingParams": "CFsQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CFoQjmIiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtnczhxZkw5UE5hYw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CFkQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CFkQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "gs8qfL9PNac", + "undoToken": "AB9zfpINIB2EKXmUs154_tuOHWJBWQA3dB4K5UfBgzeSc30MYoeQZ7DFZpk5QIj0QzN--iAoCEbwzVQe7tsHaZ_4SL5IDbxZb6_zhYosSbWdtAqZ4iXHs2NRJqOsQopy8oS0cKOx0xVD" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CFkQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CFgQpbwBIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + } + } + ], + "contentId": "gs8qfL9PNac", + "feedbackToken": "AB9zfpJ-PISR8KHS8aAxuoCH10AD9TJ4se9L7WwYxYJJI8taNklQnu5UGEWbkLt2CNCVtEwtbhtzDeMyzxv7arnDHgwhjvSRxWR-TI4Cnd4ppBdyBHQIh1oOonhzBDHW-LFU0GWXuI6Y", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=gs8qfL9PNac", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "gs8qfL9PNac", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---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&siu=1&msp=1&odepv=1&id=82cf2a7cbf4f35a7&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCX6OQ3DkcsbYNE6H8uQQuVA", + "canonicalBaseUrl": "/@MrBeast" + }, + "clickTrackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@MrBeast", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "MrBeast" + } + ] + }, + "publishedTimeText": { + "simpleText": "6 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/gs8qfL9PNac/mqdefault_6s.webp?du=3000&sqp=CJXnsLsG&rs=AOn4CLBMhPrhvO_30ZsQDC4yr0nykWwprQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCX6OQ3DkcsbYNE6H8uQQuVA", + "canonicalBaseUrl": "/@MrBeast" + }, + "clickTrackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@MrBeast", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "MrBeast" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "102 million views" + } + }, + "simpleText": "102M views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/gs8qfL9PNac/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCzS16uP4cvK5DiFh9wr-qlrjG95A", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/gs8qfL9PNac/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDW2cuqfOIMKq-9zmjXaaDLXwn5zg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/gs8qfL9PNac/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDVXNvdoLQtrim9tkoS6hOMD-iJ8A", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "24 minutes, 45 seconds" + } + }, + "simpleText": "24:45" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CFcQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "gs8qfL9PNac" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CFcQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CFcQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "gs8qfL9PNac" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CFYQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CFYQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFYQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "gs8qfL9PNac" + ] + } + }, + "openMiniplayer": true, + "videoId": "gs8qfL9PNac", + "videoIds": [ + "gs8qfL9PNac" + ] + }, + "clickTrackingParams": "CFYQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "2,000 People Fight For $5,000,000 by MrBeast 102,498,876 views 6 days ago 24 minutes" + } + }, + "runs": [ + { + "text": "2,000 People Fight For $5,000,000" + } + ] + }, + "trackingParams": "CFUQ3DAiEwid8viis8OKAxVsdHoFHbkbDARAp-u8-svPyueCAQ==", + "videoId": "gs8qfL9PNac", + "viewCountText": { + "simpleText": "102,498,876 views" + } + } + }, + "trackingParams": "CFQQmY0FGF8iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "In 2025 go inside the story of the Dallas Cowboys owner, president and general manager Jerry Jones risked everything for a chance at transforming and leading the franchise to three NFL titles..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=nUUr_UkTrVE&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "nUUr_UkTrVE", + "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&siu=1&msp=1&odepv=1&id=9d452bfd4913ad51&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "45 seconds" + } + }, + "simpleText": "0:45" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFMQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFMQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "nUUr_UkTrVE" + ] + } + }, + "openMiniplayer": true, + "videoId": "nUUr_UkTrVE", + "videoIds": [ + "nUUr_UkTrVE" + ] + }, + "clickTrackingParams": "CFMQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CFMQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "nUUr_UkTrVE" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "nUUr_UkTrVE" + }, + "clickTrackingParams": "CFIQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CFIQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CFEQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CFEQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "nUUr_UkTrVE" + } + }, + "videoId": "nUUr_UkTrVE" + } + }, + "trackingParams": "CFEQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CFAQjmIiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtuVVVyX1VrVHJWRQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CE8Q8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CE8Q8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "nUUr_UkTrVE", + "undoToken": "AB9zfpLGC_ESxSrRFqFssJJnkx1JYgOdjy3akB9XvZmlvH2Wg8zd1Cu3e6ZwseEHBoW6nqWJHtKr0LjThV76_LbNibQm4dfQurj9p2kRUK9IgybflByJXowgvj9drCR_7PZf7K--K2Ru" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CE8Q8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CE4QpbwBIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + } + } + ], + "contentId": "nUUr_UkTrVE", + "feedbackToken": "AB9zfpIqAUUxaWthgbf3Gx5N4rcQC5ku8HG5tGMTCj6xBIqE4SXgql4XKyD7o2tRy3tyv4vM0f1CP5vk3BM1Ejdakb73IGKI4g2S-AC23lR3QCRvsCZXFerIrLIrLX2hDGLZG7FIYEXe", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=nUUr_UkTrVE", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "nUUr_UkTrVE", + "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&siu=1&msp=1&odepv=1&id=9d452bfd4913ad51&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "publishedTimeText": { + "simpleText": "6 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/nUUr_UkTrVE/mqdefault_6s.webp?du=3000&sqp=CJbzsLsG&rs=AOn4CLCFeAQGE2Yib_xRF9Wtjn3noiZcWA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "26K views" + } + }, + "simpleText": "26K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/nUUr_UkTrVE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLByLJeZstt86AtcBdGG6dYl8iDvmw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/nUUr_UkTrVE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAyZBR7Imjdq5-lJVCwdO0qvx2EuQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/nUUr_UkTrVE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBu3HtVjGVcNSOqnRy98F060rN2IA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "45 seconds" + } + }, + "simpleText": "0:45" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CE0Q-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "nUUr_UkTrVE" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CE0Q-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CE0Q-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "nUUr_UkTrVE" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CEwQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CEwQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEwQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "nUUr_UkTrVE" + ] + } + }, + "openMiniplayer": true, + "videoId": "nUUr_UkTrVE", + "videoIds": [ + "nUUr_UkTrVE" + ] + }, + "clickTrackingParams": "CEwQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "America's Team: The Gambler and His Cowboys | First Look | Netflix by Netflix 26,152 views 6 days ago 45 seconds" + } + }, + "runs": [ + { + "text": "America's Team: The Gambler and His Cowboys | First Look | Netflix" + } + ] + }, + "trackingParams": "CEsQ3DAiEwid8viis8OKAxVsdHoFHbkbDARA0drOyNT_yqKdAQ==", + "videoId": "nUUr_UkTrVE", + "viewCountText": { + "simpleText": "26,152 views" + } + } + }, + "trackingParams": "CEoQmY0FGGAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "This week's EYE ON NPI is an EYE ON A PI - it's the Raspberry Pi Compute Module 5 (https://www.digikey.com/en/product-highlight/r/raspberry-pi/raspberry-pi-compute-module-5), the latest update..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=4OVJekZzNyo&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "4OVJekZzNyo", + "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&siu=1&msp=1&odepv=1&id=e0e5497a4673372a&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "12 minutes, 42 seconds" + } + }, + "simpleText": "12:42" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEkQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEkQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "4OVJekZzNyo" + ] + } + }, + "openMiniplayer": true, + "videoId": "4OVJekZzNyo", + "videoIds": [ + "4OVJekZzNyo" + ] + }, + "clickTrackingParams": "CEkQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CEkQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "4OVJekZzNyo" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "4OVJekZzNyo" + }, + "clickTrackingParams": "CEgQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CEgQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CEcQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CEcQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "4OVJekZzNyo" + } + }, + "videoId": "4OVJekZzNyo" + } + }, + "trackingParams": "CEcQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CEYQjmIiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgs0T1ZKZWtaek55bw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CEUQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CEUQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "4OVJekZzNyo", + "undoToken": "AB9zfpLlGJ6-Ry2SNRvju-VDhR09TW0IIQIjDT68b1OkgC540C_y3kt5GeBdz1Kq4UBG21GKXmN9jjVS48WbhjWhhS1SXH0ErTWazuIaqvNZevptVTKAUF0R7yQ2GGszwV6VCs1grN1A" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CEUQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CEQQpbwBIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + } + } + ], + "contentId": "4OVJekZzNyo", + "feedbackToken": "AB9zfpI08TqUTmPWGZC2iKZiFPvL9oqlsdEJbGGlbpXRLzRmtQHWMmGZyc_41ZTq5OcAbFpA8aNbVEnSOHEIlo9z69TqU8Q6Cliu0VlRXDt1rshpFOKhUiuQ2srw8PTNDZBh3MHG-juT", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=4OVJekZzNyo", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "4OVJekZzNyo", + "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&siu=1&msp=1&odepv=1&id=e0e5497a4673372a&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "publishedTimeText": { + "simpleText": "6 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/4OVJekZzNyo/mqdefault_6s.webp?du=3000&sqp=COLdsLsG&rs=AOn4CLDId8hkYWJiJ9le0ESMNG8WqnLmwg", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.3K views" + } + }, + "simpleText": "1.3K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/4OVJekZzNyo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCXNG8hMN1q8M9ls9ybU9DgDenBVQ", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/4OVJekZzNyo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCou-3rAuICeV7BcvguulBSVic7BA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/4OVJekZzNyo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA-JtVXsMWbRNRLOuftX_EW_ujUgQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "12 minutes, 42 seconds" + } + }, + "simpleText": "12:42" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CEMQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "4OVJekZzNyo" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CEMQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CEMQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "4OVJekZzNyo" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CEIQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CEIQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEIQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "4OVJekZzNyo" + ] + } + }, + "openMiniplayer": true, + "videoId": "4OVJekZzNyo", + "videoIds": [ + "4OVJekZzNyo" + ] + }, + "clickTrackingParams": "CEIQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "EYE on NPI - Raspberry Pi Compute Module 5 #EYEonNPI #DigiKey #adafruit @DigiKey @raspberrypiorg by Adafruit Industries 1,332 views 6 days ago 12 minutes, 42 seconds" + } + }, + "runs": [ + { + "text": "EYE on NPI - Raspberry Pi Compute Module 5 #EYEonNPI #DigiKey #adafruit @DigiKey @raspberrypiorg" + } + ] + }, + "trackingParams": "CEEQ3DAiEwid8viis8OKAxVsdHoFHbkbDARAqu7Ms6Sv0vLgAQ==", + "videoId": "4OVJekZzNyo", + "viewCountText": { + "simpleText": "1,332 views" + } + } + }, + "trackingParams": "CEAQmY0FGGEiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The hush-hush news from Adafruit in Industry City, Brooklyn, New York. Broadcast December 18, 2024\n\nThese are items or concept products that may/might/could be introduced into the Adafruit..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=YYCtqaP8aw4&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "YYCtqaP8aw4", + "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&siu=1&msp=1&odepv=1&id=6180ada9a3fc6b0e&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "15 minutes, 16 seconds" + } + }, + "simpleText": "15:16" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CD8Q_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CD8Q_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "YYCtqaP8aw4" + ] + } + }, + "openMiniplayer": true, + "videoId": "YYCtqaP8aw4", + "videoIds": [ + "YYCtqaP8aw4" + ] + }, + "clickTrackingParams": "CD8Q_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CD8Q_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "YYCtqaP8aw4" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "YYCtqaP8aw4" + }, + "clickTrackingParams": "CD4QlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CD4QlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CD0Q0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CD0Q0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "YYCtqaP8aw4" + } + }, + "videoId": "YYCtqaP8aw4" + } + }, + "trackingParams": "CD0Q0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CDwQjmIiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtZWUN0cWFQOGF3NA%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CDsQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CDsQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "YYCtqaP8aw4", + "undoToken": "AB9zfpKuJSRcQKTjXqrPYU-zGS-4_d2aHZw4Y9UAbxYY7ZOWZvHpSRhpQSwLFzPb69hiqMjT16S8yn32srOZaUOvjrnBoDnoWOLxiJWj646x-90Nhbl_KcWVgInd_3HXEbHZIs9EDG7b" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CDsQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CDoQpbwBIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + } + } + ], + "contentId": "YYCtqaP8aw4", + "feedbackToken": "AB9zfpKV72P7-WzgmfoJZUnvrkIL6LkZbu7tM5alGI3-x3hri-nFgxKOP2B7DdwJoFqVYSJ6F3-nnphXOxrOWbPzXrryQgn6FTiD6OOUvxKgYZP40NVZIHLgQwdeAYwst-JgU9pdEH8K", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=YYCtqaP8aw4", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "YYCtqaP8aw4", + "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&siu=1&msp=1&odepv=1&id=6180ada9a3fc6b0e&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "publishedTimeText": { + "simpleText": "6 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/YYCtqaP8aw4/mqdefault_6s.webp?du=3000&sqp=COzhsLsG&rs=AOn4CLCxt9mlCDJiZZ732XTJzb8CVcTbgQ", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.8K views" + } + }, + "simpleText": "1.8K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/YYCtqaP8aw4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDElyw9dR964qms-rDtDnxNaJCxag", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/YYCtqaP8aw4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD-Pu_X63_7H9h_-ichnzh4HHC2zw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/YYCtqaP8aw4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCkSuXPMWHgSvgmRLlVYy3XeSky7A", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "15 minutes, 16 seconds" + } + }, + "simpleText": "15:16" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CDkQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "YYCtqaP8aw4" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CDkQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CDkQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "YYCtqaP8aw4" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CDgQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CDgQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDgQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "YYCtqaP8aw4" + ] + } + }, + "openMiniplayer": true, + "videoId": "YYCtqaP8aw4", + "videoIds": [ + "YYCtqaP8aw4" + ] + }, + "clickTrackingParams": "CDgQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Adafruit Top Secret for December 18, 2024 #adafruit by Adafruit Industries 1,811 views 6 days ago 15 minutes" + } + }, + "runs": [ + { + "text": "Adafruit Top Secret for December 18, 2024 #adafruit" + } + ] + }, + "trackingParams": "CDcQ3DAiEwid8viis8OKAxVsdHoFHbkbDARAjtbxn5q1q8Bh", + "videoId": "YYCtqaP8aw4", + "viewCountText": { + "simpleText": "1,811 views" + } + } + }, + "trackingParams": "CDYQmY0FGGIiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The wonderful world of Python on hardware! Episode 301 (December 18, 2024). This is our weekly Python video highlights! Ladyada and PT review the Python on hardware news of the week.\n\nThe news..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=HJcvJjTh1gU&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "HJcvJjTh1gU", + "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&siu=1&msp=1&odepv=1&id=1c972f2634e1d605&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 54 seconds" + } + }, + "simpleText": "3:54" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDUQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDUQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "HJcvJjTh1gU" + ] + } + }, + "openMiniplayer": true, + "videoId": "HJcvJjTh1gU", + "videoIds": [ + "HJcvJjTh1gU" + ] + }, + "clickTrackingParams": "CDUQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CDUQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "HJcvJjTh1gU" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "HJcvJjTh1gU" + }, + "clickTrackingParams": "CDQQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CDQQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CDMQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CDMQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "HJcvJjTh1gU" + } + }, + "videoId": "HJcvJjTh1gU" + } + }, + "trackingParams": "CDMQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CDIQjmIiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "CgtISmN2SmpUaDFnVQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CDEQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CDEQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "HJcvJjTh1gU", + "undoToken": "AB9zfpJhwFMWEZ6BUEZwNMc45hZAP2hLbWhpDNh0iWSNEdxbAEB-7OLbJvUPZFHv99acIBisL35uQ8bMyV2dUp3_Xi--Lv5mAUUUbp-lCN0COgcfJSApVzC0SvWvoj2F-uXXlcnwA6oyMsfvQc2kZxBisLIISQgVsg" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CDEQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CDAQpbwBIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + } + } + ], + "contentId": "HJcvJjTh1gU", + "feedbackToken": "AB9zfpJ4rkmrIgk3K7WKNBPdziueMfIqGHKzCcDrMRaJw5u2PQQi8W6RsWcQgkeyWrGqH27g0S6sGaYoplhq_964SpyxlecMCo3QcL-dq9HS5rwxjLt7Uz7pnIwqiXBw7risIPxJZKHK", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=HJcvJjTh1gU", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "HJcvJjTh1gU", + "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&siu=1&msp=1&odepv=1&id=1c972f2634e1d605&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "publishedTimeText": { + "simpleText": "6 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/HJcvJjTh1gU/mqdefault_6s.webp?du=3000&sqp=CLv1sLsG&rs=AOn4CLDlH5ty4f_rHBhlMMh8o33iz_jqJA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + }, + "clickTrackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adafruit Industries" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "320 views" + } + }, + "simpleText": "320 views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/HJcvJjTh1gU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCd-xrQb52Fy8iEebtT68IuyxCR-g", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/HJcvJjTh1gU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB5xWaRLC0dn1xsl1nYMs_qVpcEVw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/HJcvJjTh1gU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAt12TmSnuGSHpA1rECp7ghVpCwbw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 54 seconds" + } + }, + "simpleText": "3:54" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CC8Q-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "HJcvJjTh1gU" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CC8Q-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CC8Q-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "HJcvJjTh1gU" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CC4Qx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CC4Qx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CC4Qx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "HJcvJjTh1gU" + ] + } + }, + "openMiniplayer": true, + "videoId": "HJcvJjTh1gU", + "videoIds": [ + "HJcvJjTh1gU" + ] + }, + "clickTrackingParams": "CC4Qx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Python on Hardware weekly video for December 18, 2024 by Adafruit Industries 320 views 6 days ago 3 minutes, 54 seconds" + } + }, + "runs": [ + { + "text": "Python on Hardware weekly video for December 18, 2024" + } + ] + }, + "trackingParams": "CC0Q3DAiEwid8viis8OKAxVsdHoFHbkbDARAhayHp-Pky8sc", + "videoId": "HJcvJjTh1gU", + "viewCountText": { + "simpleText": "320 views" + } + } + }, + "trackingParams": "CCwQmY0FGGMiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lAKf-vZLoTI-gZUoP5Y3gbdGd07E4eDHUhTee6aOzDCnU=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UC5UAwBUum7CPN5buc-_N1Fw", + "canonicalBaseUrl": "/@TheLinuxEXP" + }, + "clickTrackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TheLinuxEXP", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC5UAwBUum7CPN5buc-_N1Fw", + "canonicalBaseUrl": "/@TheLinuxEXP" + }, + "clickTrackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TheLinuxEXP", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lAKf-vZLoTI-gZUoP5Y3gbdGd07E4eDHUhTee6aOzDCnU=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Try out Proton Mail, the secure email that protects your privacy: https://proton.me/mail/TheLinuxEXP\n\n👏 SUPPORT THE CHANNEL:\nGet access to:\n- a Daily Linux News show\n- a weekly patroncast..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=5J9yh1i0sog&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "5J9yh1i0sog", + "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&siu=1&msp=1&odepv=1&id=e49f728758b4b288&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "19 minutes, 48 seconds" + } + }, + "simpleText": "19:48" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC5UAwBUum7CPN5buc-_N1Fw", + "canonicalBaseUrl": "/@TheLinuxEXP" + }, + "clickTrackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TheLinuxEXP", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "The Linux Experiment" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCsQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCsQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "5J9yh1i0sog" + ] + } + }, + "openMiniplayer": true, + "videoId": "5J9yh1i0sog", + "videoIds": [ + "5J9yh1i0sog" + ] + }, + "clickTrackingParams": "CCsQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCsQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "5J9yh1i0sog" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "5J9yh1i0sog" + }, + "clickTrackingParams": "CCoQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CCoQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CCkQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CCkQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "5J9yh1i0sog" + } + }, + "videoId": "5J9yh1i0sog" + } + }, + "trackingParams": "CCkQ0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CCgQjmIiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgs1Sjl5aDFpMHNvZw%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CCcQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CCcQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "5J9yh1i0sog", + "undoToken": "AB9zfpIUXYjfNrfsG94ze3KT9in8BNLMeJdS0eInZr3uZmmwh2DXdfZwJh6OKocFe6SGa1lZLuE9SuuMedXcXTNQT_cWfAQfnwGomFkDuX2m5IsxP_f51NsZ7vmVWuwD4oOUwtbICtzf" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CCcQ8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CCYQpbwBIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + } + } + ], + "contentId": "5J9yh1i0sog", + "feedbackToken": "AB9zfpKhq3MXMk7LeVa8PcFsOmWd9CYnHoDrC3RdlTTcducjpyo6Xa2xFYUu2heWVj0x3onYTpaUTic2uNlnm3Gd3RPVfe-wE6t7VGJfiex1gqCwUotkHgDptskuVA2wnZ1A3octlnFI", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=5J9yh1i0sog", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "5J9yh1i0sog", + "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&siu=1&msp=1&odepv=1&id=e49f728758b4b288&ip=79.205.219.142&initcwndbps=2498750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC5UAwBUum7CPN5buc-_N1Fw", + "canonicalBaseUrl": "/@TheLinuxEXP" + }, + "clickTrackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TheLinuxEXP", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "The Linux Experiment" + } + ] + }, + "publishedTimeText": { + "simpleText": "6 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/5J9yh1i0sog/mqdefault_6s.webp?du=3000&sqp=CNDdsLsG&rs=AOn4CLDCUUl7sOGtkAqxtd2zTLI4CyNQRw", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC5UAwBUum7CPN5buc-_N1Fw", + "canonicalBaseUrl": "/@TheLinuxEXP" + }, + "clickTrackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@TheLinuxEXP", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "The Linux Experiment" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "54K views" + } + }, + "simpleText": "54K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/5J9yh1i0sog/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB0fECDa34hlxwkuCDQVOFNx9x4Gw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/5J9yh1i0sog/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLALX0F2qb45rXSath5qZ8p82osQ9Q", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/5J9yh1i0sog/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAddj0wDC-AxfMUPPF5zqXTIQrSoQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "19 minutes, 48 seconds" + } + }, + "simpleText": "19:48" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CCUQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "5J9yh1i0sog" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CCUQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CCUQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "5J9yh1i0sog" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CCQQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CCQQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCQQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "5J9yh1i0sog" + ] + } + }, + "openMiniplayer": true, + "videoId": "5J9yh1i0sog", + "videoIds": [ + "5J9yh1i0sog" + ] + }, + "clickTrackingParams": "CCQQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "FRAMEWORK 16: an almost perfect Linux laptop by The Linux Experiment 54,920 views 6 days ago 19 minutes" + } + }, + "runs": [ + { + "text": "FRAMEWORK 16: an almost perfect Linux laptop" + } + ] + }, + "trackingParams": "CCMQ3DAiEwid8viis8OKAxVsdHoFHbkbDARAiOXSxfXQ3M_kAQ==", + "videoId": "5J9yh1i0sog", + "viewCountText": { + "simpleText": "54,920 views" + } + } + }, + "trackingParams": "CCIQmY0FGGQiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "avatar": { + "decoratedAvatarViewModel": { + "a11yLabel": "Go to channel", + "avatar": { + "avatarViewModel": { + "avatarImageSize": "AVATAR_SIZE_M", + "image": { + "sources": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + } + } + } + } + } + }, + "channelThumbnailSupportedRenderers": { + "channelThumbnailWithLinkRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Go to channel" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 68, + "url": "https://yt3.ggpht.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s68-c-k-c0x00ffffff-no-rj-mo", + "width": 68 + } + ] + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Gabriel “Fluffy” Iglesias’s new stand-up special, LEGEND OF FLUFFY, will premiere globally on January 7, 2025!\n\nIn Gabriel Iglesias: Legend of Fluffy (which marks his 27th year in comedy!),..." + } + ] + }, + "inlinePlaybackEndpoint": { + "clickTrackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ybzJy_jdJgA&pp=YAHIAQE%3D", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "playerExtraUrlParams": [ + { + "key": "inline", + "value": "1" + } + ], + "playerParams": "YAHIAQE%3D", + "videoId": "ybzJy_jdJgA", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&siu=1&msp=1&odepv=1&id=c9bcc9cbf8dd2600&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 11 seconds" + } + }, + "simpleText": "1:11" + }, + "longBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCEQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCEQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "ybzJy_jdJgA" + ] + } + }, + "openMiniplayer": true, + "videoId": "ybzJy_jdJgA", + "videoIds": [ + "ybzJy_jdJgA" + ] + }, + "clickTrackingParams": "CCEQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCEQ_pgEGAsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "WATCH_LATER" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "ybzJy_jdJgA" + } + ], + "playlistId": "WL" + } + }, + "text": { + "runs": [ + { + "text": "Save to Watch later" + } + ] + }, + "trackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "PLAYLIST_ADD" + }, + "serviceEndpoint": { + "addToPlaylistServiceEndpoint": { + "videoId": "ybzJy_jdJgA" + }, + "clickTrackingParams": "CCAQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/get_add_to_playlist", + "sendPost": true + } + } + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CCAQlKwJGA0iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CB8Q0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "offlineVideoEndpoint": { + "onAddCommand": { + "clickTrackingParams": "CB8Q0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "getDownloadActionCommand": { + "params": "CAIQAA%3D%3D", + "videoId": "ybzJy_jdJgA" + } + }, + "videoId": "ybzJy_jdJgA" + } + }, + "trackingParams": "CB8Q0aoFGA4iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "hasSeparator": true, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CB4QjmIiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "Cgt5YnpKeV9qZEpnQQ%3D%3D" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "NOT_INTERESTED" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "feedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "replaceEnclosingAction": { + "item": { + "notificationMultiActionRenderer": { + "buttons": [ + { + "buttonRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CB0Q8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/feedback", + "sendPost": true + } + }, + "undoFeedbackEndpoint": { + "actions": [ + { + "clickTrackingParams": "CB0Q8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "undoFeedbackAction": { + "hack": true + } + } + ], + "contentId": "ybzJy_jdJgA", + "undoToken": "AB9zfpIQTM3A4GVQ86WZ55oat5gIJDrte_u-kxNqIHJVepwLws7MiB25lDzjVGyVQwQPUP7WVENhf3DqswiVjEnLAhQu1MZVyNuLvbjoqxG2HaKbir1qq9_FNPHA7fWxwMrAUHQZaQbs" + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Undo" + }, + "trackingParams": "CB0Q8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + } + ], + "dismissalViewStyle": "DISMISSAL_VIEW_STYLE_COMPACT_TALL", + "responseText": { + "runs": [ + { + "text": "Video hidden from feed" + } + ] + }, + "trackingParams": "CBwQpbwBIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + } + } + ], + "contentId": "ybzJy_jdJgA", + "feedbackToken": "AB9zfpL0CeJVkplPqvGLZ_Sc1CeLRBf-y1CIcHSVxCgsmzn5dkPybiKuml6_ubo0Bmsh69YLikDuwToTevaHShS0vZcwCqIgv4xpkPwi1kprXxiegciUMmts3zO2hg9gSAnZYOWEZUJN", + "uiActions": { + "hideEnclosingContainer": true + } + } + }, + "text": { + "runs": [ + { + "text": "Hide" + } + ] + }, + "trackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQyBmctaGlnaFoPRkVzdWJzY3JpcHRpb25zmgEHCLcBEPDwBQ==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ybzJy_jdJgA", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "videoId": "ybzJy_jdJgA", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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&siu=1&msp=1&odepv=1&id=c9bcc9cbf8dd2600&ip=79.205.219.142&initcwndbps=2518750&mt=1735146095&oweuc=&pxtags=Cg4KAnR4Egg1MTMzNzAwMA&rxtags=Cg4KAnR4Egg1MTMzNjk5OQ%2CCg4KAnR4Egg1MTMzNzAwMA%2CCg4KAnR4Egg1MTMzNzAwMQ" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "accessibilityData": { + "label": "Verified" + }, + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "ownerText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "publishedTimeText": { + "simpleText": "6 days ago" + }, + "richThumbnail": { + "movingThumbnailRenderer": { + "enableHoveredLogging": true, + "enableOverlay": true, + "movingThumbnailDetails": { + "logAsMovingThumbnail": true, + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/an_webp/ybzJy_jdJgA/mqdefault_6s.webp?du=3000&sqp=CMDxsLsG&rs=AOn4CLDyIpuyMaRvm9s5pATD9r_l6Jz8JA", + "width": 320 + } + ] + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + }, + "clickTrackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Netflix" + } + ] + }, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "156K views" + } + }, + "simpleText": "156K views" + }, + "showActionMenu": false, + "thumbnail": { + "thumbnails": [ + { + "height": 118, + "url": "https://i.ytimg.com/vi/ybzJy_jdJgA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMgRM-ruPs_5XwliLtOLie_xSVrw", + "width": 210 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/ybzJy_jdJgA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB-1CYJp2X5xMI4d_idpyXvtU8pfA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/ybzJy_jdJgA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAcFJESbHyVp3hlErAfVAsQLip5Bw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 11 seconds" + } + }, + "simpleText": "1:11" + } + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CBsQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "ybzJy_jdJgA" + } + ], + "playlistId": "WL" + } + }, + "toggledTooltip": "Added", + "trackingParams": "CBsQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CBsQ-ecDGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse/edit_playlist", + "sendPost": true + } + }, + "playlistEditEndpoint": { + "actions": [ + { + "action": "ACTION_ADD_VIDEO", + "addedVideoId": "ybzJy_jdJgA" + } + ], + "playlistId": "WL" + } + }, + "untoggledTooltip": "Watch later" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Added", + "trackingParams": "CBoQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "untoggledServiceEndpoint": { + "clickTrackingParams": "CBoQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CBoQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "ybzJy_jdJgA" + ] + } + }, + "openMiniplayer": true, + "videoId": "ybzJy_jdJgA", + "videoIds": [ + "ybzJy_jdJgA" + ] + }, + "clickTrackingParams": "CBoQx-wEGAMiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "untoggledTooltip": "Add to queue" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + }, + { + "thumbnailOverlayLoadingPreviewRenderer": { + "text": { + "runs": [ + { + "text": "Keep hovering to play" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Gabriel Iglesias: Legend of Fluffy | Official Trailer | Netflix by Netflix 156,642 views 6 days ago 1 minute, 11 seconds" + } + }, + "runs": [ + { + "text": "Gabriel Iglesias: Legend of Fluffy | Official Trailer | Netflix" + } + ] + }, + "trackingParams": "CBkQ3DAiEwid8viis8OKAxVsdHoFHbkbDARAgMz0xr-5st7JAQ==", + "videoId": "ybzJy_jdJgA", + "viewCountText": { + "simpleText": "156,642 views" + } + } + }, + "trackingParams": "CBgQmY0FGGUiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "continuationItemRenderer": { + "continuationEndpoint": { + "clickTrackingParams": "CBcQ8eIEIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "sendPost": true + } + }, + "continuationCommand": { + "request": "CONTINUATION_REQUEST_TYPE_BROWSE", + "token": "4qmFsgKSARIPRkVzdWJzY3JpcHRpb25zGmJDR1Y2UUc5d1QwUjNkMnR4U1dkM1NYcGZWM2QxZDFsUk1Vb3lkbWhuU1hsR1VXOUhRMUJFY0d0TWMwZEZaM1ExV1c1d1MyVldPWEZhUlhCdVVWUnBVVUV3YUd6SUJnQSUzRJoCGmJyb3dzZS1mZWVkRkVzdWJzY3JpcHRpb25z" + } + }, + "ghostCards": { + "ghostGridRenderer": { + "rows": 2 + } + }, + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN" + } + } + ], + "reflowOptions": { + "minimumRowsOfVideosAtStart": 0, + "minimumRowsOfVideosBetweenSections": 2 + }, + "targetId": "browse-feedFEsubscriptions", + "trackingParams": "CBcQ8eIEIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "endpoint": { + "browseEndpoint": { + "browseId": "FEsubscriptions" + }, + "clickTrackingParams": "CBYQ8JMBGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 96368, + "url": "/feed/subscriptions", + "webPageType": "WEB_PAGE_TYPE_BROWSE" + } + } + }, + "selected": true, + "tabIdentifier": "FEsubscriptions", + "trackingParams": "CBYQ8JMBGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ] + } + }, + "header": { + "feedTabbedHeaderRenderer": { + "title": { + "runs": [ + { + "text": "Subscriptions" + } + ] + } + } + }, + "observedStateTags": [ + { + "instruction": "STATE_TAG_BROWSE_INSTRUCTION_MARK_AS_DIRTY", + "stateTag": 3 + } + ], + "responseContext": { + "mainAppWebResponseContext": { + "datasyncId": "102002197211592572023||", + "loggedOut": false, + "trackingParam": "kx_fmPxhoPZRX3Sa0UH4sbCdHzunU0gUzYbnr5kCU01P7AwRgkuswmIBwOcCE59TDtslLKPQ-SS" + }, + "maxAgeSeconds": 300, + "serviceTrackingParams": [ + { + "params": [ + { + "key": "browse_id", + "value": "FEsubscriptions" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "1" + }, + { + "key": "e", + "value": "9405963,23804281,23813628,23943577,23986015,24004644,24077241,24166867,24181174,24241378,24299875,24439361,24453989,24459436,24495712,24547317,24548629,24566687,24697013,24699899,39325854,39326986,51009781,51010235,51017346,51020570,51025415,51030101,51037342,51037353,51050361,51053689,51057842,51057853,51063643,51072748,51091058,51095478,51098299,51111738,51115184,51124104,51125020,51141472,51151423,51152050,51157411,51160545,51169118,51176511,51178314,51178327,51178344,51178351,51178982,51179884,51183909,51184990,51194137,51204329,51208678,51217504,51222382,51222973,51226938,51227037,51227778,51228850,51230478,51237842,51239093,51241028,51242448,51248255,51248734,51249751,51255676,51255743,51256084,51257943,51260634,51263449,51272458,51274583,51275785,51276557,51276565,51281227,51282792,51285052,51285717,51287196,51289922,51289929,51289938,51289958,51289965,51290036,51290043,51290404,51292055,51294322,51296439,51298020,51299710,51299724,51299973,51299999,51300018,51300176,51300241,51302680,51303432,51303667,51303669,51303789,51304155,51305839,51306256,51310742,51311025,51311034,51311505,51313109,51313767,51313802,51314158,51315910,51315919,51315928,51315931,51315938,51315945,51315956,51315963,51315972,51315979,51316744,51316844,51318845,51322669,51326208,51326281,51326932,51327144,51327163,51327180,51327613,51327615,51327636,51330194,51331485,51331500,51331520,51331535,51331538,51331545,51331552,51331561,51332896,51333541,51333878,51334535,51335365,51335392,51335594,51335646,51335928,51336633,51337000,51337139,51337186,51337349,51338524,51339007,51340662,51341214,51341226,51341443,51341730,51341974,51342579,51342857,51343368,51343796,51345228,51345295,51345629,51346352,51346795,51346816,51346823,51346836,51346849,51346868,51346879,51346896,51347325,51347576,51348208,51348354,51348672,51349880,51349914,51350306,51351446,51353231,51353361,51353393,51354114,51354507,51354569,51355268,51355273,51355291,51355307,51355312,51355337,51355342,51355417,51355679,51355912,51356304,51357477,51357777,51359172,51360108,51360123,51360140,51360212,51360215,51361727,51361828,51362003,51362040,51362071,51362455,51362643,51362674,51362857,51363725,51363734,51363741,51363756,51363761,51363772,51365460,51365716,51365751,51365987,51366423,51366620,51366864,51367318,51367487,51367605,51367993,51368502,51369325,51369559,51369905,51370175,51370739,51371001,51371006,51371522,51372699,51374017,51374193,51374439,51375011,51375168,51375719,51375867,51376050,51376515,51376764,51379209" + } + ], + "service": "GFEEDBACK" + }, + { + "params": [ + { + "key": "browse_id", + "value": "FEsubscriptions" + }, + { + "key": "browse_id_prefix", + "value": "" + } + ], + "service": "GOOGLE_HELP" + }, + { + "params": [ + { + "key": "c", + "value": "WEB" + }, + { + "key": "cver", + "value": "2.20241219.01.01" + }, + { + "key": "yt_li", + "value": "1" + }, + { + "key": "GetSubscriptions_rid", + "value": "0x55211a77a453dd7e" + } + ], + "service": "CSI" + }, + { + "params": [ + { + "key": "logged_in", + "value": "1" + } + ], + "service": "GUIDED_HELP" + }, + { + "params": [ + { + "key": "client.version", + "value": "2.20241219" + }, + { + "key": "client.name", + "value": "WEB" + } + ], + "service": "ECATCHER" + } + ], + "stateTags": { + "relevantStateTags": [ + { + "onStateTagModified": "STATE_TAG_CACHE_INSTRUCTION_EVICT_RESPONSE", + "stateTag": 3 + } + ] + }, + "visitorData": "CgtWTjZBLXZoYUxUUiiox627BjIKCgJVUxIEEgAgJQ%3D%3D", + "webResponseContextExtensionData": { + "hasDecorated": true + } + }, + "topbar": { + "desktopTopbarRenderer": { + "a11ySkipNavigationButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CAUQ8FsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "clickTrackingParams": "CAUQ8FsiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "signalAction": { + "signal": "SKIP_NAVIGATION" + } + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "text": { + "runs": [ + { + "text": "Skip navigation" + } + ] + }, + "trackingParams": "CAUQ8FsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "backButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CAcQvIYDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "clickTrackingParams": "CAcQvIYDIhMInfL4orPDigMVbHR6BR25GwwE", + "signalAction": { + "signal": "HISTORY_BACK" + } + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "trackingParams": "CAcQvIYDIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "forwardButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CAYQvYYDIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "clickTrackingParams": "CAYQvYYDIhMInfL4orPDigMVbHR6BR25GwwE", + "signalAction": { + "signal": "HISTORY_FORWARD" + } + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "trackingParams": "CAYQvYYDIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "hotkeyDialog": { + "hotkeyDialogRenderer": { + "dismissButton": { + "buttonRenderer": { + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Dismiss" + } + ] + }, + "trackingParams": "CAkQ8FsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "sections": [ + { + "hotkeyDialogSectionRenderer": { + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "k", + "label": { + "runs": [ + { + "text": "Toggle play/pause" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "j", + "label": { + "runs": [ + { + "text": "Rewind 10 seconds" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "l", + "label": { + "runs": [ + { + "text": "Fast forward 10 seconds" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "P (SHIFT+p)", + "label": { + "runs": [ + { + "text": "Previous video" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "N (SHIFT+n)", + "label": { + "runs": [ + { + "text": "Next video" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": ",", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Comma" + } + }, + "label": { + "runs": [ + { + "text": "Previous frame (while paused)" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": ".", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Period" + } + }, + "label": { + "runs": [ + { + "text": "Next frame (while paused)" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "< (SHIFT+,)", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Less than or SHIFT + comma" + } + }, + "label": { + "runs": [ + { + "text": "Decrease playback rate" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "> (SHIFT+.)", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Greater than or SHIFT + period" + } + }, + "label": { + "runs": [ + { + "text": "Increase playback rate" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "0..9", + "label": { + "runs": [ + { + "text": "Seek to specific point in the video (7 advances to 70% of duration)" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "CONTROL + ←", + "label": { + "runs": [ + { + "text": "Seek to previous chapter" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "CONTROL + →", + "label": { + "runs": [ + { + "text": "Seek to next chapter" + } + ] + } + } + } + ], + "title": { + "runs": [ + { + "text": "Playback" + } + ] + } + } + }, + { + "hotkeyDialogSectionRenderer": { + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "f", + "label": { + "runs": [ + { + "text": "Toggle full screen" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "t", + "label": { + "runs": [ + { + "text": "Toggle theater mode" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "i", + "label": { + "runs": [ + { + "text": "Toggle miniplayer" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "ESCAPE", + "label": { + "runs": [ + { + "text": "Close miniplayer or current dialog" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "m", + "label": { + "runs": [ + { + "text": "Toggle mute" + } + ] + } + } + } + ], + "title": { + "runs": [ + { + "text": "General" + } + ] + } + } + }, + { + "hotkeyDialogSectionRenderer": { + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "c", + "label": { + "runs": [ + { + "text": "If the video supports captions, toggle captions ON/OFF" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "o", + "label": { + "runs": [ + { + "text": "Rotate through different text opacity levels" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "w", + "label": { + "runs": [ + { + "text": "Rotate through different window opacity levels" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "+", + "label": { + "runs": [ + { + "text": "Rotate through font sizes (increasing)" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "-", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Minus" + } + }, + "label": { + "runs": [ + { + "text": "Rotate through font sizes (decreasing)" + } + ] + } + } + } + ], + "title": { + "runs": [ + { + "text": "Subtitles and closed captions" + } + ] + } + } + }, + { + "hotkeyDialogSectionRenderer": { + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "w", + "label": { + "runs": [ + { + "text": "Pan up" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "a", + "label": { + "runs": [ + { + "text": "Pan left" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "s", + "label": { + "runs": [ + { + "text": "Pan down" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "d", + "label": { + "runs": [ + { + "text": "Pan right" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "+ on numpad or ]", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Plus on number pad or right bracket" + } + }, + "label": { + "runs": [ + { + "text": "Zoom in" + } + ] + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "hotkey": "- on numpad or [", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Minus on number pad or left bracket" + } + }, + "label": { + "runs": [ + { + "text": "Zoom out" + } + ] + } + } + } + ], + "title": { + "runs": [ + { + "text": "Spherical Videos" + } + ] + } + } + } + ], + "title": { + "runs": [ + { + "text": "Keyboard shortcuts" + } + ] + }, + "trackingParams": "CAgQteYDIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "logo": { + "topbarLogoRenderer": { + "endpoint": { + "browseEndpoint": { + "browseId": "FEwhat_to_watch" + }, + "clickTrackingParams": "CBUQsV4iEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3854, + "url": "/", + "webPageType": "WEB_PAGE_TYPE_BROWSE" + } + } + }, + "iconImage": { + "iconType": "YOUTUBE_LOGO" + }, + "overrideEntityKey": "EgZ0b3BiYXIg9QEoAQ%3D%3D", + "tooltipText": { + "runs": [ + { + "text": "YouTube Home" + } + ] + }, + "trackingParams": "CBUQsV4iEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "searchbox": { + "fusionSearchboxRenderer": { + "clearButton": { + "buttonRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Clear search query" + } + }, + "icon": { + "iconType": "CLOSE" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CBQQ8FsiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "config": { + "webSearchboxConfig": { + "focusSearchbox": true, + "hasOnscreenKeyboard": false, + "requestDomain": "us", + "requestLanguage": "en" + } + }, + "icon": { + "iconType": "SEARCH" + }, + "placeholderText": { + "runs": [ + { + "text": "Search" + } + ] + }, + "searchEndpoint": { + "clickTrackingParams": "CBMQ7VAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 4724, + "url": "/results?search_query=", + "webPageType": "WEB_PAGE_TYPE_SEARCH" + } + }, + "searchEndpoint": { + "query": "" + } + }, + "trackingParams": "CBMQ7VAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + "topbarButtons": [ + { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CA4Q8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==", + "openPopupAction": { + "popup": { + "multiPageMenuRenderer": { + "sections": [ + { + "multiPageMenuSectionRenderer": { + "items": [ + { + "compactLinkRenderer": { + "icon": { + "iconType": "CREATION_UPLOAD" + }, + "serviceEndpoint": { + "channelCreationFormEndpoint": { + "channelCreationToken": "S0JRJTNE", + "source": "UPLOAD_POPUP_CHANNEL_CREATION_SOURCE" + }, + "clickTrackingParams": "CBIQ898CGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/channel/get_channel_creation_form", + "rootVe": 83769, + "url": "/create_channel?channel_creation_token=KBQ%253D", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN" + } + } + }, + "style": "COMPACT_LINK_STYLE_TYPE_CREATION_MENU", + "title": { + "runs": [ + { + "text": "Upload video" + } + ] + }, + "trackingParams": "CBIQ898CGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + }, + { + "compactLinkRenderer": { + "icon": { + "iconType": "CREATION_LIVE" + }, + "serviceEndpoint": { + "channelCreationFormEndpoint": { + "channelCreationToken": "S0JVJTNE", + "source": "GOLIVE_POPUP_CHANNEL_CREATION_SOURCE" + }, + "clickTrackingParams": "CBEQ9N8CGAEiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/channel/get_channel_creation_form", + "rootVe": 83769, + "url": "/create_channel?channel_creation_token=KBU%253D", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN" + } + } + }, + "style": "COMPACT_LINK_STYLE_TYPE_CREATION_MENU", + "title": { + "runs": [ + { + "text": "Go live" + } + ] + }, + "trackingParams": "CBEQ9N8CGAEiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CBAQ968BGAAiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "style": "MULTI_PAGE_MENU_STYLE_TYPE_CREATION", + "trackingParams": "CA8Q_6sBIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "RESPONSIVE_DROPDOWN" + } + }, + "icon": { + "iconType": "ADD" + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "text": { + "runs": [ + { + "text": "Create" + } + ] + }, + "trackingParams": "CA4Q8FsYACITCJ3y-KKzw4oDFWx0egUduRsMBA==" + } + }, + { + "notificationTopbarButtonRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Notifications" + } + }, + "handlerDatas": [ + "NOTIFICATION_ACTION_UPDATE_UNSEEN_COUNT" + ], + "icon": { + "iconType": "NOTIFICATIONS_CAIRO" + }, + "menuRequest": { + "clickTrackingParams": "CAwQovoBGAEiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "clickTrackingParams": "CAwQovoBGAEiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "openPopupAction": { + "beReused": true, + "popup": { + "multiPageMenuRenderer": { + "showLoadingSpinner": true, + "style": "MULTI_PAGE_MENU_STYLE_TYPE_NOTIFICATIONS", + "trackingParams": "CA0Q_6sBIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DROPDOWN" + } + } + ], + "signal": "GET_NOTIFICATIONS_INBOX" + } + }, + "notificationCount": 0, + "style": "NOTIFICATION_BUTTON_STYLE_TYPE_DEFAULT", + "tooltip": "Notifications", + "trackingParams": "CAwQovoBGAEiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "updateUnseenCountEndpoint": { + "clickTrackingParams": "CAwQovoBGAEiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/notification/get_unseen_count", + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "GET_UNSEEN_NOTIFICATION_COUNT" + } + } + } + }, + { + "topbarMenuButtonRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Account menu" + } + }, + "avatar": { + "accessibility": { + "accessibilityData": { + "label": "Avatar image" + } + }, + "thumbnails": [ + { + "height": 88, + "url": "https://yt3.ggpht.com/yti/ANjgQV94kaQX0pMszYcmEsgWdWw_cJhSFN_jRAt6Wk6r6g=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88 + } + ] + }, + "menuRequest": { + "clickTrackingParams": "CAoQ_qsBGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/account/account_menu", + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "clickTrackingParams": "CAoQ_qsBGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=", + "openPopupAction": { + "beReused": true, + "popup": { + "multiPageMenuRenderer": { + "showLoadingSpinner": true, + "style": "MULTI_PAGE_MENU_STYLE_TYPE_ACCOUNT", + "trackingParams": "CAsQ_6sBIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "DROPDOWN" + } + } + ], + "signal": "GET_ACCOUNT_MENU" + } + }, + "tooltip": "Account menu", + "trackingParams": "CAoQ_qsBGAIiEwid8viis8OKAxVsdHoFHbkbDAQ=" + } + } + ], + "trackingParams": "CAEQq6wBIhMInfL4orPDigMVbHR6BR25GwwE", + "voiceSearchButton": { + "buttonRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Search with your voice" + } + }, + "icon": { + "iconType": "MICROPHONE_ON" + }, + "isDisabled": false, + "serviceEndpoint": { + "clickTrackingParams": "CAIQ7a8FIhMInfL4orPDigMVbHR6BR25GwwE", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "clickTrackingParams": "CAIQ7a8FIhMInfL4orPDigMVbHR6BR25GwwE", + "openPopupAction": { + "popup": { + "voiceSearchDialogRenderer": { + "connectionErrorHeader": { + "runs": [ + { + "text": "No connection" + } + ] + }, + "connectionErrorMicrophoneLabel": { + "runs": [ + { + "text": "Check your connection and try again" + } + ] + }, + "disabledHeader": { + "runs": [ + { + "text": "Search with your voice" + } + ] + }, + "disabledSubtext": { + "runs": [ + { + "text": "To search by voice, go to your browser settings and allow access to microphone" + } + ] + }, + "exampleQuery1": { + "runs": [ + { + "text": "\"Play Dua Lipa\"" + } + ] + }, + "exampleQuery2": { + "runs": [ + { + "text": "\"Show me my subscriptions\"" + } + ] + }, + "exitButton": { + "buttonRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Cancel" + } + }, + "icon": { + "iconType": "CLOSE" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CAQQ0LEFIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "loadingHeader": { + "runs": [ + { + "text": "Working..." + } + ] + }, + "microphoneButtonAriaLabel": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "microphoneOffPromptHeader": { + "runs": [ + { + "text": "Microphone off. Try again." + } + ] + }, + "permissionsHeader": { + "runs": [ + { + "text": "Waiting for permission" + } + ] + }, + "permissionsSubtext": { + "runs": [ + { + "text": "Allow microphone access to search with voice" + } + ] + }, + "placeholderHeader": { + "runs": [ + { + "text": "Listening..." + } + ] + }, + "promptHeader": { + "runs": [ + { + "text": "Didn't hear that. Try again." + } + ] + }, + "promptMicrophoneLabel": { + "runs": [ + { + "text": "Tap microphone to try again" + } + ] + }, + "trackingParams": "CAMQ7q8FIhMInfL4orPDigMVbHR6BR25GwwE" + } + }, + "popupType": "TOP_ALIGNED_DIALOG" + } + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "tooltip": "Search with your voice", + "trackingParams": "CAIQ7a8FIhMInfL4orPDigMVbHR6BR25GwwE" + } + } + } + }, + "trackingParams": "CAAQhGciEwid8viis8OKAxVsdHoFHbkbDAQ=" +} diff --git a/testfiles/history/subscriptions.json b/testfiles/history/subscriptions.json new file mode 100644 index 0000000..e4a4881 --- /dev/null +++ b/testfiles/history/subscriptions.json @@ -0,0 +1,45121 @@ +{ + "responseContext": { + "serviceTrackingParams": [ + { + "service": "GFEEDBACK", + "params": [ + { "key": "browse_id", "value": "FEchannels" }, + { "key": "browse_id_prefix", "value": "" }, + { "key": "logged_in", "value": "1" }, + { + "key": "e", + "value": "23804281,23813628,23986015,24004644,24077241,24166867,24181174,24241378,24299875,24439361,24453989,24459436,24495712,24547317,24548629,24566687,24697013,24699899,39325854,39326986,51009781,51010235,51017346,51020570,51025415,51030101,51037342,51037353,51050361,51053689,51057842,51057853,51063643,51072748,51091058,51095478,51098299,51111738,51115164,51115184,51124104,51125020,51141472,51145218,51151423,51152050,51157411,51160545,51169118,51176511,51178314,51178327,51178344,51178351,51178982,51179884,51183909,51184990,51186367,51194137,51204329,51208678,51217504,51222382,51222973,51226938,51227037,51227778,51228850,51230478,51236019,51237842,51239093,51241028,51242448,51248255,51248734,51249751,51255676,51255743,51256084,51257943,51260634,51263449,51272458,51274583,51275785,51276557,51276565,51281227,51282792,51285052,51285717,51287196,51289922,51289929,51289938,51289958,51289965,51290036,51290043,51290404,51292055,51294322,51296439,51298020,51299710,51299724,51299973,51299999,51300018,51300176,51300241,51302680,51303432,51303667,51303669,51303789,51304155,51305839,51306256,51310742,51311025,51311034,51311505,51313109,51313765,51313767,51313802,51314158,51315910,51315919,51315928,51315931,51315938,51315945,51315956,51315963,51315972,51315979,51316744,51316844,51318845,51322669,51326208,51326281,51326932,51327144,51327163,51327180,51327613,51327615,51327636,51330194,51331485,51331500,51331520,51331535,51331538,51331545,51331552,51331561,51332896,51333541,51333878,51334535,51335365,51335392,51335594,51335646,51335928,51336633,51337000,51337139,51337186,51337349,51338524,51339007,51340662,51341214,51341226,51341730,51341974,51342579,51342857,51343368,51343796,51345228,51345295,51345629,51346352,51346795,51346816,51346823,51346836,51346849,51346868,51346879,51346896,51347325,51347576,51348208,51348354,51348672,51349880,51349914,51350306,51351446,51353231,51353361,51353393,51354114,51354507,51354569,51355268,51355273,51355291,51355307,51355312,51355337,51355342,51355417,51355679,51355912,51356304,51357477,51357777,51359172,51360108,51360123,51360140,51360212,51360215,51361727,51361828,51362003,51362040,51362071,51362455,51362643,51362674,51362857,51363663,51363725,51363734,51363741,51363756,51363761,51363772,51365460,51365716,51365751,51365987,51366423,51366620,51366864,51367318,51367487,51367605,51367993,51368502,51369325,51369559,51369905,51370175,51370739,51371001,51371006,51371522,51372699,51374017,51374193,51374439,51375011,51375168,51375719,51375867,51376050,51376515,51376764,51379209" + } + ] + }, + { + "service": "GOOGLE_HELP", + "params": [ + { "key": "browse_id", "value": "FEchannels" }, + { "key": "browse_id_prefix", "value": "" } + ] + }, + { + "service": "CSI", + "params": [ + { "key": "c", "value": "WEB" }, + { "key": "cver", "value": "2.20241219.01.01" }, + { "key": "yt_li", "value": "1" }, + { "key": "GetChannels_rid", "value": "0x48d5a8680eb9ab4a" } + ] + }, + { "service": "GUIDED_HELP", "params": [{ "key": "logged_in", "value": "1" }] }, + { + "service": "ECATCHER", + "params": [ + { "key": "client.version", "value": "2.20241219" }, + { "key": "client.name", "value": "WEB" } + ] + } + ], + "mainAppWebResponseContext": { + "datasyncId": "102002197211592572023||", + "loggedOut": false, + "trackingParam": "kx_fmPxhoPZRjnNwcF71wVOL7mq9EKSmXUnVf8ms8xl3z_wRgkuswmIBwOcCE59TDtslLKPQ-SS" + }, + "webResponseContextExtensionData": { "hasDecorated": true } + }, + "header": { + "pageHeaderRenderer": { + "pageTitle": "All subscriptions", + "content": { + "pageHeaderViewModel": { + "title": { + "dynamicTextViewModel": { + "text": { "content": "All subscriptions" }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CPQKEI_kCiITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "visibility": { "types": "12" }, + "clientVeSpec": { "uiType": 176655, "veCounter": 757606727 } + } + } + } + } + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CPMKEKLfCiITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "visibility": { "types": "12" }, + "clientVeSpec": { "uiType": 176034, "veCounter": 757606726 } + } + } + } + } + } + } + }, + "trackingParams": "CAAQhGciEwiX063Sx7yKAxUCb3oFHeXANwWCARoIGRC6LyITCPnvx83HvIoDFZdregUd--w0nQ==", + "onResponseReceivedActions": [ + { + "clickTrackingParams": "CAAQhGciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "reloadContinuationItemsCommand": { + "targetId": "browse-feedFEchannels", + "continuationItems": [ + { + "itemSectionRenderer": { + "contents": [ + { + "shelfRenderer": { + "content": { + "expandedShelfContentsRenderer": { + "items": [ + { + "channelRenderer": { + "channelId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "title": { "simpleText": "Adafruit Industries" }, + "navigationEndpoint": { + "clickTrackingParams": "COMKENowGAAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/0YN2yoXmT1yyzoOY2Kf6kZmUnLYyAJvmXVweJBuWdB5QvNofX7DTQq44kfZeIf4seQGiwfRkaA=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Adafruit was founded in 2005 by MIT engineer, Limor \"Ladyada\" Fried. Her goal was to create the best place online for learning electronics and making the best designed products for makers of all ages and skill levels. In the last 10 years, Adafruit has grown to over 100+ employees in the heart of NYC with a 50,000+ sq ft. factory. Adafruit has expanded offerings to include tools, equipment, and electronics that Limor personally selects, tests, and approves before going in to the Adafruit store. Adafruit is a 100% woman owned manufacturing company, a certified Minority and Woman-owned Business Enterprise (M/WBE), a certified Women’s Business Enterprise (WBE), and WOSB.\n\nDuring the COVID-19 outbreak Adafruit Industries is operating as an essential service and manufacturing business: NYC – Executive Order 202.6 making PPE and medical device components. In 2020 Adafruit was appointed to the Small Business Sector Advisory Council by the City of New York.\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Adafruit Industries", + "navigationEndpoint": { + "clickTrackingParams": "COMKENowGAAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "454K subscribers" } + }, + "simpleText": "454K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "COMKENowGAAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { "simpleText": "@adafruit" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "COQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Adafruit Industries." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Adafruit Industries." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Adafruit Industries" + }, + "trackingParams": "CPIKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Adafruit Industries" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Adafruit Industries" + }, + "trackingParams": "CPEKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Adafruit Industries" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Adafruit Industries" + }, + "trackingParams": "CPAKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Adafruit Industries" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "COgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "COgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "COgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3BPbE9lUWpqN0VzVm5EaDN6dUNnc0ESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3BPbE9lUWpqN0VzVm5EaDN6dUNnc0ESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3BPbE9lUWpqN0VzVm5EaDN6dUNnc0ESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COoKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Adafruit Industries" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCpOlOeQjj7EsVnDh3zuCgsA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COsKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "COkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3BPbE9lUWpqN0VzVm5EaDN6dUNnc0EgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "COQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCpOlOeQjj7EsVnDh3zuCgsA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "COQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COUKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "Adafruit Industries" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCpOlOeQjj7EsVnDh3zuCgsA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COYKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "COMKENowGAAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Adafruit Industries", + "navigationEndpoint": { + "clickTrackingParams": "COMKENowGAAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@adafruit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCpOlOeQjj7EsVnDh3zuCgsA", + "canonicalBaseUrl": "/@adafruit" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCSRCm4zHuETCS7jHWMiWNog", + "title": { "simpleText": "Adel Tawil" }, + "navigationEndpoint": { + "clickTrackingParams": "CNMKENowGAEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@adeltawil", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog", + "canonicalBaseUrl": "/@adeltawil" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/gP4biZPhz7HcfAs2QH5PEumEOkCAToYuFuWrt-xVSO205o51I8vVMPwMANhVWHcFw3WXZAHT=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/gP4biZPhz7HcfAs2QH5PEumEOkCAToYuFuWrt-xVSO205o51I8vVMPwMANhVWHcFw3WXZAHT=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "This is the official YouTube Channel of Adel Tawil. " + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Adel Tawil", + "navigationEndpoint": { + "clickTrackingParams": "CNMKENowGAEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@adeltawil", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog", + "canonicalBaseUrl": "/@adeltawil" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "576K subscribers" } + }, + "simpleText": "576K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CNMKENowGAEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@adeltawil" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCSRCm4zHuETCS7jHWMiWNog", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CNQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Adel Tawil." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Adel Tawil." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Adel Tawil" + }, + "trackingParams": "COIKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Adel Tawil" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Adel Tawil" + }, + "trackingParams": "COEKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Adel Tawil" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Adel Tawil" + }, + "trackingParams": "COAKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Adel Tawil" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CNgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CNgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CNgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1NSQ200ekh1RVRDUzdqSFdNaVdOb2cSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1NSQ200ekh1RVRDUzdqSFdNaVdOb2cSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1NSQ200ekh1RVRDUzdqSFdNaVdOb2cSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNoKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Adel Tawil" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCSRCm4zHuETCS7jHWMiWNog" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNsKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CNkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1NSQ200ekh1RVRDUzdqSFdNaVdOb2cgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CNQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCSRCm4zHuETCS7jHWMiWNog"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CNQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNUKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Adel Tawil" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCSRCm4zHuETCS7jHWMiWNog" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNYKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CNMKENowGAEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Adel Tawil", + "navigationEndpoint": { + "clickTrackingParams": "CNMKENowGAEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@adeltawil", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog", + "canonicalBaseUrl": "/@adeltawil" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCsRM0YB_dabtEPGPTKo-gcw", + "title": { "simpleText": "Adele" }, + "navigationEndpoint": { + "clickTrackingParams": "CMMKENowGAIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@adele", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCsRM0YB_dabtEPGPTKo-gcw", + "canonicalBaseUrl": "/@adele" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/YuRHl_4murHobFsrHDkpJANVHzXYTgP68zysfrsNPIRMr8fKSzEP_4y6cFeE5WfpWOdxVH4sO-8=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/YuRHl_4murHobFsrHDkpJANVHzXYTgP68zysfrsNPIRMr8fKSzEP_4y6cFeE5WfpWOdxVH4sO-8=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { "text": "The official YouTube channel of ADELE." } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Adele", + "navigationEndpoint": { + "clickTrackingParams": "CMMKENowGAIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@adele", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCsRM0YB_dabtEPGPTKo-gcw", + "canonicalBaseUrl": "/@adele" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "32 million subscribers" + } + }, + "simpleText": "32M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CMMKENowGAIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@adele" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCsRM0YB_dabtEPGPTKo-gcw", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CMQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Adele." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Adele." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Adele" + }, + "trackingParams": "CNIKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Adele" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Adele" + }, + "trackingParams": "CNEKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Adele" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Adele" + }, + "trackingParams": "CNAKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Adele" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CMgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CMgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CMgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3NSTTBZQl9kYWJ0RVBHUFRLby1nY3cSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3NSTTBZQl9kYWJ0RVBHUFRLby1nY3cSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3NSTTBZQl9kYWJ0RVBHUFRLby1nY3cSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMoKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Adele" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCsRM0YB_dabtEPGPTKo-gcw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMsKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CMkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3NSTTBZQl9kYWJ0RVBHUFRLby1nY3cgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CMQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCsRM0YB_dabtEPGPTKo-gcw"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CMQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMUKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Adele" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCsRM0YB_dabtEPGPTKo-gcw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMYKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CMMKENowGAIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Adele", + "navigationEndpoint": { + "clickTrackingParams": "CMMKENowGAIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@adele", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCsRM0YB_dabtEPGPTKo-gcw", + "canonicalBaseUrl": "/@adele" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC9GtSLeksfK4yuJ_g1lgQbg", + "title": { "simpleText": "aespa" }, + "navigationEndpoint": { + "clickTrackingParams": "CLMKENowGAMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@aespa", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9GtSLeksfK4yuJ_g1lgQbg", + "canonicalBaseUrl": "/@aespa" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/6CGtw27YRSZesaZSxp2fpT_KhH_Px_OOTWSq4igylqyibV1xpIZeazWBtepjhw1qeUkXDOVF=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/6CGtw27YRSZesaZSxp2fpT_KhH_Px_OOTWSq4igylqyibV1xpIZeazWBtepjhw1qeUkXDOVF=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "aespa 에스파 The 5th Mini Album 〖Whiplash〗\n\nWelcome to aespa Official YouTube Channel!\nYou can enjoy aespa's latest videos on aespa Official YouTube Channel.\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "aespa", + "navigationEndpoint": { + "clickTrackingParams": "CLMKENowGAMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@aespa", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9GtSLeksfK4yuJ_g1lgQbg", + "canonicalBaseUrl": "/@aespa" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "6.77 million subscribers" + } + }, + "simpleText": "6.77M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CLMKENowGAMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@aespa" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC9GtSLeksfK4yuJ_g1lgQbg", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CLQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to aespa." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from aespa." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for aespa" + }, + "trackingParams": "CMIKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for aespa" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for aespa" + }, + "trackingParams": "CMEKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for aespa" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for aespa" + }, + "trackingParams": "CMAKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for aespa" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CLgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CLgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CLgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzlHdFNMZWtzZks0eXVKX2cxbGdRYmcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzlHdFNMZWtzZks0eXVKX2cxbGdRYmcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzlHdFNMZWtzZks0eXVKX2cxbGdRYmcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLoKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "aespa" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC9GtSLeksfK4yuJ_g1lgQbg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLsKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CLkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzlHdFNMZWtzZks0eXVKX2cxbGdRYmcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CLQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC9GtSLeksfK4yuJ_g1lgQbg"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CLQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLUKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "aespa" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC9GtSLeksfK4yuJ_g1lgQbg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLYKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CLMKENowGAMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "aespa", + "navigationEndpoint": { + "clickTrackingParams": "CLMKENowGAMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@aespa", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9GtSLeksfK4yuJ_g1lgQbg", + "canonicalBaseUrl": "/@aespa" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC_1HVMnw-610qx54iEiWk7A", + "title": { "simpleText": "akidearest" }, + "navigationEndpoint": { + "clickTrackingParams": "CKMKENowGAQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@akidearest", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC_1HVMnw-610qx54iEiWk7A", + "canonicalBaseUrl": "/@akidearest" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_ktld7JEURejIWXjEKhRjbiZGxX3TKPnRLUB5lbtltJvek=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_ktld7JEURejIWXjEKhRjbiZGxX3TKPnRLUB5lbtltJvek=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "\n\nFor Business Inquiries or Conventions, please email me: akidearest.business@gmail.com" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "akidearest", + "navigationEndpoint": { + "clickTrackingParams": "CKMKENowGAQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@akidearest", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC_1HVMnw-610qx54iEiWk7A", + "canonicalBaseUrl": "/@akidearest" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "2.86 million subscribers" + } + }, + "simpleText": "2.86M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CKMKENowGAQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { "simpleText": "@akidearest" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC_1HVMnw-610qx54iEiWk7A", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CKQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to akidearest." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from akidearest." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for akidearest" + }, + "trackingParams": "CLIKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for akidearest" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for akidearest" + }, + "trackingParams": "CLEKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for akidearest" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for akidearest" + }, + "trackingParams": "CLAKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for akidearest" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CKgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CKgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CKgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ18xSFZNbnctNjEwcXg1NGlFaVdrN0ESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ18xSFZNbnctNjEwcXg1NGlFaVdrN0ESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ18xSFZNbnctNjEwcXg1NGlFaVdrN0ESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKoKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "akidearest" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC_1HVMnw-610qx54iEiWk7A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKsKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CKkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ18xSFZNbnctNjEwcXg1NGlFaVdrN0EgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CKQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC_1HVMnw-610qx54iEiWk7A"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CKQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKUKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "akidearest" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC_1HVMnw-610qx54iEiWk7A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKYKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CKMKENowGAQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "akidearest", + "navigationEndpoint": { + "clickTrackingParams": "CKMKENowGAQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@akidearest", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC_1HVMnw-610qx54iEiWk7A", + "canonicalBaseUrl": "/@akidearest" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "title": { "simpleText": "America's Test Kitchen" }, + "navigationEndpoint": { + "clickTrackingParams": "CJMKENowGAUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/6pPZQkBWoQ-UAu5sT-Z47ID6vhPr-nnfziSpR84unn9vsDUzz5_iNS3WkuXSdKUKhkVGQerE=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/6pPZQkBWoQ-UAu5sT-Z47ID6vhPr-nnfziSpR84unn9vsDUzz5_iNS3WkuXSdKUKhkVGQerE=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The mission of America’s Test Kitchen (ATK) is to empower and inspire confidence, community, and creativity in the kitchen. Founded in 1992, the company is the leading multimedia cooking resource serving millions of fans with TV shows (America’s Test Kitchen, Cook's Country, and America’s Test Kitchen: The Next Generation), magazines (Cook’s Illustrated and Cook’s Country), cookbooks, a podcast (Proof), FAST channels, short-form video series, and the ATK All-Access subscription for digital content. Based in a state-of-the-art 15,000-square-foot test kitchen in Boston’s Seaport District, ATK has earned the trust of home cooks and culinary experts alike thanks to its one-of-a-kind processes and best-in-class techniques. Fifty full-time (admittedly very meticulous) test cooks, editors, and product testers spend their days tweaking every variable to find the very best recipes, equipment, ingredients, and techniques. Learn more at https://www.americastestkitchen.com/.\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "America's Test Kitchen", + "navigationEndpoint": { + "clickTrackingParams": "CJMKENowGAUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "2.5 million subscribers" + } + }, + "simpleText": "2.5M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CJMKENowGAUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { + "simpleText": "@AmericasTestKitchen" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CJQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to America's Test Kitchen." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from America's Test Kitchen." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for America's Test Kitchen" + }, + "trackingParams": "CKIKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for America's Test Kitchen" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for America's Test Kitchen" + }, + "trackingParams": "CKEKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for America's Test Kitchen" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for America's Test Kitchen" + }, + "trackingParams": "CKAKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for America's Test Kitchen" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CJgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CJgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CJgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3hBU19hSzdzUzJ4X2JxbmxKSERTSHcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3hBU19hSzdzUzJ4X2JxbmxKSERTSHcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3hBU19hSzdzUzJ4X2JxbmxKSERTSHcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJoKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "America's Test Kitchen" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCxAS_aK7sS2x_bqnlJHDSHw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJsKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CJkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3hBU19hSzdzUzJ4X2JxbmxKSERTSHcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CJQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCxAS_aK7sS2x_bqnlJHDSHw"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CJQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJUKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "America's Test Kitchen" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCxAS_aK7sS2x_bqnlJHDSHw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJYKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CJMKENowGAUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "America's Test Kitchen", + "navigationEndpoint": { + "clickTrackingParams": "CJMKENowGAUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@AmericasTestKitchen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxAS_aK7sS2x_bqnlJHDSHw", + "canonicalBaseUrl": "/@AmericasTestKitchen" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCn4NWJa3ZCVolXXUO7AZ_Zw", + "title": { "simpleText": "Andreas Bourani" }, + "navigationEndpoint": { + "clickTrackingParams": "CIMKENowGAYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@andreasbourani", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCn4NWJa3ZCVolXXUO7AZ_Zw", + "canonicalBaseUrl": "/@andreasbourani" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_nMl-wh8tx00hvGxYTRs83SnjSZXqbAjC4mO8SEbYVVgpU=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_nMl-wh8tx00hvGxYTRs83SnjSZXqbAjC4mO8SEbYVVgpU=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Der offizielle Andreas Bourani YouTube Kanal\n\n☆ Ich bin eine Idee" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Andreas Bourani", + "navigationEndpoint": { + "clickTrackingParams": "CIMKENowGAYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@andreasbourani", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCn4NWJa3ZCVolXXUO7AZ_Zw", + "canonicalBaseUrl": "/@andreasbourani" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "49K subscribers" } + }, + "simpleText": "49K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CIMKENowGAYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@andreasbourani" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCn4NWJa3ZCVolXXUO7AZ_Zw", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CIQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Andreas Bourani." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Andreas Bourani." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Andreas Bourani" + }, + "trackingParams": "CJIKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Andreas Bourani" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Andreas Bourani" + }, + "trackingParams": "CJEKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Andreas Bourani" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Andreas Bourani" + }, + "trackingParams": "CJAKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Andreas Bourani" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CIgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CIgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CIgKEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ240TldKYTNaQ1ZvbFhYVU83QVpfWncSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI8KEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ240TldKYTNaQ1ZvbFhYVU83QVpfWncSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI4KEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ240TldKYTNaQ1ZvbFhYVU83QVpfWncSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI0KEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIoKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Andreas Bourani" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCn4NWJa3ZCVolXXUO7AZ_Zw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIwKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIsKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CIkKENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ240TldKYTNaQ1ZvbFhYVU83QVpfWncgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CIQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCn4NWJa3ZCVolXXUO7AZ_Zw"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CIQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIQKEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIUKEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Andreas Bourani" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCn4NWJa3ZCVolXXUO7AZ_Zw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIcKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIYKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CIMKENowGAYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Andreas Bourani", + "navigationEndpoint": { + "clickTrackingParams": "CIMKENowGAYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@andreasbourani", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCn4NWJa3ZCVolXXUO7AZ_Zw", + "canonicalBaseUrl": "/@andreasbourani" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCBL7ZxVX4GvW4CFiES_-0YA", + "title": { "simpleText": "Anne-Marie" }, + "navigationEndpoint": { + "clickTrackingParams": "CPMJENowGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@annemarie", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCBL7ZxVX4GvW4CFiES_-0YA", + "canonicalBaseUrl": "/@annemarie" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/KRCIz_ERiPPmVzl6AQygt0QLhY3l92AUM3fGlnZ3LCN6uMT2HGRyO36vXvGMns65cchWTbuO=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/KRCIz_ERiPPmVzl6AQygt0QLhY3l92AUM3fGlnZ3LCN6uMT2HGRyO36vXvGMns65cchWTbuO=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Anne-Marie has proved to be one of the UK’s most exciting and successful British breakthrough popstars of recent years. A former 3x world karate champion and West End child star-turned 9x BRIT Award nominee, A-M’s rise has been nothing short of meteoric. In 2018 Anne-Marie released her debut album, ‘Speak Your Mind’ which featured the hit singles 'Alarm', 'Ciao Adios', 'Heavy', 'Friends', '2002' and 'Perfect to Me'. She subsequently ended that year as as the UK’s biggest-selling debut artist, selling out headline shows and playing stadium dates supporting long-time friend and champion Ed Sheeran in the process.\n\nShe has also sang on and co-written many other hits such as Birthday, Rockabye, Don't Leave Me Alone, To Be Young, f*ck, i'm lonely and Don't Play, collaborating with the likes of Clean Bandit, Marshmello, David Guetta, Lauv, Rudimental, Doja Cat and KSI, as well as starring on The Greatest Showman: Reimagined soundtrack performing Rewrite the stars alongside James Arthur.\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Anne-Marie", + "navigationEndpoint": { + "clickTrackingParams": "CPMJENowGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@annemarie", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCBL7ZxVX4GvW4CFiES_-0YA", + "canonicalBaseUrl": "/@annemarie" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "11.5 million subscribers" + } + }, + "simpleText": "11.5M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CPMJENowGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@annemarie" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCBL7ZxVX4GvW4CFiES_-0YA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CPQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Anne-Marie." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Anne-Marie." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Anne-Marie" + }, + "trackingParams": "CIIKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Anne-Marie" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Anne-Marie" + }, + "trackingParams": "CIEKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Anne-Marie" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Anne-Marie" + }, + "trackingParams": "CIAKEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Anne-Marie" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CPgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CPgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CPgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0JMN1p4Vlg0R3ZXNENGaUVTXy0wWUESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0JMN1p4Vlg0R3ZXNENGaUVTXy0wWUESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0JMN1p4Vlg0R3ZXNENGaUVTXy0wWUESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPoJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Anne-Marie" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCBL7ZxVX4GvW4CFiES_-0YA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPsJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CPkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ0JMN1p4Vlg0R3ZXNENGaUVTXy0wWUEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CPQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCBL7ZxVX4GvW4CFiES_-0YA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CPQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPUJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Anne-Marie" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCBL7ZxVX4GvW4CFiES_-0YA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPYJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CPMJENowGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Anne-Marie", + "navigationEndpoint": { + "clickTrackingParams": "CPMJENowGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@annemarie", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCBL7ZxVX4GvW4CFiES_-0YA", + "canonicalBaseUrl": "/@annemarie" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCoGJ6tHb493zmR2yZaPszcQ", + "title": { "simpleText": "Au/Ra" }, + "navigationEndpoint": { + "clickTrackingParams": "COMJENowGAgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@HeyItsAuRa", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCoGJ6tHb493zmR2yZaPszcQ", + "canonicalBaseUrl": "/@HeyItsAuRa" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_mHye5peDSnqTLakApIUK14vGbYV8mVeA5XfkE0lWNinbY=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_mHye5peDSnqTLakApIUK14vGbYV8mVeA5XfkE0lWNinbY=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "A dork who writes songs and sometimes makes things you can watch. ^_–✩" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Au/Ra", + "navigationEndpoint": { + "clickTrackingParams": "COMJENowGAgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@HeyItsAuRa", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCoGJ6tHb493zmR2yZaPszcQ", + "canonicalBaseUrl": "/@HeyItsAuRa" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "568K subscribers" } + }, + "simpleText": "568K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "COMJENowGAgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@HeyItsAuRa" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCoGJ6tHb493zmR2yZaPszcQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "COQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Au/Ra." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Au/Ra." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Au/Ra" + }, + "trackingParams": "CPIJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Au/Ra" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Au/Ra" + }, + "trackingParams": "CPEJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Au/Ra" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Au/Ra" + }, + "trackingParams": "CPAJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Au/Ra" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "COgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "COgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "COgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ29HSjZ0SGI0OTN6bVIyeVphUHN6Y1ESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ29HSjZ0SGI0OTN6bVIyeVphUHN6Y1ESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ29HSjZ0SGI0OTN6bVIyeVphUHN6Y1ESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COoJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Au/Ra" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCoGJ6tHb493zmR2yZaPszcQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COsJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "COkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ29HSjZ0SGI0OTN6bVIyeVphUHN6Y1EgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "COQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCoGJ6tHb493zmR2yZaPszcQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "COQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COUJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Au/Ra" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCoGJ6tHb493zmR2yZaPszcQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COYJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "COMJENowGAgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Au/Ra", + "navigationEndpoint": { + "clickTrackingParams": "COMJENowGAgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@HeyItsAuRa", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCoGJ6tHb493zmR2yZaPszcQ", + "canonicalBaseUrl": "/@HeyItsAuRa" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "title": { "simpleText": "AvE" }, + "navigationEndpoint": { + "clickTrackingParams": "CNMJENowGAkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_lULtOnu9GTe8zM4UIp96v1Fsljkb22nyt0ze3BZEQJHQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Err\nand err\nand err again\nbut less\nand less\nand less.\n\n-Piet Hein\n\n\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "AvE", + "navigationEndpoint": { + "clickTrackingParams": "CNMJENowGAkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.44 million subscribers" + } + }, + "simpleText": "1.44M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "subscriberCountText": { + "simpleText": "@arduinoversusevil2025" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CNQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to AvE." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from AvE." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for AvE" + }, + "trackingParams": "COIJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for AvE" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for AvE" + }, + "trackingParams": "COEJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for AvE" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for AvE" + }, + "trackingParams": "COAJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for AvE" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CNgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CNgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CNgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2hXdjZQbl96UDBySTZsZ0d0M015ZkESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2hXdjZQbl96UDBySTZsZ0d0M015ZkESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2hXdjZQbl96UDBySTZsZ0d0M015ZkESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNoJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "AvE" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UChWv6Pn_zP0rI6lgGt3MyfA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNsJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CNkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ2hXdjZQbl96UDBySTZsZ0d0M015ZkEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CNQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UChWv6Pn_zP0rI6lgGt3MyfA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CNQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNUJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "AvE" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UChWv6Pn_zP0rI6lgGt3MyfA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNYJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CNMJENowGAkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "AvE", + "navigationEndpoint": { + "clickTrackingParams": "CNMJENowGAkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@arduinoversusevil2025", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UChWv6Pn_zP0rI6lgGt3MyfA", + "canonicalBaseUrl": "/@arduinoversusevil2025" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCrj6DZ5z6dyAvJadLRcM7vA", + "title": { "simpleText": "bartlebeats - Topic" }, + "navigationEndpoint": { + "clickTrackingParams": "CMMJENowGAoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCrj6DZ5z6dyAvJadLRcM7vA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCrj6DZ5z6dyAvJadLRcM7vA", + "canonicalBaseUrl": "/channel/UCrj6DZ5z6dyAvJadLRcM7vA" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/o5aoJHWhJa7GNje1lx_9j3n6p7ak7Mj_dmQhPE-56DpOv2MRtlgeKZnOMAi0MBnYVLDDj9w9yg=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/o5aoJHWhJa7GNje1lx_9j3n6p7ak7Mj_dmQhPE-56DpOv2MRtlgeKZnOMAi0MBnYVLDDj9w9yg=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "bartlebeats - Topic", + "navigationEndpoint": { + "clickTrackingParams": "CMMJENowGAoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCrj6DZ5z6dyAvJadLRcM7vA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCrj6DZ5z6dyAvJadLRcM7vA", + "canonicalBaseUrl": "/channel/UCrj6DZ5z6dyAvJadLRcM7vA" + } + } + } + ] + }, + "videoCountText": { + "runs": [{ "text": "15" }, { "text": " videos" }] + }, + "subscriptionButton": { "subscribed": true }, + "subscriberCountText": { + "accessibility": { + "accessibilityData": { "label": "70 subscribers" } + }, + "simpleText": "70 subscribers" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCrj6DZ5z6dyAvJadLRcM7vA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CMQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to bartlebeats - Topic." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from bartlebeats - Topic." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for bartlebeats - Topic" + }, + "trackingParams": "CNIJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for bartlebeats - Topic" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for bartlebeats - Topic" + }, + "trackingParams": "CNEJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for bartlebeats - Topic" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for bartlebeats - Topic" + }, + "trackingParams": "CNAJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for bartlebeats - Topic" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CMgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CMgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CMgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3JqNkRaNXo2ZHlBdkphZExSY003dkESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3JqNkRaNXo2ZHlBdkphZExSY003dkESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3JqNkRaNXo2ZHlBdkphZExSY003dkESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMoJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "bartlebeats - Topic" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCrj6DZ5z6dyAvJadLRcM7vA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMsJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CMkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3JqNkRaNXo2ZHlBdkphZExSY003dkEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CMQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCrj6DZ5z6dyAvJadLRcM7vA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CMQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMUJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "bartlebeats - Topic" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCrj6DZ5z6dyAvJadLRcM7vA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMYJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CMMJENowGAoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "bartlebeats - Topic", + "navigationEndpoint": { + "clickTrackingParams": "CMMJENowGAoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCrj6DZ5z6dyAvJadLRcM7vA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCrj6DZ5z6dyAvJadLRcM7vA", + "canonicalBaseUrl": "/channel/UCrj6DZ5z6dyAvJadLRcM7vA" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCJl-cGDSoGlB86vB_3scwAQ", + "title": { "simpleText": "bausashaus" }, + "navigationEndpoint": { + "clickTrackingParams": "CLMJENowGAsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@BausashausDe", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCJl-cGDSoGlB86vB_3scwAQ", + "canonicalBaseUrl": "/@BausashausDe" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/in43p8oqmcxvsiLuIj3hJZwU-ToArJZg-jdzfF534h5hmKNHO7e2JPN_r7g0y2Fp2xSJ_HnOrN0=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/in43p8oqmcxvsiLuIj3hJZwU-ToArJZg-jdzfF534h5hmKNHO7e2JPN_r7g0y2Fp2xSJ_HnOrN0=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Willkommen im offiziellen Channel von BAUSA!" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "bausashaus", + "navigationEndpoint": { + "clickTrackingParams": "CLMJENowGAsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@BausashausDe", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCJl-cGDSoGlB86vB_3scwAQ", + "canonicalBaseUrl": "/@BausashausDe" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "579K subscribers" } + }, + "simpleText": "579K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CLMJENowGAsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@BausashausDe" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCJl-cGDSoGlB86vB_3scwAQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CLQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to bausashaus." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from bausashaus." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for bausashaus" + }, + "trackingParams": "CMIJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for bausashaus" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for bausashaus" + }, + "trackingParams": "CMEJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for bausashaus" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for bausashaus" + }, + "trackingParams": "CMAJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for bausashaus" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CLgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CLgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CLgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0psLWNHRFNvR2xCODZ2Ql8zc2N3QVESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0psLWNHRFNvR2xCODZ2Ql8zc2N3QVESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0psLWNHRFNvR2xCODZ2Ql8zc2N3QVESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLoJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "bausashaus" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCJl-cGDSoGlB86vB_3scwAQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLsJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CLkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ0psLWNHRFNvR2xCODZ2Ql8zc2N3QVEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CLQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCJl-cGDSoGlB86vB_3scwAQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CLQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLUJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "bausashaus" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCJl-cGDSoGlB86vB_3scwAQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLYJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CLMJENowGAsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "bausashaus", + "navigationEndpoint": { + "clickTrackingParams": "CLMJENowGAsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@BausashausDe", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCJl-cGDSoGlB86vB_3scwAQ", + "canonicalBaseUrl": "/@BausashausDe" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCtOcDBKgyr-f50SgbMErFkQ", + "title": { "simpleText": "BINI Official" }, + "navigationEndpoint": { + "clickTrackingParams": "CKMJENowGAwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@BINIPH", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCtOcDBKgyr-f50SgbMErFkQ", + "canonicalBaseUrl": "/@BINIPH" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/JUvHJvdoccdG9aX_h9gOovEoMOT9gDquwjWpN_zEwv75ENRJns35kLZuUsr-Ft3oXdh8ciG6TQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/JUvHJvdoccdG9aX_h9gOovEoMOT9gDquwjWpN_zEwv75ENRJns35kLZuUsr-Ft3oXdh8ciG6TQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "BINI is an 8-member girl group composed of young, modern Filipinas who aspire to share their talent & passion with the world.\n\nIf you like our videos, don't forget to subscribe to our channel - http://bit.ly/BINIPH\n\nConnect, follow, and have a conversation with us on our social media accounts:\nFacebook: https://www.fb.com/biniph.official\nInstagram: https://www.instagram.com/bini_ph/\nTwitter: https://www.twitter.com/bini_ph\nTiktok: https://www.tiktok.com/@bini_ph\nKumu: bini_ph\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "BINI Official", + "navigationEndpoint": { + "clickTrackingParams": "CKMJENowGAwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@BINIPH", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCtOcDBKgyr-f50SgbMErFkQ", + "canonicalBaseUrl": "/@BINIPH" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "2.73 million subscribers" + } + }, + "simpleText": "2.73M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CKMJENowGAwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@BINIPH" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCtOcDBKgyr-f50SgbMErFkQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CKQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to BINI Official." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from BINI Official." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for BINI Official" + }, + "trackingParams": "CLIJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for BINI Official" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for BINI Official" + }, + "trackingParams": "CLEJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for BINI Official" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for BINI Official" + }, + "trackingParams": "CLAJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for BINI Official" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CKgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CKgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CKgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3RPY0RCS2d5ci1mNTBTZ2JNRXJGa1ESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3RPY0RCS2d5ci1mNTBTZ2JNRXJGa1ESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3RPY0RCS2d5ci1mNTBTZ2JNRXJGa1ESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKoJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "BINI Official" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCtOcDBKgyr-f50SgbMErFkQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKsJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CKkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3RPY0RCS2d5ci1mNTBTZ2JNRXJGa1EgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CKQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCtOcDBKgyr-f50SgbMErFkQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CKQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKUJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "BINI Official" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCtOcDBKgyr-f50SgbMErFkQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKYJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CKMJENowGAwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "BINI Official", + "navigationEndpoint": { + "clickTrackingParams": "CKMJENowGAwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@BINIPH", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCtOcDBKgyr-f50SgbMErFkQ", + "canonicalBaseUrl": "/@BINIPH" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCOmHUn--16B90oW2L6FRR3A", + "title": { "simpleText": "BLACKPINK" }, + "navigationEndpoint": { + "clickTrackingParams": "CJMJENowGA0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@BLACKPINK", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCOmHUn--16B90oW2L6FRR3A", + "canonicalBaseUrl": "/@BLACKPINK" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/U3VrCkKjzTpQ3VYv4SCPjNfDHeJV-swGNnhLYhr0nV4lZz_GVUNzK4EB-HFRfKv9S5VNh14uAg=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/U3VrCkKjzTpQ3VYv4SCPjNfDHeJV-swGNnhLYhr0nV4lZz_GVUNzK4EB-HFRfKv9S5VNh14uAg=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "BLACKPINK Official YouTube Channel\n블랙핑크 공식 유튜브 채널입니다.\n\nJISOO, JENNIE, ROSÉ, LISA\n지수, 제니, 로제, 리사" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "BLACKPINK", + "navigationEndpoint": { + "clickTrackingParams": "CJMJENowGA0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@BLACKPINK", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCOmHUn--16B90oW2L6FRR3A", + "canonicalBaseUrl": "/@BLACKPINK" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "95.4 million subscribers" + } + }, + "simpleText": "95.4M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJMJENowGA0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@BLACKPINK" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCOmHUn--16B90oW2L6FRR3A", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CJQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to BLACKPINK." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from BLACKPINK." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for BLACKPINK" + }, + "trackingParams": "CKIJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for BLACKPINK" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for BLACKPINK" + }, + "trackingParams": "CKEJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for BLACKPINK" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for BLACKPINK" + }, + "trackingParams": "CKAJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for BLACKPINK" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CJgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CJgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CJgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ09tSFVuLS0xNkI5MG9XMkw2RlJSM0ESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ09tSFVuLS0xNkI5MG9XMkw2RlJSM0ESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ09tSFVuLS0xNkI5MG9XMkw2RlJSM0ESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJoJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "BLACKPINK" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCOmHUn--16B90oW2L6FRR3A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJsJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CJkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ09tSFVuLS0xNkI5MG9XMkw2RlJSM0EgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CJQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCOmHUn--16B90oW2L6FRR3A"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CJQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJUJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "BLACKPINK" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCOmHUn--16B90oW2L6FRR3A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJYJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CJMJENowGA0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "BLACKPINK", + "navigationEndpoint": { + "clickTrackingParams": "CJMJENowGA0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@BLACKPINK", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCOmHUn--16B90oW2L6FRR3A", + "canonicalBaseUrl": "/@BLACKPINK" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCtHoTrH0GgJ9fBrzmTqk7Pg", + "title": { "simpleText": "CARYS" }, + "navigationEndpoint": { + "clickTrackingParams": "CIMJENowGA4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@CARYSOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCtHoTrH0GgJ9fBrzmTqk7Pg", + "canonicalBaseUrl": "/@CARYSOfficial" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/CJjKNo35VgpL1-uM2-6fkzrf608yKIzbfBxC4wLcrvii-n8oLBri69PkjEswoMlcRoLvoDsLug=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/CJjKNo35VgpL1-uM2-6fkzrf608yKIzbfBxC4wLcrvii-n8oLBri69PkjEswoMlcRoLvoDsLug=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Official YouTube channel of CARYS.\n\nLinktree: https://linktr.ee/xcarysx\n\nConnect with CARYS: \nSubscribe on YouTube: https://www.youtube.com/carysofficial?sub_confirmation=1\nGaming Youtube Channel: https://www.youtube.com/channel/UCu9vHZwJWpfoDozFDjMW9fg\nWebsite: https://www.carysofficial.com/\nInstagram: https://www.instagram.com/carysofficial/ \nFacebook: https://www.facebook.com/carysofficial/ \nTwitter: https://twitter.com/carysofficial\nTikTok: https://www.tiktok.com/@carysofficial\n\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "CARYS", + "navigationEndpoint": { + "clickTrackingParams": "CIMJENowGA4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@CARYSOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCtHoTrH0GgJ9fBrzmTqk7Pg", + "canonicalBaseUrl": "/@CARYSOfficial" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "307K subscribers" } + }, + "simpleText": "307K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CIMJENowGA4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@CARYSOfficial" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCtHoTrH0GgJ9fBrzmTqk7Pg", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CIQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to CARYS." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from CARYS." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for CARYS" + }, + "trackingParams": "CJIJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for CARYS" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for CARYS" + }, + "trackingParams": "CJEJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for CARYS" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for CARYS" + }, + "trackingParams": "CJAJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for CARYS" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CIgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CIgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CIgJEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3RIb1RySDBHZ0o5ZkJyem1UcWs3UGcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI8JEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3RIb1RySDBHZ0o5ZkJyem1UcWs3UGcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI4JEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3RIb1RySDBHZ0o5ZkJyem1UcWs3UGcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI0JEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIoJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "CARYS" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCtHoTrH0GgJ9fBrzmTqk7Pg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIwJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIsJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CIkJENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3RIb1RySDBHZ0o5ZkJyem1UcWs3UGcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CIQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCtHoTrH0GgJ9fBrzmTqk7Pg"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CIQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIQJEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIUJEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "CARYS" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCtHoTrH0GgJ9fBrzmTqk7Pg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIcJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIYJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CIMJENowGA4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "CARYS", + "navigationEndpoint": { + "clickTrackingParams": "CIMJENowGA4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@CARYSOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCtHoTrH0GgJ9fBrzmTqk7Pg", + "canonicalBaseUrl": "/@CARYSOfficial" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCOvEMf00DnwdkpOCRWdc6uA", + "title": { "simpleText": "Charli xcx" }, + "navigationEndpoint": { + "clickTrackingParams": "CPMIENowGA8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@officialcharlixcx", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCOvEMf00DnwdkpOCRWdc6uA", + "canonicalBaseUrl": "/@officialcharlixcx" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ct7MWGDuGe3sko82M14qN6eOH7fW5wLh2xxBhnTiDMzVELeKHtCz8gJ_HA_GpxwlwDE2v13rPg=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ct7MWGDuGe3sko82M14qN6eOH7fW5wLh2xxBhnTiDMzVELeKHtCz8gJ_HA_GpxwlwDE2v13rPg=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The official YouTube Channel of Charli xcx\n\nCharli xcx is an iconic figure in the arts, having helped expand the landscape of popular music over the last decade by seamlessly traversing the underground and the mainstream with her artistic output. A singer, songwriter, documentary maker, radio host and record label boss, Charli’s story is one of an artist who continues to succeed without compromise, earning critical acclaim for her forward-thinking music style and entrepreneurial spirit.\n\nHer incredible catalogue includes the studio albums True Romance, SUCKER, Charli, how i'm feeling now, CRASH, and BRAT. These have spawned hit singles such as Boom Clap, Break The Rules, Doing It, After The Afterparty, 1999, Blame It On Your Love , Gone, Good Ones and has seen Charli collaborate with global superstars such as BTS, Lizzo, Troye Sivan and HAIM as well as future game changers such as Kim Petras, Christine and the Queens, Yaeji and Clairo.\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Charli xcx", + "navigationEndpoint": { + "clickTrackingParams": "CPMIENowGA8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@officialcharlixcx", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCOvEMf00DnwdkpOCRWdc6uA", + "canonicalBaseUrl": "/@officialcharlixcx" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "3.49 million subscribers" + } + }, + "simpleText": "3.49M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CPMIENowGA8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@officialcharlixcx" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCOvEMf00DnwdkpOCRWdc6uA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CPQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Charli xcx." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Charli xcx." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Charli xcx" + }, + "trackingParams": "CIIJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Charli xcx" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Charli xcx" + }, + "trackingParams": "CIEJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Charli xcx" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Charli xcx" + }, + "trackingParams": "CIAJEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Charli xcx" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CPgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CPgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CPgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ092RU1mMDBEbndka3BPQ1JXZGM2dUESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ092RU1mMDBEbndka3BPQ1JXZGM2dUESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ092RU1mMDBEbndka3BPQ1JXZGM2dUESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPoIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Charli xcx" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCOvEMf00DnwdkpOCRWdc6uA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPsIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CPkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ092RU1mMDBEbndka3BPQ1JXZGM2dUEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CPQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCOvEMf00DnwdkpOCRWdc6uA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CPQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPUIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Charli xcx" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCOvEMf00DnwdkpOCRWdc6uA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPYIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CPMIENowGA8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Charli xcx", + "navigationEndpoint": { + "clickTrackingParams": "CPMIENowGA8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@officialcharlixcx", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCOvEMf00DnwdkpOCRWdc6uA", + "canonicalBaseUrl": "/@officialcharlixcx" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCpvCJWgUNwZArGtJ00kDS1A", + "title": { "simpleText": "CHASE ATLANTIC" }, + "navigationEndpoint": { + "clickTrackingParams": "COMIENowGBAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@chaseatlantic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCpvCJWgUNwZArGtJ00kDS1A", + "canonicalBaseUrl": "/@chaseatlantic" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/f9FCKd7XMHVUQ_zxhspIwoyUCEk986YiXm-0NuvmGeD3oD-9uRM91_rOvn1HGVptCQklWvUfB1U=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/f9FCKd7XMHVUQ_zxhspIwoyUCEk986YiXm-0NuvmGeD3oD-9uRM91_rOvn1HGVptCQklWvUfB1U=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [{ "text": "LOST IN HEAVEN OUT NOW" }] + }, + "shortBylineText": { + "runs": [ + { + "text": "CHASE ATLANTIC", + "navigationEndpoint": { + "clickTrackingParams": "COMIENowGBAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@chaseatlantic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCpvCJWgUNwZArGtJ00kDS1A", + "canonicalBaseUrl": "/@chaseatlantic" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "2.46 million subscribers" + } + }, + "simpleText": "2.46M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "COMIENowGBAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@chaseatlantic" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCpvCJWgUNwZArGtJ00kDS1A", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "COQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to CHASE ATLANTIC." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from CHASE ATLANTIC." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for CHASE ATLANTIC" + }, + "trackingParams": "CPIIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for CHASE ATLANTIC" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for CHASE ATLANTIC" + }, + "trackingParams": "CPEIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for CHASE ATLANTIC" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for CHASE ATLANTIC" + }, + "trackingParams": "CPAIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for CHASE ATLANTIC" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "COgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "COgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "COgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3B2Q0pXZ1VOd1pBckd0SjAwa0RTMUESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3B2Q0pXZ1VOd1pBckd0SjAwa0RTMUESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3B2Q0pXZ1VOd1pBckd0SjAwa0RTMUESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COoIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "CHASE ATLANTIC" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCpvCJWgUNwZArGtJ00kDS1A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COsIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "COkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3B2Q0pXZ1VOd1pBckd0SjAwa0RTMUEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "COQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCpvCJWgUNwZArGtJ00kDS1A"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "COQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COUIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "CHASE ATLANTIC" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCpvCJWgUNwZArGtJ00kDS1A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COYIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "COMIENowGBAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "CHASE ATLANTIC", + "navigationEndpoint": { + "clickTrackingParams": "COMIENowGBAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@chaseatlantic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCpvCJWgUNwZArGtJ00kDS1A", + "canonicalBaseUrl": "/@chaseatlantic" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UChCWmgEgUXwS5QEZZ-iWN-Q", + "title": { "simpleText": "Cheat Codes" }, + "navigationEndpoint": { + "clickTrackingParams": "CNMIENowGBEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@CheatCodes", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UChCWmgEgUXwS5QEZZ-iWN-Q", + "canonicalBaseUrl": "/@CheatCodes" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/m8NTmy6jGdmct02X6EM3Lf_Q5uSzF4BkXn-5IJ5q7pWuHX-28HemhElO3ynyHQm60OzYT90M=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/m8NTmy6jGdmct02X6EM3Lf_Q5uSzF4BkXn-5IJ5q7pWuHX-28HemhElO3ynyHQm60OzYT90M=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { "text": "TYSM 🗡️ w/ @salemilese out 11/22 🖤\n" } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Cheat Codes", + "navigationEndpoint": { + "clickTrackingParams": "CNMIENowGBEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@CheatCodes", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UChCWmgEgUXwS5QEZZ-iWN-Q", + "canonicalBaseUrl": "/@CheatCodes" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "753K subscribers" } + }, + "simpleText": "753K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CNMIENowGBEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@CheatCodes" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UChCWmgEgUXwS5QEZZ-iWN-Q", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CNQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Cheat Codes." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Cheat Codes." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Cheat Codes" + }, + "trackingParams": "COIIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Cheat Codes" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Cheat Codes" + }, + "trackingParams": "COEIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Cheat Codes" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Cheat Codes" + }, + "trackingParams": "COAIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Cheat Codes" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CNgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CNgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CNgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2hDV21nRWdVWHdTNVFFWlotaVdOLVESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2hDV21nRWdVWHdTNVFFWlotaVdOLVESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2hDV21nRWdVWHdTNVFFWlotaVdOLVESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNoIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Cheat Codes" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UChCWmgEgUXwS5QEZZ-iWN-Q" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNsIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CNkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ2hDV21nRWdVWHdTNVFFWlotaVdOLVEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CNQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UChCWmgEgUXwS5QEZZ-iWN-Q"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CNQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNUIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Cheat Codes" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UChCWmgEgUXwS5QEZZ-iWN-Q" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNYIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CNMIENowGBEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Cheat Codes", + "navigationEndpoint": { + "clickTrackingParams": "CNMIENowGBEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@CheatCodes", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UChCWmgEgUXwS5QEZZ-iWN-Q", + "canonicalBaseUrl": "/@CheatCodes" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCz1mQ-4_wui83UfT3ylqmpw", + "title": { "simpleText": "CRO" }, + "navigationEndpoint": { + "clickTrackingParams": "CMMIENowGBIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@cro", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCz1mQ-4_wui83UfT3ylqmpw", + "canonicalBaseUrl": "/@cro" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/X8cpJTOX9am0tmIlD6dwsiqQV6uwlNlRgX6R7WzIpkf688EbjD6lFfkPtAkCyGIQjgumIvYXJQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/X8cpJTOX9am0tmIlD6dwsiqQV6uwlNlRgX6R7WzIpkf688EbjD6lFfkPtAkCyGIQjgumIvYXJQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Offizieller YouTube-Kanal von CRO\n\nKanal abonnieren: http://bit.ly/CroYouTube\n\nCheck CRO im Netz:\n►TikTok: https://cromusik.lnk.to/socialsAY/tiktok\n►Instagram: https://cromusik.lnk.to/socialsAY/instagram\n►Facebook: https://cromusik.lnk.to/socialsAY/facebook\n►X: https://cromusik.lnk.to/socialsAY/twitter\n► 🤖: https://t.me/r2dcro_bot" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "CRO", + "navigationEndpoint": { + "clickTrackingParams": "CMMIENowGBIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@cro", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCz1mQ-4_wui83UfT3ylqmpw", + "canonicalBaseUrl": "/@cro" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "561K subscribers" } + }, + "simpleText": "561K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CMMIENowGBIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@cro" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCz1mQ-4_wui83UfT3ylqmpw", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CMQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to CRO." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from CRO." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for CRO" + }, + "trackingParams": "CNIIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for CRO" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for CRO" + }, + "trackingParams": "CNEIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for CRO" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for CRO" + }, + "trackingParams": "CNAIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for CRO" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CMgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CMgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CMgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3oxbVEtNF93dWk4M1VmVDN5bHFtcHcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3oxbVEtNF93dWk4M1VmVDN5bHFtcHcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3oxbVEtNF93dWk4M1VmVDN5bHFtcHcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMoIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "CRO" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCz1mQ-4_wui83UfT3ylqmpw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMsIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CMkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3oxbVEtNF93dWk4M1VmVDN5bHFtcHcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CMQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCz1mQ-4_wui83UfT3ylqmpw"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CMQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMUIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "CRO" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCz1mQ-4_wui83UfT3ylqmpw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMYIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CMMIENowGBIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "CRO", + "navigationEndpoint": { + "clickTrackingParams": "CMMIENowGBIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@cro", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCz1mQ-4_wui83UfT3ylqmpw", + "canonicalBaseUrl": "/@cro" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC_x8HoD18XJkILQBreVENUQ", + "title": { "simpleText": "DJ Snake" }, + "navigationEndpoint": { + "clickTrackingParams": "CLMIENowGBMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@DJSnake", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC_x8HoD18XJkILQBreVENUQ", + "canonicalBaseUrl": "/@DJSnake" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/uTXyQUSez8rz1TYr6F_S6o8x-4lebrWy_ioSR7R9m_OhpXvpSnwiZb4ritKWkP_9uBNkFgvJbQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/uTXyQUSez8rz1TYr6F_S6o8x-4lebrWy_ioSR7R9m_OhpXvpSnwiZb4ritKWkP_9uBNkFgvJbQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Official YouTube Channel of DJ Snake. \n\nOfficial Store: https://djsnake.store/\n\nFollow DJ Snake\nWebsite: http://djsnake.com/ \nInstagram: http://www.instagram.com/djsnake\nTiktok: https://www.tiktok.com/@djsnake\nFacebook: http://www.facebook.com/djsnake.fr\nTwitter: http://www.twitter.com/djsnake\nSoundcloud: http://www.soundcloud.com/djsnake" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "DJ Snake", + "navigationEndpoint": { + "clickTrackingParams": "CLMIENowGBMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@DJSnake", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC_x8HoD18XJkILQBreVENUQ", + "canonicalBaseUrl": "/@DJSnake" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "24.6 million subscribers" + } + }, + "simpleText": "24.6M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CLMIENowGBMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@DJSnake" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC_x8HoD18XJkILQBreVENUQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CLQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to DJ Snake." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from DJ Snake." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for DJ Snake" + }, + "trackingParams": "CMIIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for DJ Snake" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for DJ Snake" + }, + "trackingParams": "CMEIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for DJ Snake" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for DJ Snake" + }, + "trackingParams": "CMAIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for DJ Snake" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CLgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CLgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CLgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ194OEhvRDE4WEprSUxRQnJlVkVOVVESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ194OEhvRDE4WEprSUxRQnJlVkVOVVESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ194OEhvRDE4WEprSUxRQnJlVkVOVVESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLoIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "DJ Snake" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC_x8HoD18XJkILQBreVENUQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLsIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CLkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ194OEhvRDE4WEprSUxRQnJlVkVOVVEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CLQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC_x8HoD18XJkILQBreVENUQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CLQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLUIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "DJ Snake" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC_x8HoD18XJkILQBreVENUQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLYIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CLMIENowGBMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "DJ Snake", + "navigationEndpoint": { + "clickTrackingParams": "CLMIENowGBMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@DJSnake", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC_x8HoD18XJkILQBreVENUQ", + "canonicalBaseUrl": "/@DJSnake" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC0C-w0YjGpqDXGB8IHb662A", + "title": { "simpleText": "Ed Sheeran" }, + "navigationEndpoint": { + "clickTrackingParams": "CKMIENowGBQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EdSheeran", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC0C-w0YjGpqDXGB8IHb662A", + "canonicalBaseUrl": "/@EdSheeran" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/emA0C_i9tUyJgxrfVpJ31e0QCU2MlovjYvQkAC9mDuSJyhl6h8PkFj5-ozRzz2vFtpbnls8s1W4=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/emA0C_i9tUyJgxrfVpJ31e0QCU2MlovjYvQkAC9mDuSJyhl6h8PkFj5-ozRzz2vFtpbnls8s1W4=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Ed Sheeran x\n\n+-=÷× (Tour Collection: Live) | 27th Dec - Pre-order now\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Ed Sheeran", + "navigationEndpoint": { + "clickTrackingParams": "CKMIENowGBQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EdSheeran", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC0C-w0YjGpqDXGB8IHb662A", + "canonicalBaseUrl": "/@EdSheeran" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "55.6 million subscribers" + } + }, + "simpleText": "55.6M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CKMIENowGBQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@EdSheeran" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC0C-w0YjGpqDXGB8IHb662A", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CKQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Ed Sheeran." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Ed Sheeran." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Ed Sheeran" + }, + "trackingParams": "CLIIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Ed Sheeran" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Ed Sheeran" + }, + "trackingParams": "CLEIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Ed Sheeran" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Ed Sheeran" + }, + "trackingParams": "CLAIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Ed Sheeran" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CKgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CKgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CKgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzBDLXcwWWpHcHFEWEdCOElIYjY2MkESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzBDLXcwWWpHcHFEWEdCOElIYjY2MkESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzBDLXcwWWpHcHFEWEdCOElIYjY2MkESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKoIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Ed Sheeran" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC0C-w0YjGpqDXGB8IHb662A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKsIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CKkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzBDLXcwWWpHcHFEWEdCOElIYjY2MkEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CKQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC0C-w0YjGpqDXGB8IHb662A"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CKQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKUIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Ed Sheeran" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC0C-w0YjGpqDXGB8IHb662A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKYIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CKMIENowGBQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Ed Sheeran", + "navigationEndpoint": { + "clickTrackingParams": "CKMIENowGBQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EdSheeran", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC0C-w0YjGpqDXGB8IHb662A", + "canonicalBaseUrl": "/@EdSheeran" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC7VSImgZ4Ar_eIxLMMR9S9w", + "title": { "simpleText": "Emiliana Torrini" }, + "navigationEndpoint": { + "clickTrackingParams": "CJMIENowGBUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EmilianaTorrini1", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC7VSImgZ4Ar_eIxLMMR9S9w", + "canonicalBaseUrl": "/@EmilianaTorrini1" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/FybHfKRd27YCtT3qrcwPR3KeNKhMq56CnTlGfQHG_yt2Hvdq-pvCqjgvHLMeLRnt3oAqyddnlQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/FybHfKRd27YCtT3qrcwPR3KeNKhMq56CnTlGfQHG_yt2Hvdq-pvCqjgvHLMeLRnt3oAqyddnlQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { "text": "Emilíana's Official Youtube Channel" } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Emiliana Torrini", + "navigationEndpoint": { + "clickTrackingParams": "CJMIENowGBUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EmilianaTorrini1", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC7VSImgZ4Ar_eIxLMMR9S9w", + "canonicalBaseUrl": "/@EmilianaTorrini1" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "23.9K subscribers" } + }, + "simpleText": "23.9K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJMIENowGBUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@EmilianaTorrini1" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC7VSImgZ4Ar_eIxLMMR9S9w", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CJQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Emiliana Torrini." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Emiliana Torrini." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Emiliana Torrini" + }, + "trackingParams": "CKIIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Emiliana Torrini" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Emiliana Torrini" + }, + "trackingParams": "CKEIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Emiliana Torrini" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Emiliana Torrini" + }, + "trackingParams": "CKAIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Emiliana Torrini" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CJgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CJgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CJgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzdWU0ltZ1o0QXJfZUl4TE1NUjlTOXcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzdWU0ltZ1o0QXJfZUl4TE1NUjlTOXcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzdWU0ltZ1o0QXJfZUl4TE1NUjlTOXcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJoIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Emiliana Torrini" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC7VSImgZ4Ar_eIxLMMR9S9w" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJsIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CJkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzdWU0ltZ1o0QXJfZUl4TE1NUjlTOXcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CJQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC7VSImgZ4Ar_eIxLMMR9S9w"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CJQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJUIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Emiliana Torrini" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC7VSImgZ4Ar_eIxLMMR9S9w" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJYIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CJMIENowGBUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Emiliana Torrini", + "navigationEndpoint": { + "clickTrackingParams": "CJMIENowGBUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EmilianaTorrini1", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC7VSImgZ4Ar_eIxLMMR9S9w", + "canonicalBaseUrl": "/@EmilianaTorrini1" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCFeqAfEuKm7lIg2ddQzh61A", + "title": { "simpleText": "Emirichu" }, + "navigationEndpoint": { + "clickTrackingParams": "CIMIENowGBYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Emirichu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCFeqAfEuKm7lIg2ddQzh61A", + "canonicalBaseUrl": "/@Emirichu" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/7n_8uX4SlhW8lOmV1GjnOg70WnT5fOipvILzN8BA-fzAtsNZyUVCSBwSN8XHRd1PPinE6GdL=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/7n_8uX4SlhW8lOmV1GjnOg70WnT5fOipvILzN8BA-fzAtsNZyUVCSBwSN8XHRd1PPinE6GdL=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Hi, I like drawing and I'm using this channel to be more active with my hobby.\nI'm not an animator. (I occasionally make animatics, but those arent the same as animations.)\n\nThanks for stopping by!~ I don't really know what I'm doing but I'm trying. \n\nMerch!: https://emirichu.store/\nInstagram: https://www.instagram.com/emirichuu/\nTwitter: https://twitter.com/EmirichuYT\n\nBusiness Inquiries: emirichu@geexplus.co.jp" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Emirichu", + "navigationEndpoint": { + "clickTrackingParams": "CIMIENowGBYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Emirichu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCFeqAfEuKm7lIg2ddQzh61A", + "canonicalBaseUrl": "/@Emirichu" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "3.5 million subscribers" + } + }, + "simpleText": "3.5M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CIMIENowGBYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { "simpleText": "@Emirichu" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCFeqAfEuKm7lIg2ddQzh61A", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CIQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Emirichu." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Emirichu." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Emirichu" + }, + "trackingParams": "CJIIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Emirichu" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Emirichu" + }, + "trackingParams": "CJEIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Emirichu" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Emirichu" + }, + "trackingParams": "CJAIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Emirichu" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CIgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CIgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CIgIEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0ZlcUFmRXVLbTdsSWcyZGRRemg2MUESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI8IEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0ZlcUFmRXVLbTdsSWcyZGRRemg2MUESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI4IEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0ZlcUFmRXVLbTdsSWcyZGRRemg2MUESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI0IEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIoIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Emirichu" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCFeqAfEuKm7lIg2ddQzh61A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIwIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIsIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CIkIENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ0ZlcUFmRXVLbTdsSWcyZGRRemg2MUEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CIQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCFeqAfEuKm7lIg2ddQzh61A"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CIQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIQIEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIUIEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Emirichu" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCFeqAfEuKm7lIg2ddQzh61A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIcIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIYIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CIMIENowGBYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Emirichu", + "navigationEndpoint": { + "clickTrackingParams": "CIMIENowGBYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Emirichu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCFeqAfEuKm7lIg2ddQzh61A", + "canonicalBaseUrl": "/@Emirichu" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC3eP48LEsxo4moTFYrOrG9A", + "title": { "simpleText": "FiNCH" }, + "navigationEndpoint": { + "clickTrackingParams": "CPMHENowGBciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@FiNCHOFFiCiAL", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/@FiNCHOFFiCiAL" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/IULEyFRoo6GfzTo2EvW-bwNbA4s9lcY7ru1vd_931Fy3d-1rxwy4egj5Z0pWCyv6UUWTKsMaozo=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Offizieller YouTube Account von FiNCH\nFiNCH Kanal abonnieren: https://ytb.li/Finch\nFiNCH auf Social Media folgen: https://www.instagram.com/finch\n\n\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "FiNCH", + "navigationEndpoint": { + "clickTrackingParams": "CPMHENowGBciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@FiNCHOFFiCiAL", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/@FiNCHOFFiCiAL" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "531K subscribers" } + }, + "simpleText": "531K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CPMHENowGBciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@FiNCHOFFiCiAL" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC3eP48LEsxo4moTFYrOrG9A", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CPQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to FiNCH." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from FiNCH." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for FiNCH" + }, + "trackingParams": "CIIIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for FiNCH" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for FiNCH" + }, + "trackingParams": "CIEIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for FiNCH" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for FiNCH" + }, + "trackingParams": "CIAIEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for FiNCH" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CPgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CPgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CPgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzNlUDQ4TEVzeG80bW9URllyT3JHOUESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzNlUDQ4TEVzeG80bW9URllyT3JHOUESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzNlUDQ4TEVzeG80bW9URllyT3JHOUESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPoHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "FiNCH" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC3eP48LEsxo4moTFYrOrG9A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPsHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CPkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzNlUDQ4TEVzeG80bW9URllyT3JHOUEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CPQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC3eP48LEsxo4moTFYrOrG9A"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CPQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPUHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "FiNCH" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC3eP48LEsxo4moTFYrOrG9A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPYHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CPMHENowGBciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "FiNCH", + "navigationEndpoint": { + "clickTrackingParams": "CPMHENowGBciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@FiNCHOFFiCiAL", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC3eP48LEsxo4moTFYrOrG9A", + "canonicalBaseUrl": "/@FiNCHOFFiCiAL" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCRLR2Jo3YiRwwTp0eWdG8nA", + "title": { "simpleText": "FOURTY" }, + "navigationEndpoint": { + "clickTrackingParams": "COMHENowGBgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@fourty6748", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCRLR2Jo3YiRwwTp0eWdG8nA", + "canonicalBaseUrl": "/@fourty6748" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/xAzcB2ZsuLeLTP9-lHvVWzVe01DhMMH8r9xH-3vHd_11GfQAaG0_Hd5Ek6vUJSBq7_qLBVdjFQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/xAzcB2ZsuLeLTP9-lHvVWzVe01DhMMH8r9xH-3vHd_11GfQAaG0_Hd5Ek6vUJSBq7_qLBVdjFQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "FOURTY", + "navigationEndpoint": { + "clickTrackingParams": "COMHENowGBgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@fourty6748", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCRLR2Jo3YiRwwTp0eWdG8nA", + "canonicalBaseUrl": "/@fourty6748" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "12.4K subscribers" } + }, + "simpleText": "12.4K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "COMHENowGBgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@fourty6748" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCRLR2Jo3YiRwwTp0eWdG8nA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "COQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to FOURTY." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from FOURTY." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for FOURTY" + }, + "trackingParams": "CPIHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for FOURTY" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for FOURTY" + }, + "trackingParams": "CPEHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for FOURTY" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for FOURTY" + }, + "trackingParams": "CPAHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for FOURTY" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "COgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "COgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "COgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1JMUjJKbzNZaVJ3d1RwMGVXZEc4bkESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1JMUjJKbzNZaVJ3d1RwMGVXZEc4bkESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1JMUjJKbzNZaVJ3d1RwMGVXZEc4bkESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COoHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "FOURTY" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCRLR2Jo3YiRwwTp0eWdG8nA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COsHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "COkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1JMUjJKbzNZaVJ3d1RwMGVXZEc4bkEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "COQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCRLR2Jo3YiRwwTp0eWdG8nA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "COQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COUHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "FOURTY" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCRLR2Jo3YiRwwTp0eWdG8nA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COYHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "COMHENowGBgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "FOURTY", + "navigationEndpoint": { + "clickTrackingParams": "COMHENowGBgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@fourty6748", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCRLR2Jo3YiRwwTp0eWdG8nA", + "canonicalBaseUrl": "/@fourty6748" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC9Kl5Xy-kDY_z9CD9epW63g", + "title": { "simpleText": "HE/RO" }, + "navigationEndpoint": { + "clickTrackingParams": "CNMHENowGBkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@YouAreHero", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9Kl5Xy-kDY_z9CD9epW63g", + "canonicalBaseUrl": "/@YouAreHero" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/cJrddNdqCNkj9No1bG_9zOYjs9nRitBTaGw_69P6dgKIAZa6JpDgFEA-P0EN5JCF-j8VfxYHJA=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/cJrddNdqCNkj9No1bG_9zOYjs9nRitBTaGw_69P6dgKIAZa6JpDgFEA-P0EN5JCF-j8VfxYHJA=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [{ "text": "YOU ARE HE/RO. \n\n\n\n" }] + }, + "shortBylineText": { + "runs": [ + { + "text": "HE/RO", + "navigationEndpoint": { + "clickTrackingParams": "CNMHENowGBkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@YouAreHero", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9Kl5Xy-kDY_z9CD9epW63g", + "canonicalBaseUrl": "/@YouAreHero" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "299K subscribers" } + }, + "simpleText": "299K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CNMHENowGBkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@YouAreHero" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC9Kl5Xy-kDY_z9CD9epW63g", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CNQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to HE/RO." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from HE/RO." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for HE/RO" + }, + "trackingParams": "COIHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for HE/RO" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for HE/RO" + }, + "trackingParams": "COEHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for HE/RO" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for HE/RO" + }, + "trackingParams": "COAHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for HE/RO" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CNgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CNgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CNgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzlLbDVYeS1rRFlfejlDRDllcFc2M2cSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzlLbDVYeS1rRFlfejlDRDllcFc2M2cSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzlLbDVYeS1rRFlfejlDRDllcFc2M2cSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNoHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "HE/RO" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC9Kl5Xy-kDY_z9CD9epW63g" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNsHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CNkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzlLbDVYeS1rRFlfejlDRDllcFc2M2cgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CNQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC9Kl5Xy-kDY_z9CD9epW63g"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CNQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNUHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "HE/RO" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC9Kl5Xy-kDY_z9CD9epW63g" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNYHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CNMHENowGBkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "HE/RO", + "navigationEndpoint": { + "clickTrackingParams": "CNMHENowGBkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@YouAreHero", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9Kl5Xy-kDY_z9CD9epW63g", + "canonicalBaseUrl": "/@YouAreHero" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCn3yU2bHX_8HMCfXOBTkXCg", + "title": { "simpleText": "Helene Fischer (Official)" }, + "navigationEndpoint": { + "clickTrackingParams": "CMMHENowGBoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@helenefischer", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCn3yU2bHX_8HMCfXOBTkXCg", + "canonicalBaseUrl": "/@helenefischer" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/CHqviE7of-sFlBxamsxFId6RHNEV_p-DMQJvC-bfdFtEXNYxpi-D7BF74nhm46RXEZjbhbAHJg=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/CHqviE7of-sFlBxamsxFId6RHNEV_p-DMQJvC-bfdFtEXNYxpi-D7BF74nhm46RXEZjbhbAHJg=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Der offizielle Helene Fischer YouTube Channel\n\n#helenefischer | Mehr Infos: https://www.helene-fischer.de\n\nKanal abonnieren http://bitly.com/HeleneFischerOfficial" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Helene Fischer (Official)", + "navigationEndpoint": { + "clickTrackingParams": "CMMHENowGBoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@helenefischer", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCn3yU2bHX_8HMCfXOBTkXCg", + "canonicalBaseUrl": "/@helenefischer" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.09 million subscribers" + } + }, + "simpleText": "1.09M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CMMHENowGBoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@helenefischer" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCn3yU2bHX_8HMCfXOBTkXCg", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CMQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Helene Fischer (Official)." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Helene Fischer (Official)." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Helene Fischer (Official)" + }, + "trackingParams": "CNIHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Helene Fischer (Official)" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Helene Fischer (Official)" + }, + "trackingParams": "CNEHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Helene Fischer (Official)" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Helene Fischer (Official)" + }, + "trackingParams": "CNAHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Helene Fischer (Official)" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CMgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CMgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CMgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ24zeVUyYkhYXzhITUNmWE9CVGtYQ2cSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ24zeVUyYkhYXzhITUNmWE9CVGtYQ2cSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ24zeVUyYkhYXzhITUNmWE9CVGtYQ2cSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMoHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Helene Fischer (Official)" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCn3yU2bHX_8HMCfXOBTkXCg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMsHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CMkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ24zeVUyYkhYXzhITUNmWE9CVGtYQ2cgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CMQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCn3yU2bHX_8HMCfXOBTkXCg"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CMQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMUHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "Helene Fischer (Official)" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCn3yU2bHX_8HMCfXOBTkXCg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMYHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CMMHENowGBoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Helene Fischer (Official)", + "navigationEndpoint": { + "clickTrackingParams": "CMMHENowGBoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@helenefischer", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCn3yU2bHX_8HMCfXOBTkXCg", + "canonicalBaseUrl": "/@helenefischer" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCT9zcQNlyht7fRlcjmflRSA", + "title": { "simpleText": "ImagineDragons" }, + "navigationEndpoint": { + "clickTrackingParams": "CLMHENowGBsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ImagineDragons", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCT9zcQNlyht7fRlcjmflRSA", + "canonicalBaseUrl": "/@ImagineDragons" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/1DTGWKanZjHTM_N9ieyxm2np0Dtk7gTDOXBKHuGlMEbvgmi5Mv-A47rJApN1dRBC_JEyXazBkQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/1DTGWKanZjHTM_N9ieyxm2np0Dtk7gTDOXBKHuGlMEbvgmi5Mv-A47rJApN1dRBC_JEyXazBkQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "LOOM. our sixth studio album. Listen and purchase now: https://imaginedragons.lnk.to/loom \nShop LOOM merch & music products: https://imaginedragons.lnk.to/loomstore \nGet the target exclusive orange vinyl: https://imaginedragons.lnk.to/loom/target \nGet the walmart exclusive pink vinyl: https://imaginedragons.lnk.to/loom/walmart \nGet the indie exclusive curacao vinyl: https://imaginedragons.lnk.to/LOOM/recordstoreday\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "ImagineDragons", + "navigationEndpoint": { + "clickTrackingParams": "CLMHENowGBsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ImagineDragons", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCT9zcQNlyht7fRlcjmflRSA", + "canonicalBaseUrl": "/@ImagineDragons" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "32.3 million subscribers" + } + }, + "simpleText": "32.3M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CLMHENowGBsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@ImagineDragons" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCT9zcQNlyht7fRlcjmflRSA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CLQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to ImagineDragons." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from ImagineDragons." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for ImagineDragons" + }, + "trackingParams": "CMIHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for ImagineDragons" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for ImagineDragons" + }, + "trackingParams": "CMEHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for ImagineDragons" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for ImagineDragons" + }, + "trackingParams": "CMAHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for ImagineDragons" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CLgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CLgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CLgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1Q5emNRTmx5aHQ3ZlJsY2ptZmxSU0ESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1Q5emNRTmx5aHQ3ZlJsY2ptZmxSU0ESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1Q5emNRTmx5aHQ3ZlJsY2ptZmxSU0ESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLoHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "ImagineDragons" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCT9zcQNlyht7fRlcjmflRSA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLsHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CLkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1Q5emNRTmx5aHQ3ZlJsY2ptZmxSU0EgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CLQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCT9zcQNlyht7fRlcjmflRSA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CLQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLUHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "ImagineDragons" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCT9zcQNlyht7fRlcjmflRSA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLYHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CLMHENowGBsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "ImagineDragons", + "navigationEndpoint": { + "clickTrackingParams": "CLMHENowGBsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ImagineDragons", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCT9zcQNlyht7fRlcjmflRSA", + "canonicalBaseUrl": "/@ImagineDragons" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC-Fnix71vRP64WXeo0ikd0Q", + "title": { "simpleText": "IVE" }, + "navigationEndpoint": { + "clickTrackingParams": "CKMHENowGBwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@IVEstarship", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/@IVEstarship" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/Fg5o4LNedtb4kLRjRZ2waWSG_xnAU-IvdO8_HyNGoxC7a1OPYwDFkxFLjpDmb35dPgdhkaYGoVE=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/Fg5o4LNedtb4kLRjRZ2waWSG_xnAU-IvdO8_HyNGoxC7a1OPYwDFkxFLjpDmb35dPgdhkaYGoVE=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "아이브(IVE) Official Youtube Channel\n아이브(IVE) 공식 유튜브 채널\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "IVE", + "navigationEndpoint": { + "clickTrackingParams": "CKMHENowGBwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@IVEstarship", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/@IVEstarship" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "3.94 million subscribers" + } + }, + "simpleText": "3.94M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CKMHENowGBwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@IVEstarship" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC-Fnix71vRP64WXeo0ikd0Q", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CKQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to IVE." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from IVE." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for IVE" + }, + "trackingParams": "CLIHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for IVE" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for IVE" + }, + "trackingParams": "CLEHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for IVE" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for IVE" + }, + "trackingParams": "CLAHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for IVE" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CKgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CKgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CKgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQy1Gbml4NzF2UlA2NFdYZW8waWtkMFESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQy1Gbml4NzF2UlA2NFdYZW8waWtkMFESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQy1Gbml4NzF2UlA2NFdYZW8waWtkMFESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKoHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "IVE" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC-Fnix71vRP64WXeo0ikd0Q" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKsHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CKkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQy1Gbml4NzF2UlA2NFdYZW8waWtkMFEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CKQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC-Fnix71vRP64WXeo0ikd0Q"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CKQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKUHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "IVE" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC-Fnix71vRP64WXeo0ikd0Q" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKYHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CKMHENowGBwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "IVE", + "navigationEndpoint": { + "clickTrackingParams": "CKMHENowGBwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@IVEstarship", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC-Fnix71vRP64WXeo0ikd0Q", + "canonicalBaseUrl": "/@IVEstarship" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCWFKCr40YwOZQx8FHU_ZqqQ", + "title": { "simpleText": "JerryRigEverything" }, + "navigationEndpoint": { + "clickTrackingParams": "CJMHENowGB0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@JerryRigEverything", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWFKCr40YwOZQx8FHU_ZqqQ", + "canonicalBaseUrl": "/@JerryRigEverything" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_lgA3xMKNY0-d05dSmj3zt7CeTS1QSS5jVgOWqD03VsSm4=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_lgA3xMKNY0-d05dSmj3zt7CeTS1QSS5jVgOWqD03VsSm4=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "I review technology from the inside. \nEcoFlow Global Ambassador.\nAnker is the Official Charging Partner of JerryRigEverything!\n\nI review technology from the inside. \n\nSEND ME STUFF: \n125 E Main St. Suite 335\nAmerican Fork, Ut. \n84003\n\nANYTHING SENT TO THE ABOVE ADDRESS will not be returned. \nContact: JerryRigEverything at gmail dot com\n\nVideos are for Entertainment Purposes only. Attempt any repairs at your own risk. \n\nJerryRigEverything is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to amazon.com.\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "JerryRigEverything", + "navigationEndpoint": { + "clickTrackingParams": "CJMHENowGB0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@JerryRigEverything", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWFKCr40YwOZQx8FHU_ZqqQ", + "canonicalBaseUrl": "/@JerryRigEverything" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "9.04 million subscribers" + } + }, + "simpleText": "9.04M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CJMHENowGB0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { + "simpleText": "@JerryRigEverything" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCWFKCr40YwOZQx8FHU_ZqqQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CJQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to JerryRigEverything." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from JerryRigEverything." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for JerryRigEverything" + }, + "trackingParams": "CKIHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for JerryRigEverything" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for JerryRigEverything" + }, + "trackingParams": "CKEHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for JerryRigEverything" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for JerryRigEverything" + }, + "trackingParams": "CKAHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for JerryRigEverything" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CJgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CJgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CJgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1dGS0NyNDBZd09aUXg4RkhVX1pxcVESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1dGS0NyNDBZd09aUXg4RkhVX1pxcVESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1dGS0NyNDBZd09aUXg4RkhVX1pxcVESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJoHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "JerryRigEverything" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCWFKCr40YwOZQx8FHU_ZqqQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJsHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CJkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1dGS0NyNDBZd09aUXg4RkhVX1pxcVEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CJQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCWFKCr40YwOZQx8FHU_ZqqQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CJQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJUHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "JerryRigEverything" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCWFKCr40YwOZQx8FHU_ZqqQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJYHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CJMHENowGB0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "JerryRigEverything", + "navigationEndpoint": { + "clickTrackingParams": "CJMHENowGB0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@JerryRigEverything", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWFKCr40YwOZQx8FHU_ZqqQ", + "canonicalBaseUrl": "/@JerryRigEverything" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCVZlxkKqlvVqzRJXhAGq42Q", + "title": { "simpleText": "JoergSprave" }, + "navigationEndpoint": { + "clickTrackingParams": "CIMHENowGB4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Slingshotchannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVZlxkKqlvVqzRJXhAGq42Q", + "canonicalBaseUrl": "/@Slingshotchannel" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_kKQv93ELRWu1XsqlnRBDswoC56a8lQEbBWtQrbJR02w18=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_kKQv93ELRWu1XsqlnRBDswoC56a8lQEbBWtQrbJR02w18=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "This channel is all about launchers. \n\nMost of them are powered by rubber, a fascinating material that converts muscle energy into kinetic energy! But we also present bladed weapons and launchers powered by other energy sources. \n\nInventions, reviews, stunts and destruction - if that is what you want, you came to the right place for sure!\n\nI am also the CEO and part owner of the GoGun GmbH, a distributor and online sales organization specialized in archery equipment, airguns and knives. Therefore all my videos are marked as \"Werbung\" (advertizement) throughout the whole runtime. \n\nLegal Disclosure\nInformation in accordance with Section 5 TMG and § 55 section 2 RStV\nJörg Sprave\nc/o GoGun GmbH\nKrablerstraße 127/Hall 9 \n45326 Essen\nGermany\n\nContact Information\nTelephone: 015156342943\nemail: jsprave@macrosystem.de\nVAT identification number in accordance with Section 27 a of the German VAT act DE305798007" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "JoergSprave", + "navigationEndpoint": { + "clickTrackingParams": "CIMHENowGB4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Slingshotchannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVZlxkKqlvVqzRJXhAGq42Q", + "canonicalBaseUrl": "/@Slingshotchannel" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "3.07 million subscribers" + } + }, + "simpleText": "3.07M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CIMHENowGB4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { + "simpleText": "@Slingshotchannel" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCVZlxkKqlvVqzRJXhAGq42Q", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CIQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to JoergSprave." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from JoergSprave." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for JoergSprave" + }, + "trackingParams": "CJIHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for JoergSprave" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for JoergSprave" + }, + "trackingParams": "CJEHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for JoergSprave" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for JoergSprave" + }, + "trackingParams": "CJAHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for JoergSprave" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CIgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CIgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CIgHEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1ZabHhrS3FsdlZxelJKWGhBR3E0MlESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI8HEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1ZabHhrS3FsdlZxelJKWGhBR3E0MlESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI4HEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1ZabHhrS3FsdlZxelJKWGhBR3E0MlESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI0HEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIoHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "JoergSprave" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCVZlxkKqlvVqzRJXhAGq42Q" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIwHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIsHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CIkHENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1ZabHhrS3FsdlZxelJKWGhBR3E0MlEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CIQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCVZlxkKqlvVqzRJXhAGq42Q"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CIQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIQHEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIUHEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "JoergSprave" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCVZlxkKqlvVqzRJXhAGq42Q" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIcHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIYHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CIMHENowGB4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "JoergSprave", + "navigationEndpoint": { + "clickTrackingParams": "CIMHENowGB4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Slingshotchannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVZlxkKqlvVqzRJXhAGq42Q", + "canonicalBaseUrl": "/@Slingshotchannel" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCX3IrV7uIir6yzMM9kOtH1Q", + "title": { "simpleText": "Kenya Grace" }, + "navigationEndpoint": { + "clickTrackingParams": "CPMGENowGB8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@kenyagracebaby", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCX3IrV7uIir6yzMM9kOtH1Q", + "canonicalBaseUrl": "/@kenyagracebaby" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/p4ekeRYzj_6n6LnMJGqGW3m7cH3H1Kyx73MJhck3ibFdPPGXcEXqR6QPTJOnT6EngxdD9rlaQO4=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/p4ekeRYzj_6n6LnMJGqGW3m7cH3H1Kyx73MJhck3ibFdPPGXcEXqR6QPTJOnT6EngxdD9rlaQO4=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "I like making songs✨ Insta: kenyagrace Tiktok: kenyagracebaby" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Kenya Grace", + "navigationEndpoint": { + "clickTrackingParams": "CPMGENowGB8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@kenyagracebaby", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCX3IrV7uIir6yzMM9kOtH1Q", + "canonicalBaseUrl": "/@kenyagracebaby" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "262K subscribers" } + }, + "simpleText": "262K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CPMGENowGB8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@kenyagracebaby" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCX3IrV7uIir6yzMM9kOtH1Q", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CPQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Kenya Grace." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Kenya Grace." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Kenya Grace" + }, + "trackingParams": "CIIHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Kenya Grace" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Kenya Grace" + }, + "trackingParams": "CIEHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Kenya Grace" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Kenya Grace" + }, + "trackingParams": "CIAHEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Kenya Grace" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CPgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CPgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CPgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1gzSXJWN3VJaXI2eXpNTTlrT3RIMVESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1gzSXJWN3VJaXI2eXpNTTlrT3RIMVESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1gzSXJWN3VJaXI2eXpNTTlrT3RIMVESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPoGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Kenya Grace" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCX3IrV7uIir6yzMM9kOtH1Q" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPsGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CPkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1gzSXJWN3VJaXI2eXpNTTlrT3RIMVEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CPQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCX3IrV7uIir6yzMM9kOtH1Q"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CPQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPUGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Kenya Grace" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCX3IrV7uIir6yzMM9kOtH1Q" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPYGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CPMGENowGB8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Kenya Grace", + "navigationEndpoint": { + "clickTrackingParams": "CPMGENowGB8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@kenyagracebaby", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCX3IrV7uIir6yzMM9kOtH1Q", + "canonicalBaseUrl": "/@kenyagracebaby" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCv2M31TPUGjbrfjrOYp7ShQ", + "title": { "simpleText": "Kim Wilde" }, + "navigationEndpoint": { + "clickTrackingParams": "COMGENowGCAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@OfficialKimWilde", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCv2M31TPUGjbrfjrOYp7ShQ", + "canonicalBaseUrl": "/@OfficialKimWilde" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/IPJmQSBRlYFTgP7nVAthn-zdyPXO7vhmYgnHZHJuq8APh0jUTRGCvyKG53Pd9734Q3VU1iST=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/IPJmQSBRlYFTgP7nVAthn-zdyPXO7vhmYgnHZHJuq8APh0jUTRGCvyKG53Pd9734Q3VU1iST=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Kim Wilde needs no introduction, having registered a staggering 30 hits on the UK charts since 1981, and selling over 30 million records globally.\n\n2024 - The Kim Wilde European Tour\nFrance - Belgium - Holland - Sweden - Denmark - Portugal - Slovakia and more...\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Kim Wilde", + "navigationEndpoint": { + "clickTrackingParams": "COMGENowGCAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@OfficialKimWilde", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCv2M31TPUGjbrfjrOYp7ShQ", + "canonicalBaseUrl": "/@OfficialKimWilde" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "228K subscribers" } + }, + "simpleText": "228K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "COMGENowGCAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@OfficialKimWilde" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCv2M31TPUGjbrfjrOYp7ShQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "COQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Kim Wilde." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Kim Wilde." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Kim Wilde" + }, + "trackingParams": "CPIGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Kim Wilde" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Kim Wilde" + }, + "trackingParams": "CPEGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Kim Wilde" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Kim Wilde" + }, + "trackingParams": "CPAGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Kim Wilde" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "COgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "COgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "COgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3YyTTMxVFBVR2picmZqck9ZcDdTaFESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3YyTTMxVFBVR2picmZqck9ZcDdTaFESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3YyTTMxVFBVR2picmZqck9ZcDdTaFESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COoGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Kim Wilde" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCv2M31TPUGjbrfjrOYp7ShQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COsGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "COkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3YyTTMxVFBVR2picmZqck9ZcDdTaFEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "COQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCv2M31TPUGjbrfjrOYp7ShQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "COQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COUGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Kim Wilde" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCv2M31TPUGjbrfjrOYp7ShQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COYGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "COMGENowGCAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Kim Wilde", + "navigationEndpoint": { + "clickTrackingParams": "COMGENowGCAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@OfficialKimWilde", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCv2M31TPUGjbrfjrOYp7ShQ", + "canonicalBaseUrl": "/@OfficialKimWilde" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC436PxqEZc_vN-w-Op9aokw", + "title": { "simpleText": "Körner - Topic" }, + "navigationEndpoint": { + "clickTrackingParams": "CNMGENowGCEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UC436PxqEZc_vN-w-Op9aokw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC436PxqEZc_vN-w-Op9aokw", + "canonicalBaseUrl": "/channel/UC436PxqEZc_vN-w-Op9aokw" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/IlfVAE1TEZ4No2fke8xH2llEJ2Y18GFlgXvyncuHdT_oDfPEESkEGfqGWv7Yzaah4Icj5-FaoQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/IlfVAE1TEZ4No2fke8xH2llEJ2Y18GFlgXvyncuHdT_oDfPEESkEGfqGWv7Yzaah4Icj5-FaoQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Körner - Topic", + "navigationEndpoint": { + "clickTrackingParams": "CNMGENowGCEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UC436PxqEZc_vN-w-Op9aokw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC436PxqEZc_vN-w-Op9aokw", + "canonicalBaseUrl": "/channel/UC436PxqEZc_vN-w-Op9aokw" + } + } + } + ] + }, + "videoCountText": { + "runs": [{ "text": "18" }, { "text": " videos" }] + }, + "subscriptionButton": { "subscribed": true }, + "subscriberCountText": { + "accessibility": { + "accessibilityData": { "label": "223 subscribers" } + }, + "simpleText": "223 subscribers" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC436PxqEZc_vN-w-Op9aokw", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CNQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Körner - Topic." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Körner - Topic." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Körner - Topic" + }, + "trackingParams": "COIGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Körner - Topic" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Körner - Topic" + }, + "trackingParams": "COEGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Körner - Topic" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Körner - Topic" + }, + "trackingParams": "COAGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Körner - Topic" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CNgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CNgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CNgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzQzNlB4cUVaY192Ti13LU9wOWFva3cSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzQzNlB4cUVaY192Ti13LU9wOWFva3cSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzQzNlB4cUVaY192Ti13LU9wOWFva3cSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNoGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Körner - Topic" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC436PxqEZc_vN-w-Op9aokw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNsGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CNkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzQzNlB4cUVaY192Ti13LU9wOWFva3cgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CNQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC436PxqEZc_vN-w-Op9aokw"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CNQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNUGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Körner - Topic" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC436PxqEZc_vN-w-Op9aokw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNYGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CNMGENowGCEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Körner - Topic", + "navigationEndpoint": { + "clickTrackingParams": "CNMGENowGCEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UC436PxqEZc_vN-w-Op9aokw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC436PxqEZc_vN-w-Op9aokw", + "canonicalBaseUrl": "/channel/UC436PxqEZc_vN-w-Op9aokw" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCNL1ZadSjHpjm4q9j2sVtOA", + "title": { "simpleText": "Lady Gaga" }, + "navigationEndpoint": { + "clickTrackingParams": "CMMGENowGCIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LadyGaga", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCNL1ZadSjHpjm4q9j2sVtOA", + "canonicalBaseUrl": "/@LadyGaga" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/GItB-g3kPf6WOCfcSaHwuiNFsdJRNu5EeuQfhbwKNnNWIOS2Nhwx4g-JeARQLtrhO6uAnjq2=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/GItB-g3kPf6WOCfcSaHwuiNFsdJRNu5EeuQfhbwKNnNWIOS2Nhwx4g-JeARQLtrhO6uAnjq2=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [{ "text": "ladygaga.com\nhauslabs.com" }] + }, + "shortBylineText": { + "runs": [ + { + "text": "Lady Gaga", + "navigationEndpoint": { + "clickTrackingParams": "CMMGENowGCIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LadyGaga", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCNL1ZadSjHpjm4q9j2sVtOA", + "canonicalBaseUrl": "/@LadyGaga" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "25.6 million subscribers" + } + }, + "simpleText": "25.6M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CMMGENowGCIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@LadyGaga" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCNL1ZadSjHpjm4q9j2sVtOA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CMQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Lady Gaga." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Lady Gaga." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Lady Gaga" + }, + "trackingParams": "CNIGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Lady Gaga" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Lady Gaga" + }, + "trackingParams": "CNEGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Lady Gaga" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Lady Gaga" + }, + "trackingParams": "CNAGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Lady Gaga" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CMgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CMgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CMgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ05MMVphZFNqSHBqbTRxOWoyc1Z0T0ESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ05MMVphZFNqSHBqbTRxOWoyc1Z0T0ESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ05MMVphZFNqSHBqbTRxOWoyc1Z0T0ESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMoGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Lady Gaga" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCNL1ZadSjHpjm4q9j2sVtOA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMsGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CMkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ05MMVphZFNqSHBqbTRxOWoyc1Z0T0EgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CMQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCNL1ZadSjHpjm4q9j2sVtOA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CMQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMUGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Lady Gaga" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCNL1ZadSjHpjm4q9j2sVtOA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMYGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CMMGENowGCIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Lady Gaga", + "navigationEndpoint": { + "clickTrackingParams": "CMMGENowGCIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LadyGaga", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCNL1ZadSjHpjm4q9j2sVtOA", + "canonicalBaseUrl": "/@LadyGaga" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCs-QBT4qkj_YiQw1ZntDO3g", + "title": { "simpleText": "LE SSERAFIM" }, + "navigationEndpoint": { + "clickTrackingParams": "CLMGENowGCMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LESSERAFIM_official", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCs-QBT4qkj_YiQw1ZntDO3g", + "canonicalBaseUrl": "/@LESSERAFIM_official" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/4qrLd3kEQp0HKI5kKfewXXHxR_WxBAb7r2-Dp_V4ZHp9XVvLfDQ9OpBa3Nhr1lgkOQuodZzymyU=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/4qrLd3kEQp0HKI5kKfewXXHxR_WxBAb7r2-Dp_V4ZHp9XVvLfDQ9OpBa3Nhr1lgkOQuodZzymyU=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "LE SSERAFIM Official Youtube\n르세라핌 공식 유튜브\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "LE SSERAFIM", + "navigationEndpoint": { + "clickTrackingParams": "CLMGENowGCMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LESSERAFIM_official", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCs-QBT4qkj_YiQw1ZntDO3g", + "canonicalBaseUrl": "/@LESSERAFIM_official" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "5.67 million subscribers" + } + }, + "simpleText": "5.67M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CLMGENowGCMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@LESSERAFIM_official" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCs-QBT4qkj_YiQw1ZntDO3g", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CLQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to LE SSERAFIM." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from LE SSERAFIM." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for LE SSERAFIM" + }, + "trackingParams": "CMIGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for LE SSERAFIM" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for LE SSERAFIM" + }, + "trackingParams": "CMEGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for LE SSERAFIM" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for LE SSERAFIM" + }, + "trackingParams": "CMAGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for LE SSERAFIM" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CLgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CLgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CLgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3MtUUJUNHFral9ZaVF3MVpudERPM2cSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3MtUUJUNHFral9ZaVF3MVpudERPM2cSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3MtUUJUNHFral9ZaVF3MVpudERPM2cSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLoGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "LE SSERAFIM" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCs-QBT4qkj_YiQw1ZntDO3g" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLsGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CLkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3MtUUJUNHFral9ZaVF3MVpudERPM2cgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CLQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCs-QBT4qkj_YiQw1ZntDO3g"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CLQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLUGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "LE SSERAFIM" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCs-QBT4qkj_YiQw1ZntDO3g" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLYGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CLMGENowGCMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "LE SSERAFIM", + "navigationEndpoint": { + "clickTrackingParams": "CLMGENowGCMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LESSERAFIM_official", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCs-QBT4qkj_YiQw1ZntDO3g", + "canonicalBaseUrl": "/@LESSERAFIM_official" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCLQNVUIJXJ2ejVHuSlBtmGQ", + "title": { "simpleText": "LEA" }, + "navigationEndpoint": { + "clickTrackingParams": "CKMGENowGCQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@thisislealea", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCLQNVUIJXJ2ejVHuSlBtmGQ", + "canonicalBaseUrl": "/@thisislealea" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/lAhFqB2fZcOq0Xv4v5FZRSTqx5y4jYbDU5cce2dDAmBuK2CgOzgx6Y2vHcynL3vSDq4rkR_7iQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/lAhFqB2fZcOq0Xv4v5FZRSTqx5y4jYbDU5cce2dDAmBuK2CgOzgx6Y2vHcynL3vSDq4rkR_7iQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [{ "text": "LEA: Singer Songwriterin" }] + }, + "shortBylineText": { + "runs": [ + { + "text": "LEA", + "navigationEndpoint": { + "clickTrackingParams": "CKMGENowGCQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@thisislealea", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCLQNVUIJXJ2ejVHuSlBtmGQ", + "canonicalBaseUrl": "/@thisislealea" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "674K subscribers" } + }, + "simpleText": "674K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CKMGENowGCQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@thisislealea" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCLQNVUIJXJ2ejVHuSlBtmGQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CKQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to LEA." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from LEA." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for LEA" + }, + "trackingParams": "CLIGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for LEA" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for LEA" + }, + "trackingParams": "CLEGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for LEA" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for LEA" + }, + "trackingParams": "CLAGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for LEA" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CKgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CKgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CKgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0xRTlZVSUpYSjJlalZIdVNsQnRtR1ESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0xRTlZVSUpYSjJlalZIdVNsQnRtR1ESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0xRTlZVSUpYSjJlalZIdVNsQnRtR1ESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKoGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "LEA" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCLQNVUIJXJ2ejVHuSlBtmGQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKsGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CKkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ0xRTlZVSUpYSjJlalZIdVNsQnRtR1EgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CKQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCLQNVUIJXJ2ejVHuSlBtmGQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CKQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKUGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "LEA" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCLQNVUIJXJ2ejVHuSlBtmGQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKYGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CKMGENowGCQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "LEA", + "navigationEndpoint": { + "clickTrackingParams": "CKMGENowGCQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@thisislealea", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCLQNVUIJXJ2ejVHuSlBtmGQ", + "canonicalBaseUrl": "/@thisislealea" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC1S-Nw10RYc9H0AH6iV_81g", + "title": { "simpleText": "Lena" }, + "navigationEndpoint": { + "clickTrackingParams": "CJMGENowGCUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Lenameyerlandrut", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC1S-Nw10RYc9H0AH6iV_81g", + "canonicalBaseUrl": "/@Lenameyerlandrut" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/GGzSkYic__-Wx8uyECHpfTfDG8uZshjaHvCF5v45GwWbyVxaZ1v6n6XCNxKWYcToqcWZCXy5QA=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/GGzSkYic__-Wx8uyECHpfTfDG8uZshjaHvCF5v45GwWbyVxaZ1v6n6XCNxKWYcToqcWZCXy5QA=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Loyal to myself - new album - out now 💕: \n► https://shop.lena-meyer-landrut.de \n\nKanal abonnieren: http://bit.ly/LenaYouTube\n\nExklusive Inhalte von Lena gibt's hier: \n►The Lenaverse: https://www.thelenaverse.de/\n\nLENA LIVE 2024: \n► https://www.ticketmaster.de/artist/lena-tickets/964725?camefrom=BTA\n\nLena Merch bekommt ihr hier:\n► Website: https://www.thelenashop.com/\n► Instagram: https://www.instagram.com/thelenashop/\n\nImpressum: http://www.universal-music.de/service/rechtliche-hinweise/impressum" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Lena", + "navigationEndpoint": { + "clickTrackingParams": "CJMGENowGCUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Lenameyerlandrut", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC1S-Nw10RYc9H0AH6iV_81g", + "canonicalBaseUrl": "/@Lenameyerlandrut" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "815K subscribers" } + }, + "simpleText": "815K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJMGENowGCUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@Lenameyerlandrut" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC1S-Nw10RYc9H0AH6iV_81g", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CJQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Lena." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Lena." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Lena" + }, + "trackingParams": "CKIGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Lena" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Lena" + }, + "trackingParams": "CKEGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Lena" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Lena" + }, + "trackingParams": "CKAGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Lena" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CJgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CJgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CJgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzFTLU53MTBSWWM5SDBBSDZpVl84MWcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzFTLU53MTBSWWM5SDBBSDZpVl84MWcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzFTLU53MTBSWWM5SDBBSDZpVl84MWcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJoGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Lena" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC1S-Nw10RYc9H0AH6iV_81g" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJsGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CJkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzFTLU53MTBSWWM5SDBBSDZpVl84MWcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CJQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC1S-Nw10RYc9H0AH6iV_81g"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CJQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJUGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Lena" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC1S-Nw10RYc9H0AH6iV_81g" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJYGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CJMGENowGCUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Lena", + "navigationEndpoint": { + "clickTrackingParams": "CJMGENowGCUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Lenameyerlandrut", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC1S-Nw10RYc9H0AH6iV_81g", + "canonicalBaseUrl": "/@Lenameyerlandrut" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCwTpSCdRCT_zpJtNgo1P4PQ", + "title": { "simpleText": "lenkatv" }, + "navigationEndpoint": { + "clickTrackingParams": "CIMGENowGCYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@lenkatv", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCwTpSCdRCT_zpJtNgo1P4PQ", + "canonicalBaseUrl": "/@lenkatv" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_kz89gxfVz-P2lK71j8ubMe-SP58OAPbNTN_rbVEVolbg=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_kz89gxfVz-P2lK71j8ubMe-SP58OAPbNTN_rbVEVolbg=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "lenkatv", + "navigationEndpoint": { + "clickTrackingParams": "CIMGENowGCYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@lenkatv", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCwTpSCdRCT_zpJtNgo1P4PQ", + "canonicalBaseUrl": "/@lenkatv" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "741K subscribers" } + }, + "simpleText": "741K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CIMGENowGCYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@lenkatv" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCwTpSCdRCT_zpJtNgo1P4PQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CIQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to lenkatv." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from lenkatv." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for lenkatv" + }, + "trackingParams": "CJIGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for lenkatv" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for lenkatv" + }, + "trackingParams": "CJEGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for lenkatv" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for lenkatv" + }, + "trackingParams": "CJAGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for lenkatv" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CIgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CIgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CIgGEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3dUcFNDZFJDVF96cEp0TmdvMVA0UFESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI8GEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3dUcFNDZFJDVF96cEp0TmdvMVA0UFESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI4GEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3dUcFNDZFJDVF96cEp0TmdvMVA0UFESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI0GEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIoGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "lenkatv" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCwTpSCdRCT_zpJtNgo1P4PQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIwGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIsGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CIkGENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3dUcFNDZFJDVF96cEp0TmdvMVA0UFEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CIQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCwTpSCdRCT_zpJtNgo1P4PQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CIQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIQGEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIUGEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "lenkatv" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCwTpSCdRCT_zpJtNgo1P4PQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIcGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIYGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CIMGENowGCYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "lenkatv", + "navigationEndpoint": { + "clickTrackingParams": "CIMGENowGCYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@lenkatv", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCwTpSCdRCT_zpJtNgo1P4PQ", + "canonicalBaseUrl": "/@lenkatv" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCTMD22pIImmgGSxddcxXPcg", + "title": { "simpleText": "Leony" }, + "navigationEndpoint": { + "clickTrackingParams": "CPMFENowGCciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@leony", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCTMD22pIImmgGSxddcxXPcg", + "canonicalBaseUrl": "/@leony" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ejz5OKmWMub0qjYjWRrC8awK5VhBjEY0RtDqzBZ-9hILM73Cmm37eCtU-F6cn_XiGrfD-CEynQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ejz5OKmWMub0qjYjWRrC8awK5VhBjEY0RtDqzBZ-9hILM73Cmm37eCtU-F6cn_XiGrfD-CEynQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Leony", + "navigationEndpoint": { + "clickTrackingParams": "CPMFENowGCciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@leony", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCTMD22pIImmgGSxddcxXPcg", + "canonicalBaseUrl": "/@leony" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "182K subscribers" } + }, + "simpleText": "182K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CPMFENowGCciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@leony" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCTMD22pIImmgGSxddcxXPcg", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CPQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Leony." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Leony." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Leony" + }, + "trackingParams": "CIIGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Leony" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Leony" + }, + "trackingParams": "CIEGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Leony" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Leony" + }, + "trackingParams": "CIAGEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Leony" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CPgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CPgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CPgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1RNRDIycElJbW1nR1N4ZGRjeFhQY2cSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1RNRDIycElJbW1nR1N4ZGRjeFhQY2cSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1RNRDIycElJbW1nR1N4ZGRjeFhQY2cSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPoFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Leony" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCTMD22pIImmgGSxddcxXPcg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPsFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CPkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1RNRDIycElJbW1nR1N4ZGRjeFhQY2cgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CPQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCTMD22pIImmgGSxddcxXPcg"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CPQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPUFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Leony" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCTMD22pIImmgGSxddcxXPcg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPYFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CPMFENowGCciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Leony", + "navigationEndpoint": { + "clickTrackingParams": "CPMFENowGCciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@leony", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCTMD22pIImmgGSxddcxXPcg", + "canonicalBaseUrl": "/@leony" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCaz5LK4WvEsga60uaq0ixtA", + "title": { "simpleText": "LINA" }, + "navigationEndpoint": { + "clickTrackingParams": "COMFENowGCgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@lina_official", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCaz5LK4WvEsga60uaq0ixtA", + "canonicalBaseUrl": "/@lina_official" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/CUPvAefhDSOoeZCiJON6Pu3G3yABXadjJqOTSBLqwhAu55nPBwI4dCo5Tf5GsWNhRiH6Iy75rA=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/CUPvAefhDSOoeZCiJON6Pu3G3yABXadjJqOTSBLqwhAu55nPBwI4dCo5Tf5GsWNhRiH6Iy75rA=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Meine neue neues Album \"24/1\" Out now! ☀️\n\nLina Larissa Strahl ist Singer-Songwriterin und Schauspielerin (u.a. Bibi und Tina, The Lodge, Alle für Ella). Ihr gesangliches Talent begeistert seit Anbeginn ihre Fans mit Alben und Songs wie “Egoist”, “Egal”, “Hype”. Die besondere Bindung die über die Jahre zwischen Sängerin und Fans entstanden ist, zeigt sich besonders bei LINAs Konzerten. Jedes Mal entsteht vom ersten Ton an eine Welle der Begeisterung, die alle trägt. Pure Euphorie! Alles gut! Alles rosa!\n\nFolgt mir auf: \n💎 INSTAGRAM: https://www.instagram.com/_lina_official_\n💎 TIKTOK: https://www.tiktok.com/@_lina_official_tiktok\n💎 FACEBOOK: https://www.facebook.com/lina.offiziell \n💎 SNAPCHAT: @okitsreallyme" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "LINA", + "navigationEndpoint": { + "clickTrackingParams": "COMFENowGCgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@lina_official", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCaz5LK4WvEsga60uaq0ixtA", + "canonicalBaseUrl": "/@lina_official" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "427K subscribers" } + }, + "simpleText": "427K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "COMFENowGCgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@lina_official" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCaz5LK4WvEsga60uaq0ixtA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "COQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to LINA." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from LINA." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for LINA" + }, + "trackingParams": "CPIFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for LINA" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for LINA" + }, + "trackingParams": "CPEFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for LINA" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for LINA" + }, + "trackingParams": "CPAFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for LINA" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "COgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "COgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "COgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2F6NUxLNFd2RXNnYTYwdWFxMGl4dEESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2F6NUxLNFd2RXNnYTYwdWFxMGl4dEESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2F6NUxLNFd2RXNnYTYwdWFxMGl4dEESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COoFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "LINA" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCaz5LK4WvEsga60uaq0ixtA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COsFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "COkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ2F6NUxLNFd2RXNnYTYwdWFxMGl4dEEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "COQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCaz5LK4WvEsga60uaq0ixtA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "COQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COUFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "LINA" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCaz5LK4WvEsga60uaq0ixtA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COYFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "COMFENowGCgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "LINA", + "navigationEndpoint": { + "clickTrackingParams": "COMFENowGCgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@lina_official", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCaz5LK4WvEsga60uaq0ixtA", + "canonicalBaseUrl": "/@lina_official" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "title": { "simpleText": "Linus Tech Tips" }, + "navigationEndpoint": { + "clickTrackingParams": "CNMFENowGCkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/Vy6KL7EM_apxPSxF0pPy5w_c87YDTOlBQo3MADDF0Wl51kwxmt9wmRotnt2xQXwlrcyO0Xe56w=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Linus Tech Tips is a passionate team of \"professionally curious\" experts in consumer technology and video production who aim to educate and entertain.\n\nSponsorship Inquiries: sales@linusmediagroup.com\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Linus Tech Tips", + "navigationEndpoint": { + "clickTrackingParams": "CNMFENowGCkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "16.1 million subscribers" + } + }, + "simpleText": "16.1M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CNMFENowGCkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { "simpleText": "@LinusTechTips" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CNQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Linus Tech Tips." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Linus Tech Tips." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Linus Tech Tips" + }, + "trackingParams": "COIFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Linus Tech Tips" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Linus Tech Tips" + }, + "trackingParams": "COEFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Linus Tech Tips" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Linus Tech Tips" + }, + "trackingParams": "COAFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Linus Tech Tips" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CNgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CNgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CNgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNoFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Linus Tech Tips" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCXuqSBlHAE6Xw-yeJA0Tunw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNsFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CNkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CNQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCXuqSBlHAE6Xw-yeJA0Tunw"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CNQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNUFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Linus Tech Tips" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCXuqSBlHAE6Xw-yeJA0Tunw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNYFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CNMFENowGCkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Linus Tech Tips", + "navigationEndpoint": { + "clickTrackingParams": "CNMFENowGCkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LinusTechTips", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCXuqSBlHAE6Xw-yeJA0Tunw", + "canonicalBaseUrl": "/@LinusTechTips" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCIvqWqjC4aLvp7zI8hzARrA", + "title": { "simpleText": "Little Mix" }, + "navigationEndpoint": { + "clickTrackingParams": "CMMFENowGCoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LittleMix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCIvqWqjC4aLvp7zI8hzARrA", + "canonicalBaseUrl": "/@LittleMix" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/1xIQVcPpPQG-MU_tkfA9FU8jlWf5KG1RxJKm3YGAm0g3MTlG7NsMgNk4GTd1aO2-NZPLoo7PRw=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/1xIQVcPpPQG-MU_tkfA9FU8jlWf5KG1RxJKm3YGAm0g3MTlG7NsMgNk4GTd1aO2-NZPLoo7PRw=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { "text": "Our new album Between Us is out now 🤍\n" } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Little Mix", + "navigationEndpoint": { + "clickTrackingParams": "CMMFENowGCoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LittleMix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCIvqWqjC4aLvp7zI8hzARrA", + "canonicalBaseUrl": "/@LittleMix" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "16.4 million subscribers" + } + }, + "simpleText": "16.4M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CMMFENowGCoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@LittleMix" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCIvqWqjC4aLvp7zI8hzARrA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CMQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Little Mix." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Little Mix." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Little Mix" + }, + "trackingParams": "CNIFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Little Mix" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Little Mix" + }, + "trackingParams": "CNEFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Little Mix" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Little Mix" + }, + "trackingParams": "CNAFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Little Mix" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CMgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CMgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CMgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0l2cVdxakM0YUx2cDd6SThoekFSckESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0l2cVdxakM0YUx2cDd6SThoekFSckESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0l2cVdxakM0YUx2cDd6SThoekFSckESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMoFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Little Mix" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCIvqWqjC4aLvp7zI8hzARrA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMsFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CMkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ0l2cVdxakM0YUx2cDd6SThoekFSckEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CMQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCIvqWqjC4aLvp7zI8hzARrA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CMQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMUFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Little Mix" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCIvqWqjC4aLvp7zI8hzARrA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMYFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CMMFENowGCoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Little Mix", + "navigationEndpoint": { + "clickTrackingParams": "CMMFENowGCoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LittleMix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCIvqWqjC4aLvp7zI8hzARrA", + "canonicalBaseUrl": "/@LittleMix" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCSJ4gkVC6NrvII8umztf0Ow", + "title": { "simpleText": "Lofi Girl" }, + "navigationEndpoint": { + "clickTrackingParams": "CLMFENowGCsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LofiGirl", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCSJ4gkVC6NrvII8umztf0Ow", + "canonicalBaseUrl": "/@LofiGirl" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/3vLpU5nkaTB3w9YYB_FD6PWbqJX3TZsEr4uWsBcOUSotELT0-6L5KPeoc-FEJ977HhA1p8wRvKo=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/3vLpU5nkaTB3w9YYB_FD6PWbqJX3TZsEr4uWsBcOUSotELT0-6L5KPeoc-FEJ977HhA1p8wRvKo=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Connecting people through music 🌎\n\n🎧 | Listen on Spotify, Apple music and more\n→ https://fanlink.tv/lofigirl-music\n\n💬 | Join the Lofi Girl community \n→ https://bit.ly/lofigirl-discord\n→ https://bit.ly/lofigirl-reddit\n\n🌐 | Lofi Girl on all social media\n→ https://bit.ly/lofigirl-sociaI\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Lofi Girl", + "navigationEndpoint": { + "clickTrackingParams": "CLMFENowGCsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LofiGirl", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCSJ4gkVC6NrvII8umztf0Ow", + "canonicalBaseUrl": "/@LofiGirl" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "14.7 million subscribers" + } + }, + "simpleText": "14.7M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CLMFENowGCsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { "simpleText": "@LofiGirl" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCSJ4gkVC6NrvII8umztf0Ow", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CLQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Lofi Girl." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Lofi Girl." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Lofi Girl" + }, + "trackingParams": "CMIFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Lofi Girl" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Lofi Girl" + }, + "trackingParams": "CMEFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Lofi Girl" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Lofi Girl" + }, + "trackingParams": "CMAFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Lofi Girl" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CLgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CLgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CLgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1NKNGdrVkM2TnJ2SUk4dW16dGYwT3cSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1NKNGdrVkM2TnJ2SUk4dW16dGYwT3cSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1NKNGdrVkM2TnJ2SUk4dW16dGYwT3cSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLoFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Lofi Girl" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCSJ4gkVC6NrvII8umztf0Ow" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLsFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CLkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1NKNGdrVkM2TnJ2SUk4dW16dGYwT3cgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CLQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCSJ4gkVC6NrvII8umztf0Ow"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CLQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLUFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Lofi Girl" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCSJ4gkVC6NrvII8umztf0Ow" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLYFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CLMFENowGCsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Lofi Girl", + "navigationEndpoint": { + "clickTrackingParams": "CLMFENowGCsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LofiGirl", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCSJ4gkVC6NrvII8umztf0Ow", + "canonicalBaseUrl": "/@LofiGirl" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCv011hIm-QqpgDGt32xrIRA", + "title": { "simpleText": "Maggie Lindemann" }, + "navigationEndpoint": { + "clickTrackingParams": "CKMFENowGCwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@maggielindemann", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCv011hIm-QqpgDGt32xrIRA", + "canonicalBaseUrl": "/@maggielindemann" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/8_MhK1SfsgjtlkybondRLggXbimGOFg_5kxkfDm-Q201hl1fl48QPHuhb78bBKYLQEChdbsf=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/8_MhK1SfsgjtlkybondRLggXbimGOFg_5kxkfDm-Q201hl1fl48QPHuhb78bBKYLQEChdbsf=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "HEADSPLIT as a title came to Maggie late in the process. “On the one hand, and in the eyes of so many people out there, I'm so happy and everything's perfect,” she says. “And then there's like this other part of me that's self-sabotaging, saying, ‘Everything's not perfect and you ruin everything and you're always wrong.’ But then again, getting older and being actually proud of myself has definitely helped me soften up a little bit. So my head is always split like that, so that concept lent itself really neatly to what I was trying to do with the music itself.”\n\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Maggie Lindemann", + "navigationEndpoint": { + "clickTrackingParams": "CKMFENowGCwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@maggielindemann", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCv011hIm-QqpgDGt32xrIRA", + "canonicalBaseUrl": "/@maggielindemann" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "2.36 million subscribers" + } + }, + "simpleText": "2.36M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CKMFENowGCwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@maggielindemann" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCv011hIm-QqpgDGt32xrIRA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CKQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Maggie Lindemann." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Maggie Lindemann." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Maggie Lindemann" + }, + "trackingParams": "CLIFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Maggie Lindemann" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Maggie Lindemann" + }, + "trackingParams": "CLEFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Maggie Lindemann" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Maggie Lindemann" + }, + "trackingParams": "CLAFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Maggie Lindemann" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CKgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CKgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CKgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3YwMTFoSW0tUXFwZ0RHdDMyeHJJUkESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3YwMTFoSW0tUXFwZ0RHdDMyeHJJUkESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3YwMTFoSW0tUXFwZ0RHdDMyeHJJUkESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKoFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Maggie Lindemann" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCv011hIm-QqpgDGt32xrIRA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKsFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CKkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3YwMTFoSW0tUXFwZ0RHdDMyeHJJUkEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CKQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCv011hIm-QqpgDGt32xrIRA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CKQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKUFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Maggie Lindemann" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCv011hIm-QqpgDGt32xrIRA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKYFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CKMFENowGCwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Maggie Lindemann", + "navigationEndpoint": { + "clickTrackingParams": "CKMFENowGCwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@maggielindemann", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCv011hIm-QqpgDGt32xrIRA", + "canonicalBaseUrl": "/@maggielindemann" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCvEB_-xM91PBJURpVBvVXrA", + "title": { "simpleText": "Marina Marx" }, + "navigationEndpoint": { + "clickTrackingParams": "CJMFENowGC0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@marina_marx", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCvEB_-xM91PBJURpVBvVXrA", + "canonicalBaseUrl": "/@marina_marx" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/hjQvYoBGTHnzQaO_JTRkzUvxd61jyDYzLragjUyH84dYQiUIKxX7_RYTkzEW2tMInFoiI6TAsA=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/hjQvYoBGTHnzQaO_JTRkzUvxd61jyDYzLragjUyH84dYQiUIKxX7_RYTkzEW2tMInFoiI6TAsA=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Offizieller Kanal von MARINA MARX\n______________________________________________________________________\n\nVertreten durch: \n\nManagement & Booking:\nAME.Media GmbH\nSchloss Zweibrüggen \n52531 Übach-Palenberg \n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Marina Marx", + "navigationEndpoint": { + "clickTrackingParams": "CJMFENowGC0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@marina_marx", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCvEB_-xM91PBJURpVBvVXrA", + "canonicalBaseUrl": "/@marina_marx" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "14.3K subscribers" } + }, + "simpleText": "14.3K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJMFENowGC0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@marina_marx" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCvEB_-xM91PBJURpVBvVXrA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CJQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Marina Marx." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Marina Marx." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Marina Marx" + }, + "trackingParams": "CKIFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Marina Marx" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Marina Marx" + }, + "trackingParams": "CKEFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Marina Marx" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Marina Marx" + }, + "trackingParams": "CKAFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Marina Marx" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CJgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CJgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CJgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3ZFQl8teE05MVBCSlVScFZCdlZYckESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3ZFQl8teE05MVBCSlVScFZCdlZYckESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3ZFQl8teE05MVBCSlVScFZCdlZYckESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJoFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Marina Marx" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCvEB_-xM91PBJURpVBvVXrA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJsFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CJkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3ZFQl8teE05MVBCSlVScFZCdlZYckEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CJQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCvEB_-xM91PBJURpVBvVXrA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CJQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJUFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Marina Marx" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCvEB_-xM91PBJURpVBvVXrA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJYFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CJMFENowGC0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Marina Marx", + "navigationEndpoint": { + "clickTrackingParams": "CJMFENowGC0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@marina_marx", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCvEB_-xM91PBJURpVBvVXrA", + "canonicalBaseUrl": "/@marina_marx" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCLyAYe-pk6HGmfyT94ouBcA", + "title": { "simpleText": "Mark Forster" }, + "navigationEndpoint": { + "clickTrackingParams": "CIMFENowGC4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@MarkForsterOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCLyAYe-pk6HGmfyT94ouBcA", + "canonicalBaseUrl": "/@MarkForsterOfficial" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/JN2rIU-am-ll0hZ-rmpt9G-nKsxycb8RBJoteE0IhgYCc92e3sguzEx7A7SLcyaCwxXvEbmdmAs=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/JN2rIU-am-ll0hZ-rmpt9G-nKsxycb8RBJoteE0IhgYCc92e3sguzEx7A7SLcyaCwxXvEbmdmAs=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Willkommen auf dem offiziellen YouTube Kanal von Mark Forster!\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Mark Forster", + "navigationEndpoint": { + "clickTrackingParams": "CIMFENowGC4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@MarkForsterOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCLyAYe-pk6HGmfyT94ouBcA", + "canonicalBaseUrl": "/@MarkForsterOfficial" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "876K subscribers" } + }, + "simpleText": "876K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CIMFENowGC4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@MarkForsterOfficial" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCLyAYe-pk6HGmfyT94ouBcA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CIQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Mark Forster." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Mark Forster." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Mark Forster" + }, + "trackingParams": "CJIFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Mark Forster" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Mark Forster" + }, + "trackingParams": "CJEFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Mark Forster" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Mark Forster" + }, + "trackingParams": "CJAFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Mark Forster" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CIgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CIgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CIgFEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0x5QVllLXBrNkhHbWZ5VDk0b3VCY0ESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI8FEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0x5QVllLXBrNkhHbWZ5VDk0b3VCY0ESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI4FEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0x5QVllLXBrNkhHbWZ5VDk0b3VCY0ESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI0FEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIoFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Mark Forster" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCLyAYe-pk6HGmfyT94ouBcA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIwFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIsFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CIkFENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ0x5QVllLXBrNkhHbWZ5VDk0b3VCY0EgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CIQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCLyAYe-pk6HGmfyT94ouBcA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CIQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIQFEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIUFEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Mark Forster" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCLyAYe-pk6HGmfyT94ouBcA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIcFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIYFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CIMFENowGC4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Mark Forster", + "navigationEndpoint": { + "clickTrackingParams": "CIMFENowGC4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@MarkForsterOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCLyAYe-pk6HGmfyT94ouBcA", + "canonicalBaseUrl": "/@MarkForsterOfficial" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCEdvpU2pFRCVqU6yIPyTpMQ", + "title": { "simpleText": "Marshmello" }, + "navigationEndpoint": { + "clickTrackingParams": "CPMEENowGC8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@marshmello", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCEdvpU2pFRCVqU6yIPyTpMQ", + "canonicalBaseUrl": "/@marshmello" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/yJlMNr2TRPPNCkijsPlW_urjXKEXg44NBhZhz5j3jy4OCJTg5WPhnEQKamrd6bNTqh48-_rtZ7E=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/yJlMNr2TRPPNCkijsPlW_urjXKEXg44NBhZhz5j3jy4OCJTg5WPhnEQKamrd6bNTqh48-_rtZ7E=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { "text": "Marshmello's Official YouTube Channel" } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Marshmello", + "navigationEndpoint": { + "clickTrackingParams": "CPMEENowGC8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@marshmello", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCEdvpU2pFRCVqU6yIPyTpMQ", + "canonicalBaseUrl": "/@marshmello" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "57.6 million subscribers" + } + }, + "simpleText": "57.6M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CPMEENowGC8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@marshmello" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCEdvpU2pFRCVqU6yIPyTpMQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CPQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Marshmello." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Marshmello." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Marshmello" + }, + "trackingParams": "CIIFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Marshmello" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Marshmello" + }, + "trackingParams": "CIEFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Marshmello" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Marshmello" + }, + "trackingParams": "CIAFEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Marshmello" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CPgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CPgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CPgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0VkdnBVMnBGUkNWcVU2eUlQeVRwTVESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0VkdnBVMnBGUkNWcVU2eUlQeVRwTVESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0VkdnBVMnBGUkNWcVU2eUlQeVRwTVESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPoEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Marshmello" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCEdvpU2pFRCVqU6yIPyTpMQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPsEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CPkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ0VkdnBVMnBGUkNWcVU2eUlQeVRwTVEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CPQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCEdvpU2pFRCVqU6yIPyTpMQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CPQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPUEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Marshmello" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCEdvpU2pFRCVqU6yIPyTpMQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPYEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CPMEENowGC8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Marshmello", + "navigationEndpoint": { + "clickTrackingParams": "CPMEENowGC8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@marshmello", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCEdvpU2pFRCVqU6yIPyTpMQ", + "canonicalBaseUrl": "/@marshmello" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCZygMGbIE8JNE1_qqtmIXhA", + "title": { "simpleText": "Max Giesinger" }, + "navigationEndpoint": { + "clickTrackingParams": "COMEENowGDAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@MaxGiesingerOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCZygMGbIE8JNE1_qqtmIXhA", + "canonicalBaseUrl": "/@MaxGiesingerOfficial" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/yvEiUbbyIiK22ieCfmxo3u8LTFe5WTQTKfSnU4RYXjMzSQ0BgRSscv_dolgezovOogo7EN8m=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/yvEiUbbyIiK22ieCfmxo3u8LTFe5WTQTKfSnU4RYXjMzSQ0BgRSscv_dolgezovOogo7EN8m=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Das ist der offizielle YouTube Kanal von Max Giesinger.\n\nEs ist gute acht Jahre her, als Max Giesinger sich als „Der Junge, der rennt“ in das Gedächtnis der Musikwelt gebrannt hat. Der Albumtitel ist immer noch programmatisch, der Mann ist deutlich mehr unterwegs als zu Hause – zu Fuß auf dem Weg durch Hamburg, allein auf fremden Kontinenten u.a. für das TV Format „Sing meinen Song - das Tauschkonzert“ und mit seinen Jungs auf großen Bühnen auf Tour. Über 800 Konzerte hat Max im vergangenen Jahrzehnt gespielt, hat Deutschland und die Welt in all seinen Facetten kennengelernt. \n \nDie neuen Songs „Menschen“ und „Flugangst“ sind der Auftakt für ein neues Album, das im Mai 2025 kommen wird. Mit frischer Musik, die an einen Roadtrip erinnert. Ein Trip, der nicht geradlinig ist, ungeplant, mit Zwischenstopps. Mit von Max ungehörten Sounds und Texten, die tief gehen. Max ist der Reiseführer dieses Trips. Begleite ihn unbedingt: hier, auf Tour und auf seinen Socials!\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Max Giesinger", + "navigationEndpoint": { + "clickTrackingParams": "COMEENowGDAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@MaxGiesingerOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCZygMGbIE8JNE1_qqtmIXhA", + "canonicalBaseUrl": "/@MaxGiesingerOfficial" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "351K subscribers" } + }, + "simpleText": "351K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "COMEENowGDAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@MaxGiesingerOfficial" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCZygMGbIE8JNE1_qqtmIXhA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "COQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Max Giesinger." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Max Giesinger." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Max Giesinger" + }, + "trackingParams": "CPIEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Max Giesinger" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Max Giesinger" + }, + "trackingParams": "CPEEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Max Giesinger" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Max Giesinger" + }, + "trackingParams": "CPAEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Max Giesinger" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "COgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "COgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "COgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1p5Z01HYklFOEpORTFfcXF0bUlYaEESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1p5Z01HYklFOEpORTFfcXF0bUlYaEESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1p5Z01HYklFOEpORTFfcXF0bUlYaEESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COoEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Max Giesinger" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCZygMGbIE8JNE1_qqtmIXhA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COsEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "COkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1p5Z01HYklFOEpORTFfcXF0bUlYaEEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "COQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCZygMGbIE8JNE1_qqtmIXhA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "COQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COUEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Max Giesinger" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCZygMGbIE8JNE1_qqtmIXhA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COYEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "COMEENowGDAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Max Giesinger", + "navigationEndpoint": { + "clickTrackingParams": "COMEENowGDAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@MaxGiesingerOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCZygMGbIE8JNE1_qqtmIXhA", + "canonicalBaseUrl": "/@MaxGiesingerOfficial" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UChsDCPpjdh6L7rNr1b7s1BQ", + "title": { "simpleText": "MoTrip" }, + "navigationEndpoint": { + "clickTrackingParams": "CNMEENowGDEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@OfficialMoTripTV", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UChsDCPpjdh6L7rNr1b7s1BQ", + "canonicalBaseUrl": "/@OfficialMoTripTV" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_mJeEtvS5npnE7GWsxbZjvWm6OiLV22sVnJIJrOcjzdGQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_mJeEtvS5npnE7GWsxbZjvWm6OiLV22sVnJIJrOcjzdGQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Offizieller Kanal von MoTrip\n\nMehr zu MoTrip\n► Instagram: https://www.instagram.com/motrip/\n► Facebook: https://www.facebook.com/OfficialMoTrip/\n► Twitter: https://twitter.com/OfficialMoTrip\n► Website: https://www.motrip.de/" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "MoTrip", + "navigationEndpoint": { + "clickTrackingParams": "CNMEENowGDEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@OfficialMoTripTV", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UChsDCPpjdh6L7rNr1b7s1BQ", + "canonicalBaseUrl": "/@OfficialMoTripTV" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "115K subscribers" } + }, + "simpleText": "115K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CNMEENowGDEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@OfficialMoTripTV" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UChsDCPpjdh6L7rNr1b7s1BQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CNQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to MoTrip." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from MoTrip." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for MoTrip" + }, + "trackingParams": "COIEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for MoTrip" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for MoTrip" + }, + "trackingParams": "COEEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for MoTrip" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for MoTrip" + }, + "trackingParams": "COAEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for MoTrip" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CNgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CNgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CNgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2hzRENQcGpkaDZMN3JOcjFiN3MxQlESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2hzRENQcGpkaDZMN3JOcjFiN3MxQlESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2hzRENQcGpkaDZMN3JOcjFiN3MxQlESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNoEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "MoTrip" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UChsDCPpjdh6L7rNr1b7s1BQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNsEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CNkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ2hzRENQcGpkaDZMN3JOcjFiN3MxQlEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CNQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UChsDCPpjdh6L7rNr1b7s1BQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CNQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNUEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "MoTrip" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UChsDCPpjdh6L7rNr1b7s1BQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNYEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CNMEENowGDEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "MoTrip", + "navigationEndpoint": { + "clickTrackingParams": "CNMEENowGDEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@OfficialMoTripTV", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UChsDCPpjdh6L7rNr1b7s1BQ", + "canonicalBaseUrl": "/@OfficialMoTripTV" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA", + "title": { "simpleText": "MrBeast" }, + "navigationEndpoint": { + "clickTrackingParams": "CMMEENowGDIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@MrBeast", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCX6OQ3DkcsbYNE6H8uQQuVA", + "canonicalBaseUrl": "/@MrBeast" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/fxGKYucJAVme-Yz4fsdCroCFCrANWqw0ql4GYuvx8Uq4l_euNJHgE-w9MTkLQA805vWCi-kE0g=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/fxGKYucJAVme-Yz4fsdCroCFCrANWqw0ql4GYuvx8Uq4l_euNJHgE-w9MTkLQA805vWCi-kE0g=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Go Watch Beast Games! https://unfur.ly/BeastGames\nSUBSCRIBE FOR A COOKIE!\n\nAccomplishments:\n- Raised $20,000,000 To Plant 20,000,000 Trees\n- Removed 30,000,000 pounds of trash from the ocean\n- Helped 2,000 people walk again\n- Helped 1,000 blind people see\n- Helped 1,000 deaf people hear\n- Built wells in Africa\n- Built and gave away 100 houses\n- Adopted every dog in a shelter (twice)\n- Given millions to charity\n- Started my own snack company Feastables\n- Started my own software company Viewstats\n- Started Lunchly, a tasty, better-for-you lunch option\n- Gave away a private island (twice)\n- Gave away 1 million meals\n- Gave away a chocolate factory\n- I counted to 100k\n- Ran a marathon in the world's largest shoes\n- Survived 50 hours in Antarctica\n- Recreated Squid Game in real life\n- Created the largest competition show with 1000 people (Beast Games)\n- Gave $5,000,000 to one person\n- Passed T-Series to become most subscribed YouTube channel 🥹\nyou get it, I appreciate all of you so much :)\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "MrBeast", + "navigationEndpoint": { + "clickTrackingParams": "CMMEENowGDIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@MrBeast", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCX6OQ3DkcsbYNE6H8uQQuVA", + "canonicalBaseUrl": "/@MrBeast" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "338 million subscribers" + } + }, + "simpleText": "338M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CMMEENowGDIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { "simpleText": "@MrBeast" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CMQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to MrBeast." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from MrBeast." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for MrBeast" + }, + "trackingParams": "CNIEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for MrBeast" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for MrBeast" + }, + "trackingParams": "CNEEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for MrBeast" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for MrBeast" + }, + "trackingParams": "CNAEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for MrBeast" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CMgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CMgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CMgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1g2T1EzRGtjc2JZTkU2SDh1UVF1VkESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1g2T1EzRGtjc2JZTkU2SDh1UVF1VkESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1g2T1EzRGtjc2JZTkU2SDh1UVF1VkESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMoEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "MrBeast" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCX6OQ3DkcsbYNE6H8uQQuVA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMsEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CMkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1g2T1EzRGtjc2JZTkU2SDh1UVF1VkEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CMQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCX6OQ3DkcsbYNE6H8uQQuVA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CMQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMUEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "MrBeast" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCX6OQ3DkcsbYNE6H8uQQuVA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMYEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CMMEENowGDIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "MrBeast", + "navigationEndpoint": { + "clickTrackingParams": "CMMEENowGDIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@MrBeast", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCX6OQ3DkcsbYNE6H8uQQuVA", + "canonicalBaseUrl": "/@MrBeast" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "title": { "simpleText": "Mrwhosetheboss" }, + "navigationEndpoint": { + "clickTrackingParams": "CLMEENowGDMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Mrwhosetheboss", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "canonicalBaseUrl": "/@Mrwhosetheboss" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/enyLBm1Sy8mVRXJJLWHT2z64nqxJGt2g61A9xnxpUjO2YAUovHaY_JT3rnAg0j6Qij9iaHQlAg=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/enyLBm1Sy8mVRXJJLWHT2z64nqxJGt2g61A9xnxpUjO2YAUovHaY_JT3rnAg0j6Qij9iaHQlAg=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Let's become the Greatest Tech Community on the Planet 🌍\n\nI'm Arun Maini, I'm a 28 year old Economics graduate whose life's passion is Technology, and I'm on a mission to make the most FUN and USEFUL Tech videos on the Planet! 🙏\n\n\n\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Mrwhosetheboss", + "navigationEndpoint": { + "clickTrackingParams": "CLMEENowGDMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Mrwhosetheboss", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "canonicalBaseUrl": "/@Mrwhosetheboss" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "20.3 million subscribers" + } + }, + "simpleText": "20.3M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CLMEENowGDMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { + "simpleText": "@Mrwhosetheboss" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CLQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Mrwhosetheboss." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Mrwhosetheboss." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Mrwhosetheboss" + }, + "trackingParams": "CMIEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Mrwhosetheboss" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Mrwhosetheboss" + }, + "trackingParams": "CMEEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Mrwhosetheboss" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Mrwhosetheboss" + }, + "trackingParams": "CMAEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Mrwhosetheboss" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CLgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CLgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CLgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ01pSlJBd0ROU056dVllTjJ1V2EwcEESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ01pSlJBd0ROU056dVllTjJ1V2EwcEESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ01pSlJBd0ROU056dVllTjJ1V2EwcEESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLoEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Mrwhosetheboss" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCMiJRAwDNSNzuYeN2uWa0pA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLsEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CLkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ01pSlJBd0ROU056dVllTjJ1V2EwcEEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CLQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCMiJRAwDNSNzuYeN2uWa0pA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CLQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLUEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Mrwhosetheboss" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCMiJRAwDNSNzuYeN2uWa0pA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLYEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CLMEENowGDMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Mrwhosetheboss", + "navigationEndpoint": { + "clickTrackingParams": "CLMEENowGDMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Mrwhosetheboss", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCMiJRAwDNSNzuYeN2uWa0pA", + "canonicalBaseUrl": "/@Mrwhosetheboss" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCRrLWhcrm7jrOMiuU0HmNRA", + "title": { "simpleText": "Namika" }, + "navigationEndpoint": { + "clickTrackingParams": "CKMEENowGDQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Namikamusik", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCRrLWhcrm7jrOMiuU0HmNRA", + "canonicalBaseUrl": "/@Namikamusik" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/klATX6VRYvvYsLAO0s5D89FqLpVMwbQpNj-LVKjOnNfUlGB92c79DDx3G2Qh7V-Aj3zv1vVI_g=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/klATX6VRYvvYsLAO0s5D89FqLpVMwbQpNj-LVKjOnNfUlGB92c79DDx3G2Qh7V-Aj3zv1vVI_g=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Namika steht für einen ganz eigenen Stil, der seinesgleichen sucht. Nach ihrem 2015 erschienen Debüt „Nador“ mit der Nummer 1 Single „Lieblingsmensch“ sowie ihrem Nachfolger-Album „Que Walou“, welches ebenfalls zahlreiche Preise erhielt und Platz 1 der Charts erreichte, erscheint 2023 mit „Wie geht’s dir?“ ihr neues Album. Entstanden sind die Songs in den letzten drei Jahren. Nicht nur eine intensive Zeit für Namika sondern auch eine weltweite Pandemie, die das Leben aller Menschen gehörig durcheinanderbringt. „Ich bin in dieser Zeit oft von Außenstehenden gefragt worden, wie es mir geht und ich mich öfters dabei ertappt habe, wie ich einfach nur ‚Alles gut‘ entgegnet habe“, erinnert sich Namika „Und so wurde mir erst klar, dass die Artund Weise wie wir diese Frage im Alltag verwenden, nicht mal annähernd ihrer Tiefgründigkeit gerecht wird\". Auf „Wie geht’s dir?“ hat NAMIKA genau das getan, sich auf die Suche nach Antworten gemacht – und diese fallen ganz unterschiedlich aus.\n\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Namika", + "navigationEndpoint": { + "clickTrackingParams": "CKMEENowGDQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Namikamusik", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCRrLWhcrm7jrOMiuU0HmNRA", + "canonicalBaseUrl": "/@Namikamusik" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "772K subscribers" } + }, + "simpleText": "772K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CKMEENowGDQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@Namikamusik" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCRrLWhcrm7jrOMiuU0HmNRA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CKQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Namika." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Namika." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Namika" + }, + "trackingParams": "CLIEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Namika" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Namika" + }, + "trackingParams": "CLEEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Namika" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Namika" + }, + "trackingParams": "CLAEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Namika" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CKgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CKgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CKgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1JyTFdoY3JtN2pyT01pdVUwSG1OUkESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1JyTFdoY3JtN2pyT01pdVUwSG1OUkESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1JyTFdoY3JtN2pyT01pdVUwSG1OUkESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKoEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Namika" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCRrLWhcrm7jrOMiuU0HmNRA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKsEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CKkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1JyTFdoY3JtN2pyT01pdVUwSG1OUkEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CKQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCRrLWhcrm7jrOMiuU0HmNRA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CKQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKUEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Namika" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCRrLWhcrm7jrOMiuU0HmNRA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKYEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CKMEENowGDQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Namika", + "navigationEndpoint": { + "clickTrackingParams": "CKMEENowGDQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Namikamusik", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCRrLWhcrm7jrOMiuU0HmNRA", + "canonicalBaseUrl": "/@Namikamusik" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "title": { "simpleText": "Netflix" }, + "navigationEndpoint": { + "clickTrackingParams": "CJMEENowGDUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/c5D1xS3wEG2XDLhBaW_4VCJ081qcT5rxo7X3DO-0zabsBntw_D58KwiTXThWZaizcYNmpSMhRQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "COBRA KAI NEVER DIES\n\n\n\nNetflix is one of the world's leading entertainment services, with 283 million paid memberships in over 190 countries enjoying TV series, films and games across a wide variety of genres and languages. Members can play, pause and resume watching as much as they want, anytime, anywhere, and can change their plans at any time.\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Netflix", + "navigationEndpoint": { + "clickTrackingParams": "CJMEENowGDUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "29.5 million subscribers" + } + }, + "simpleText": "29.5M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CJMEENowGDUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { "simpleText": "@Netflix" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CJQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Netflix." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Netflix." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Netflix" + }, + "trackingParams": "CKIEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Netflix" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Netflix" + }, + "trackingParams": "CKEEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Netflix" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Netflix" + }, + "trackingParams": "CKAEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Netflix" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CJgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CJgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CJgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1dPQTFaR3l3TGJxbWlneEU0UWx2dXcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1dPQTFaR3l3TGJxbWlneEU0UWx2dXcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1dPQTFaR3l3TGJxbWlneEU0UWx2dXcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJoEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Netflix" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCWOA1ZGywLbqmigxE4Qlvuw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJsEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CJkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1dPQTFaR3l3TGJxbWlneEU0UWx2dXcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CJQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCWOA1ZGywLbqmigxE4Qlvuw"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CJQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJUEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Netflix" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCWOA1ZGywLbqmigxE4Qlvuw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJYEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CJMEENowGDUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Netflix", + "navigationEndpoint": { + "clickTrackingParams": "CJMEENowGDUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Netflix", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWOA1ZGywLbqmigxE4Qlvuw", + "canonicalBaseUrl": "/@Netflix" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC2y0t3AAHuZxb8IgNm-A-yA", + "title": { "simpleText": "Nina Chuba" }, + "navigationEndpoint": { + "clickTrackingParams": "CIMEENowGDYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@NinaChuba", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2y0t3AAHuZxb8IgNm-A-yA", + "canonicalBaseUrl": "/@NinaChuba" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/IHPUf1xe9NV2R0TArNaIxCtmeTJz4MZ1D_c9FrohPe2I_NsEl0_e3CgkQzoA3-1sX0bBqFlpEQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/IHPUf1xe9NV2R0TArNaIxCtmeTJz4MZ1D_c9FrohPe2I_NsEl0_e3CgkQzoA3-1sX0bBqFlpEQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Official Nina Chuba YouTube Channel 🖤\n\n\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Nina Chuba", + "navigationEndpoint": { + "clickTrackingParams": "CIMEENowGDYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@NinaChuba", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2y0t3AAHuZxb8IgNm-A-yA", + "canonicalBaseUrl": "/@NinaChuba" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "297K subscribers" } + }, + "simpleText": "297K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CIMEENowGDYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@NinaChuba" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC2y0t3AAHuZxb8IgNm-A-yA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CIQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Nina Chuba." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Nina Chuba." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Nina Chuba" + }, + "trackingParams": "CJIEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Nina Chuba" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Nina Chuba" + }, + "trackingParams": "CJEEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Nina Chuba" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Nina Chuba" + }, + "trackingParams": "CJAEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Nina Chuba" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CIgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CIgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CIgEEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzJ5MHQzQUFIdVp4YjhJZ05tLUEteUESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI8EEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzJ5MHQzQUFIdVp4YjhJZ05tLUEteUESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI4EEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzJ5MHQzQUFIdVp4YjhJZ05tLUEteUESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI0EEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIoEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Nina Chuba" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC2y0t3AAHuZxb8IgNm-A-yA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIwEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIsEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CIkEENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzJ5MHQzQUFIdVp4YjhJZ05tLUEteUEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CIQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC2y0t3AAHuZxb8IgNm-A-yA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CIQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIQEEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIUEEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Nina Chuba" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC2y0t3AAHuZxb8IgNm-A-yA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIcEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIYEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CIMEENowGDYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Nina Chuba", + "navigationEndpoint": { + "clickTrackingParams": "CIMEENowGDYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@NinaChuba", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2y0t3AAHuZxb8IgNm-A-yA", + "canonicalBaseUrl": "/@NinaChuba" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCi4EDAgjULwwNBHOg1aaCig", + "title": { "simpleText": "OneRepublic" }, + "navigationEndpoint": { + "clickTrackingParams": "CPMDENowGDciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@OneRepublic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCi4EDAgjULwwNBHOg1aaCig", + "canonicalBaseUrl": "/@OneRepublic" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/9nEm0mi6FUORmK_tFVZ9OKdeLC_WB8Oa4pvTK1tIxGVpDPCbtmLGVHfBjwaD7lU0yoCMQXDYpg=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/9nEm0mi6FUORmK_tFVZ9OKdeLC_WB8Oa4pvTK1tIxGVpDPCbtmLGVHfBjwaD7lU0yoCMQXDYpg=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "🌹🪩👁️🌵 Artificial Paradise Super Deluxe Out Now! 🌵👁️🪩🌹\n\nOneRepublic is Ryan Tedder, Zach Filkins, Drew Brown, Brent Kutzle, and Eddie Fisher" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "OneRepublic", + "navigationEndpoint": { + "clickTrackingParams": "CPMDENowGDciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@OneRepublic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCi4EDAgjULwwNBHOg1aaCig", + "canonicalBaseUrl": "/@OneRepublic" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "10.9 million subscribers" + } + }, + "simpleText": "10.9M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CPMDENowGDciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@OneRepublic" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCi4EDAgjULwwNBHOg1aaCig", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CPQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to OneRepublic." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from OneRepublic." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for OneRepublic" + }, + "trackingParams": "CIIEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for OneRepublic" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for OneRepublic" + }, + "trackingParams": "CIEEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for OneRepublic" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for OneRepublic" + }, + "trackingParams": "CIAEEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for OneRepublic" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CPgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CPgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CPgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2k0RURBZ2pVTHd3TkJIT2cxYWFDaWcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2k0RURBZ2pVTHd3TkJIT2cxYWFDaWcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2k0RURBZ2pVTHd3TkJIT2cxYWFDaWcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPoDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "OneRepublic" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCi4EDAgjULwwNBHOg1aaCig" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPsDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CPkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ2k0RURBZ2pVTHd3TkJIT2cxYWFDaWcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CPQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCi4EDAgjULwwNBHOg1aaCig"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CPQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPUDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "OneRepublic" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCi4EDAgjULwwNBHOg1aaCig" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPYDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CPMDENowGDciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "OneRepublic", + "navigationEndpoint": { + "clickTrackingParams": "CPMDENowGDciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@OneRepublic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCi4EDAgjULwwNBHOg1aaCig", + "canonicalBaseUrl": "/@OneRepublic" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCE5yTn9ljzSnC_oMp9Jnckg", + "title": { "simpleText": "P!NK" }, + "navigationEndpoint": { + "clickTrackingParams": "COMDENowGDgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@PinkVideoVault", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCE5yTn9ljzSnC_oMp9Jnckg", + "canonicalBaseUrl": "/@PinkVideoVault" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/Ls0xL7cdFhQaptfwj_iWSuzrbjoCpzG51upcwTFdS_twic6gVyNnx9mEo8YtJMinnGoOSUVmzQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/Ls0xL7cdFhQaptfwj_iWSuzrbjoCpzG51upcwTFdS_twic6gVyNnx9mEo8YtJMinnGoOSUVmzQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [{ "text": "It's all happening" }] + }, + "shortBylineText": { + "runs": [ + { + "text": "P!NK", + "navigationEndpoint": { + "clickTrackingParams": "COMDENowGDgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@PinkVideoVault", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCE5yTn9ljzSnC_oMp9Jnckg", + "canonicalBaseUrl": "/@PinkVideoVault" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "12.7 million subscribers" + } + }, + "simpleText": "12.7M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "COMDENowGDgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@PinkVideoVault" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCE5yTn9ljzSnC_oMp9Jnckg", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "COQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to P!NK." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from P!NK." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for P!NK" + }, + "trackingParams": "CPIDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for P!NK" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for P!NK" + }, + "trackingParams": "CPEDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for P!NK" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for P!NK" + }, + "trackingParams": "CPADEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for P!NK" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "COgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "COgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "COgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0U1eVRuOWxqelNuQ19vTXA5Sm5ja2cSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0U1eVRuOWxqelNuQ19vTXA5Sm5ja2cSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0U1eVRuOWxqelNuQ19vTXA5Sm5ja2cSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COoDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "P!NK" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCE5yTn9ljzSnC_oMp9Jnckg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COsDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "COkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ0U1eVRuOWxqelNuQ19vTXA5Sm5ja2cgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "COQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCE5yTn9ljzSnC_oMp9Jnckg"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "COQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COUDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "P!NK" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCE5yTn9ljzSnC_oMp9Jnckg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COYDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "COMDENowGDgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "P!NK", + "navigationEndpoint": { + "clickTrackingParams": "COMDENowGDgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@PinkVideoVault", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCE5yTn9ljzSnC_oMp9Jnckg", + "canonicalBaseUrl": "/@PinkVideoVault" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCRuODyyCo2YSQhJea9FAFLw", + "title": { "simpleText": "Pfulsk X Die Akademie" }, + "navigationEndpoint": { + "clickTrackingParams": "CNMDENowGDkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Pfulsk", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCRuODyyCo2YSQhJea9FAFLw", + "canonicalBaseUrl": "/@Pfulsk" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/_hZEaH2GeEhTzIZRXSv-vJDufdxZs_q53li8n1394by0Jx0Y1nc172Gaqz36JkqXt4OS6m00J0A=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/_hZEaH2GeEhTzIZRXSv-vJDufdxZs_q53li8n1394by0Jx0Y1nc172Gaqz36JkqXt4OS6m00J0A=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Ich stelle hier meine Covers und Lieder vor. \nAußerdem könnt Ihr hier die Beiträge der Mitglieder der Akademie hören, solange diese noch keinen eigenen YouTube-Kanal haben. \nDie mp3-Downloads meiner Lieder findet Ihr auf https://t.me/Pfulsk " + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Pfulsk X Die Akademie", + "navigationEndpoint": { + "clickTrackingParams": "CNMDENowGDkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Pfulsk", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCRuODyyCo2YSQhJea9FAFLw", + "canonicalBaseUrl": "/@Pfulsk" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "7.42K subscribers" } + }, + "simpleText": "7.42K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "subscriberCountText": { "simpleText": "@Pfulsk" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCRuODyyCo2YSQhJea9FAFLw", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CNQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Pfulsk X Die Akademie." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Pfulsk X Die Akademie." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Pfulsk X Die Akademie" + }, + "trackingParams": "COIDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Pfulsk X Die Akademie" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Pfulsk X Die Akademie" + }, + "trackingParams": "COEDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Pfulsk X Die Akademie" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Pfulsk X Die Akademie" + }, + "trackingParams": "COADEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Pfulsk X Die Akademie" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CNgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CNgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CNgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1J1T0R5eUNvMllTUWhKZWE5RkFGTHcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1J1T0R5eUNvMllTUWhKZWE5RkFGTHcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1J1T0R5eUNvMllTUWhKZWE5RkFGTHcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNoDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Pfulsk X Die Akademie" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCRuODyyCo2YSQhJea9FAFLw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNsDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CNkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1J1T0R5eUNvMllTUWhKZWE5RkFGTHcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CNQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCRuODyyCo2YSQhJea9FAFLw"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CNQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNUDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "Pfulsk X Die Akademie" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCRuODyyCo2YSQhJea9FAFLw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNYDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CNMDENowGDkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Pfulsk X Die Akademie", + "navigationEndpoint": { + "clickTrackingParams": "CNMDENowGDkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Pfulsk", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCRuODyyCo2YSQhJea9FAFLw", + "canonicalBaseUrl": "/@Pfulsk" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCRiy7IsqFucvH3Ilj7qf5Rg", + "title": { "simpleText": "Phoebe Ryan" }, + "navigationEndpoint": { + "clickTrackingParams": "CMMDENowGDoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@phoeberyanmusic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCRiy7IsqFucvH3Ilj7qf5Rg", + "canonicalBaseUrl": "/@phoeberyanmusic" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/tx-jmIypBNNBQIFS3OqTVJ6YJgjNdDZiwb5ZHH7qcERptxYSdrExOgygogc6KcJdexTW3utKwlg=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/tx-jmIypBNNBQIFS3OqTVJ6YJgjNdDZiwb5ZHH7qcERptxYSdrExOgygogc6KcJdexTW3utKwlg=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [{ "text": "All things Phoebe Ryan~*" }] + }, + "shortBylineText": { + "runs": [ + { + "text": "Phoebe Ryan", + "navigationEndpoint": { + "clickTrackingParams": "CMMDENowGDoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@phoeberyanmusic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCRiy7IsqFucvH3Ilj7qf5Rg", + "canonicalBaseUrl": "/@phoeberyanmusic" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "199K subscribers" } + }, + "simpleText": "199K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CMMDENowGDoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@phoeberyanmusic" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCRiy7IsqFucvH3Ilj7qf5Rg", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CMQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Phoebe Ryan." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Phoebe Ryan." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Phoebe Ryan" + }, + "trackingParams": "CNIDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Phoebe Ryan" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Phoebe Ryan" + }, + "trackingParams": "CNEDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Phoebe Ryan" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Phoebe Ryan" + }, + "trackingParams": "CNADEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Phoebe Ryan" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CMgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CMgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CMgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1JpeTdJc3FGdWN2SDNJbGo3cWY1UmcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1JpeTdJc3FGdWN2SDNJbGo3cWY1UmcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1JpeTdJc3FGdWN2SDNJbGo3cWY1UmcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMoDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Phoebe Ryan" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCRiy7IsqFucvH3Ilj7qf5Rg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMsDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CMkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1JpeTdJc3FGdWN2SDNJbGo3cWY1UmcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CMQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCRiy7IsqFucvH3Ilj7qf5Rg"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CMQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMUDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Phoebe Ryan" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCRiy7IsqFucvH3Ilj7qf5Rg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMYDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CMMDENowGDoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Phoebe Ryan", + "navigationEndpoint": { + "clickTrackingParams": "CMMDENowGDoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@phoeberyanmusic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCRiy7IsqFucvH3Ilj7qf5Rg", + "canonicalBaseUrl": "/@phoeberyanmusic" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCxTHCMaxURhapisCMBv8y0A", + "title": { "simpleText": "Plankton" }, + "navigationEndpoint": { + "clickTrackingParams": "CLMDENowGDsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@plankton.mp4", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxTHCMaxURhapisCMBv8y0A", + "canonicalBaseUrl": "/@plankton.mp4" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/Cdlsy3IXgis5hNYRwvohPB9AIxH8tNdEo9CwxXK1i3QEUO7YN3p4YJ_cd5ruGsmNhvoX7803=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/Cdlsy3IXgis5hNYRwvohPB9AIxH8tNdEo9CwxXK1i3QEUO7YN3p4YJ_cd5ruGsmNhvoX7803=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Meine Mama sagt meine Videos sind ganz nett.\n\n✉️ plankton@enkime.de\n\nImpressum ⬇️\nhttps://beacons.ai/plankton.gif\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Plankton", + "navigationEndpoint": { + "clickTrackingParams": "CLMDENowGDsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@plankton.mp4", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxTHCMaxURhapisCMBv8y0A", + "canonicalBaseUrl": "/@plankton.mp4" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.05 million subscribers" + } + }, + "simpleText": "1.05M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CLMDENowGDsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { "simpleText": "@plankton.mp4" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCxTHCMaxURhapisCMBv8y0A", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CLQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Plankton." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Plankton." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Plankton" + }, + "trackingParams": "CMIDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Plankton" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Plankton" + }, + "trackingParams": "CMEDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Plankton" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Plankton" + }, + "trackingParams": "CMADEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Plankton" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CLgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CLgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CLgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3hUSENNYXhVUmhhcGlzQ01Cdjh5MEESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3hUSENNYXhVUmhhcGlzQ01Cdjh5MEESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3hUSENNYXhVUmhhcGlzQ01Cdjh5MEESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLoDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Plankton" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCxTHCMaxURhapisCMBv8y0A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLsDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CLkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3hUSENNYXhVUmhhcGlzQ01Cdjh5MEEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CLQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCxTHCMaxURhapisCMBv8y0A"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CLQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLUDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Plankton" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCxTHCMaxURhapisCMBv8y0A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLYDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CLMDENowGDsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Plankton", + "navigationEndpoint": { + "clickTrackingParams": "CLMDENowGDsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@plankton.mp4", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxTHCMaxURhapisCMBv8y0A", + "canonicalBaseUrl": "/@plankton.mp4" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCaJ84U5xsjX9KT1mIF3B22w", + "title": { "simpleText": "Rev says desu" }, + "navigationEndpoint": { + "clickTrackingParams": "CKMDENowGDwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_ktXW3O-_bRFhI1O1MgjfS-pvUNOK5KD5RBNY1RPXgIBR4=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Hey what's up guys, Rev here. On this channel I cover a wide range of topics including anime news, vtuber news, drama, bad social media takes, memes, and much more!\n\nMake sure to subscribe and turn on notifications for daily uploads!\n\nMostly satire, don't take things too seriously. Come chill and have a relaxing time with this great community.\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Rev says desu", + "navigationEndpoint": { + "clickTrackingParams": "CKMDENowGDwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "711K subscribers" } + }, + "simpleText": "711K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "subscriberCountText": { "simpleText": "@Revsaysdesu" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCaJ84U5xsjX9KT1mIF3B22w", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CKQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Rev says desu." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Rev says desu." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Rev says desu" + }, + "trackingParams": "CLIDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Rev says desu" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Rev says desu" + }, + "trackingParams": "CLEDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Rev says desu" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Rev says desu" + }, + "trackingParams": "CLADEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Rev says desu" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CKgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CKgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CKgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2FKODRVNXhzalg5S1QxbUlGM0IyMncSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2FKODRVNXhzalg5S1QxbUlGM0IyMncSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2FKODRVNXhzalg5S1QxbUlGM0IyMncSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKoDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Rev says desu" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCaJ84U5xsjX9KT1mIF3B22w" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKsDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CKkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ2FKODRVNXhzalg5S1QxbUlGM0IyMncgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CKQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCaJ84U5xsjX9KT1mIF3B22w"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CKQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKUDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Rev says desu" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCaJ84U5xsjX9KT1mIF3B22w" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKYDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CKMDENowGDwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Rev says desu", + "navigationEndpoint": { + "clickTrackingParams": "CKMDENowGDwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Revsaysdesu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCaJ84U5xsjX9KT1mIF3B22w", + "canonicalBaseUrl": "/@Revsaysdesu" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCfSAqqftdc7FM1SY5vJjKfA", + "title": { "simpleText": "Rita Ora" }, + "navigationEndpoint": { + "clickTrackingParams": "CJMDENowGD0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ritaora", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCfSAqqftdc7FM1SY5vJjKfA", + "canonicalBaseUrl": "/@ritaora" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ErY96sZoGCbxiHXArPUrRfYb0EPifFGEebw7ccLW3NoFK4LCpoJO2ALU9rKN1BU-JKFLITOloA=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ErY96sZoGCbxiHXArPUrRfYb0EPifFGEebw7ccLW3NoFK4LCpoJO2ALU9rKN1BU-JKFLITOloA=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The Official Rita Ora YouTube channel!\n\nMy new album ‘YOU & I’ is OUT NOW 🔒❤️\nBuy now ⬇️\nritaora.lnk.to/YouAndIID\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Rita Ora", + "navigationEndpoint": { + "clickTrackingParams": "CJMDENowGD0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ritaora", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCfSAqqftdc7FM1SY5vJjKfA", + "canonicalBaseUrl": "/@ritaora" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "4.2 million subscribers" + } + }, + "simpleText": "4.2M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CJMDENowGD0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@ritaora" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCfSAqqftdc7FM1SY5vJjKfA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CJQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Rita Ora." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Rita Ora." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Rita Ora" + }, + "trackingParams": "CKIDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Rita Ora" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Rita Ora" + }, + "trackingParams": "CKEDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Rita Ora" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Rita Ora" + }, + "trackingParams": "CKADEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Rita Ora" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CJgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CJgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CJgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2ZTQXFxZnRkYzdGTTFTWTV2SmpLZkESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2ZTQXFxZnRkYzdGTTFTWTV2SmpLZkESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2ZTQXFxZnRkYzdGTTFTWTV2SmpLZkESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJoDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Rita Ora" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCfSAqqftdc7FM1SY5vJjKfA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJsDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CJkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ2ZTQXFxZnRkYzdGTTFTWTV2SmpLZkEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CJQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCfSAqqftdc7FM1SY5vJjKfA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CJQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJUDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Rita Ora" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCfSAqqftdc7FM1SY5vJjKfA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJYDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CJMDENowGD0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Rita Ora", + "navigationEndpoint": { + "clickTrackingParams": "CJMDENowGD0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ritaora", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCfSAqqftdc7FM1SY5vJjKfA", + "canonicalBaseUrl": "/@ritaora" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCw5J0_EUnV5iXKVMUGHsQ0A", + "title": { "simpleText": "Rosa Linn" }, + "navigationEndpoint": { + "clickTrackingParams": "CIMDENowGD4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@rosalinn", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCw5J0_EUnV5iXKVMUGHsQ0A", + "canonicalBaseUrl": "/@rosalinn" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/kB4pK4zqUP5Ta8gxolb1_-tGmw9ocyJOb8YURWzMTzDdwI3cTNNRkNNJi-MHOTZlz5W93au_wA=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/kB4pK4zqUP5Ta8gxolb1_-tGmw9ocyJOb8YURWzMTzDdwI3cTNNRkNNJi-MHOTZlz5W93au_wA=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The official Youtube channel of Rosa Linn.\nDebut EP “Lay Your Hands Upon My Heart” is out everywhere! \n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Rosa Linn", + "navigationEndpoint": { + "clickTrackingParams": "CIMDENowGD4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@rosalinn", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCw5J0_EUnV5iXKVMUGHsQ0A", + "canonicalBaseUrl": "/@rosalinn" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "484K subscribers" } + }, + "simpleText": "484K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CIMDENowGD4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@rosalinn" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCw5J0_EUnV5iXKVMUGHsQ0A", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CIQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Rosa Linn." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Rosa Linn." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Rosa Linn" + }, + "trackingParams": "CJIDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Rosa Linn" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Rosa Linn" + }, + "trackingParams": "CJEDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Rosa Linn" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Rosa Linn" + }, + "trackingParams": "CJADEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Rosa Linn" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CIgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CIgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CIgDEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3c1SjBfRVVuVjVpWEtWTVVHSHNRMEESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI8DEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3c1SjBfRVVuVjVpWEtWTVVHSHNRMEESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI4DEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3c1SjBfRVVuVjVpWEtWTVVHSHNRMEESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI0DEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIoDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Rosa Linn" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCw5J0_EUnV5iXKVMUGHsQ0A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIwDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIsDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CIkDENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3c1SjBfRVVuVjVpWEtWTVVHSHNRMEEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CIQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCw5J0_EUnV5iXKVMUGHsQ0A"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CIQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIQDEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIUDEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Rosa Linn" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCw5J0_EUnV5iXKVMUGHsQ0A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIcDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIYDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CIMDENowGD4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Rosa Linn", + "navigationEndpoint": { + "clickTrackingParams": "CIMDENowGD4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@rosalinn", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCw5J0_EUnV5iXKVMUGHsQ0A", + "canonicalBaseUrl": "/@rosalinn" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCkdc7gHpavxpgGalxKbgSHA", + "title": { "simpleText": "Sean Paul" }, + "navigationEndpoint": { + "clickTrackingParams": "CPMCENowGD8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@AllSeanPaul", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCkdc7gHpavxpgGalxKbgSHA", + "canonicalBaseUrl": "/@AllSeanPaul" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/aNFqe9rfndkFjS-bS0wO8wmy1kR679MMKOYTe10YsL8s8275b1326BtUbiLkwf9vyVa766rtIQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/aNFqe9rfndkFjS-bS0wO8wmy1kR679MMKOYTe10YsL8s8275b1326BtUbiLkwf9vyVa766rtIQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Welcome to the official Sean Paul YouTube channel. Sean Paul began his musical career in 1996 and has attracted international attention that has seen him releasing six studio albums. The international dancehall artiste and producer has been given the nod of approval by numerous international musical governing bodies and boasts 7 Grammy nominations as well as the 2006 American Music Award for favorite Pop/Rock Male Artiste." + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Sean Paul", + "navigationEndpoint": { + "clickTrackingParams": "CPMCENowGD8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@AllSeanPaul", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCkdc7gHpavxpgGalxKbgSHA", + "canonicalBaseUrl": "/@AllSeanPaul" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "4.93 million subscribers" + } + }, + "simpleText": "4.93M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CPMCENowGD8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@AllSeanPaul" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCkdc7gHpavxpgGalxKbgSHA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CPQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Sean Paul." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Sean Paul." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Sean Paul" + }, + "trackingParams": "CIIDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Sean Paul" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Sean Paul" + }, + "trackingParams": "CIEDEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Sean Paul" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Sean Paul" + }, + "trackingParams": "CIADEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Sean Paul" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CPgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CPgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CPgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2tkYzdnSHBhdnhwZ0dhbHhLYmdTSEESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2tkYzdnSHBhdnhwZ0dhbHhLYmdTSEESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2tkYzdnSHBhdnhwZ0dhbHhLYmdTSEESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPoCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Sean Paul" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCkdc7gHpavxpgGalxKbgSHA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPsCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CPkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ2tkYzdnSHBhdnhwZ0dhbHhLYmdTSEEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CPQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCkdc7gHpavxpgGalxKbgSHA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CPQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPUCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Sean Paul" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCkdc7gHpavxpgGalxKbgSHA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPYCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CPMCENowGD8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Sean Paul", + "navigationEndpoint": { + "clickTrackingParams": "CPMCENowGD8iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@AllSeanPaul", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCkdc7gHpavxpgGalxKbgSHA", + "canonicalBaseUrl": "/@AllSeanPaul" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCf1jBHk4oofSwXzoWG8lgWg", + "title": { "simpleText": "Stereoact Official" }, + "navigationEndpoint": { + "clickTrackingParams": "COMCENowGEAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@StereoactOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCf1jBHk4oofSwXzoWG8lgWg", + "canonicalBaseUrl": "/@StereoactOfficial" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/SKio4KZErvVJI7S27CiJzHXGaFVoWZXbMI7KZF3SMg1cRaFZyC82wEu17DHwjL-YkMA39lz8=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/SKio4KZErvVJI7S27CiJzHXGaFVoWZXbMI7KZF3SMg1cRaFZyC82wEu17DHwjL-YkMA39lz8=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Das mit 7-fach Gold & 3-fach Platin ausgezeichnete und für 3 Echos nominierte Duo Stereoact sind das erfolgreicheste deutsche DJ-Duo des Jahres. Die Produzenten und DJ`s aus dem Erzgebirge landen seit etwa drei Jahren regelmäßig auf den vorderen Plätzen der Bestenlisten.\nIhr gemeinsam mit der Singer-Songwriterin Kerstin Ott produzierter Hit „Die immer lacht“ avancierte zur erfolgreichsten deutschsprachigen Single des Jahres 2016 und das Video dazu wurde das erfolgreichste in deutscher Sprache ÜBERHAUPT mit 200 Millionen.\n\nManagement & Booking: info@13th-sounds.ch\n\nHomepage: http://www.stereoact.de/\nFan-Shop: https://kappenschmiede.de/merchandise/stereoact/\nFacebook: https://www.facebook.com/stereoactmusic/\nSoundcloud: https://soundcloud.com/stereoact\nSpotify: https://goo.gl/CYmkVs\nYou Tube: https://www.youtube.com/c/StereoactOfficial\nImpressum: https://www.stereoact.de/impressum/" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Stereoact Official", + "navigationEndpoint": { + "clickTrackingParams": "COMCENowGEAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@StereoactOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCf1jBHk4oofSwXzoWG8lgWg", + "canonicalBaseUrl": "/@StereoactOfficial" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "58.1K subscribers" } + }, + "simpleText": "58.1K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "COMCENowGEAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@StereoactOfficial" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCf1jBHk4oofSwXzoWG8lgWg", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "COQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Stereoact Official." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Stereoact Official." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Stereoact Official" + }, + "trackingParams": "CPICEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Stereoact Official" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Stereoact Official" + }, + "trackingParams": "CPECEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Stereoact Official" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Stereoact Official" + }, + "trackingParams": "CPACEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Stereoact Official" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "COgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "COgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "COgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2YxakJIazRvb2ZTd1h6b1dHOGxnV2cSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2YxakJIazRvb2ZTd1h6b1dHOGxnV2cSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2YxakJIazRvb2ZTd1h6b1dHOGxnV2cSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COoCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Stereoact Official" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCf1jBHk4oofSwXzoWG8lgWg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COsCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "COkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ2YxakJIazRvb2ZTd1h6b1dHOGxnV2cgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "COQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCf1jBHk4oofSwXzoWG8lgWg"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "COQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COUCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "Stereoact Official" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCf1jBHk4oofSwXzoWG8lgWg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COYCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "COMCENowGEAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Stereoact Official", + "navigationEndpoint": { + "clickTrackingParams": "COMCENowGEAiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@StereoactOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCf1jBHk4oofSwXzoWG8lgWg", + "canonicalBaseUrl": "/@StereoactOfficial" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCOiG4UoE0-CBZKlDVgw1eTA", + "title": { "simpleText": "Stonedeafproduction" }, + "navigationEndpoint": { + "clickTrackingParams": "CNMCENowGEEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Stonedeafproduction", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCOiG4UoE0-CBZKlDVgw1eTA", + "canonicalBaseUrl": "/@Stonedeafproduction" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_nyArqKRzgfxSX1WApFPtYr59H2ILATvZiOZl4N-SCtoqg=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_nyArqKRzgfxSX1WApFPtYr59H2ILATvZiOZl4N-SCtoqg=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "SDP ist eine Zwei-Mann-Band aus Spandau, Berlin. Die beiden Allround-Musiker bedienen sich vieler verschiedener Stile, die sie miteinander kombinieren. In ihren deutschsprachigen Texten verarbeiten SDP Alltäglichkeiten und weltpolitische Fragen nebeneinander, allerdings oft mit einem satirischen und ironischen Unterton." + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Stonedeafproduction", + "navigationEndpoint": { + "clickTrackingParams": "CNMCENowGEEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Stonedeafproduction", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCOiG4UoE0-CBZKlDVgw1eTA", + "canonicalBaseUrl": "/@Stonedeafproduction" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "714K subscribers" } + }, + "simpleText": "714K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CNMCENowGEEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@Stonedeafproduction" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCOiG4UoE0-CBZKlDVgw1eTA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CNQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Stonedeafproduction." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Stonedeafproduction." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Stonedeafproduction" + }, + "trackingParams": "COICEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Stonedeafproduction" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Stonedeafproduction" + }, + "trackingParams": "COECEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Stonedeafproduction" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Stonedeafproduction" + }, + "trackingParams": "COACEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Stonedeafproduction" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CNgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CNgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CNgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ09pRzRVb0UwLUNCWktsRFZndzFlVEESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ09pRzRVb0UwLUNCWktsRFZndzFlVEESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ09pRzRVb0UwLUNCWktsRFZndzFlVEESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNoCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Stonedeafproduction" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCOiG4UoE0-CBZKlDVgw1eTA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNsCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CNkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ09pRzRVb0UwLUNCWktsRFZndzFlVEEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CNQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCOiG4UoE0-CBZKlDVgw1eTA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CNQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNUCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "Stonedeafproduction" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCOiG4UoE0-CBZKlDVgw1eTA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNYCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CNMCENowGEEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Stonedeafproduction", + "navigationEndpoint": { + "clickTrackingParams": "CNMCENowGEEiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Stonedeafproduction", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCOiG4UoE0-CBZKlDVgw1eTA", + "canonicalBaseUrl": "/@Stonedeafproduction" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC9rMiEjNaCSsebs31MRDCRA", + "title": { "simpleText": "Stray Kids" }, + "navigationEndpoint": { + "clickTrackingParams": "CMMCENowGEIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@StrayKids", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/@StrayKids" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/1kpobT9zD53HTtykMegGW-Fi-fKTFu0mHsgg6XlBDbTUVLx75VfMzfEaM9dSRx9KX6Zh7qotIw=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [{ "text": "Stray Kids Official YouTube" }] + }, + "shortBylineText": { + "runs": [ + { + "text": "Stray Kids", + "navigationEndpoint": { + "clickTrackingParams": "CMMCENowGEIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@StrayKids", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/@StrayKids" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "18.8 million subscribers" + } + }, + "simpleText": "18.8M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CMMCENowGEIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@StrayKids" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC9rMiEjNaCSsebs31MRDCRA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CMQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Stray Kids." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Stray Kids." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Stray Kids" + }, + "trackingParams": "CNICEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Stray Kids" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Stray Kids" + }, + "trackingParams": "CNECEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Stray Kids" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Stray Kids" + }, + "trackingParams": "CNACEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Stray Kids" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CMgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CMgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CMgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzlyTWlFak5hQ1NzZWJzMzFNUkRDUkESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzlyTWlFak5hQ1NzZWJzMzFNUkRDUkESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzlyTWlFak5hQ1NzZWJzMzFNUkRDUkESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMoCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Stray Kids" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC9rMiEjNaCSsebs31MRDCRA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMsCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CMkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzlyTWlFak5hQ1NzZWJzMzFNUkRDUkEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CMQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC9rMiEjNaCSsebs31MRDCRA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CMQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMUCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Stray Kids" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC9rMiEjNaCSsebs31MRDCRA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMYCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CMMCENowGEIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Stray Kids", + "navigationEndpoint": { + "clickTrackingParams": "CMMCENowGEIiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@StrayKids", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9rMiEjNaCSsebs31MRDCRA", + "canonicalBaseUrl": "/@StrayKids" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCj1VqrHhDte54oLgPG4xpuQ", + "title": { "simpleText": "Stuff Made Here" }, + "navigationEndpoint": { + "clickTrackingParams": "CLMCENowGEMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@StuffMadeHere", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCj1VqrHhDte54oLgPG4xpuQ", + "canonicalBaseUrl": "/@StuffMadeHere" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_mzfzJ9E1WEzyt1YlPXemHOwGBBnVCKzXva_mzmS5qqMg=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_mzfzJ9E1WEzyt1YlPXemHOwGBBnVCKzXva_mzmS5qqMg=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "I've been building things for as long as I can remember. It all started when my dad exposed me to plastic model building and soldering when I was around 4 years old. That set me on a path to building increasingly complex things and becoming an engineer. My goal is to do the same for as many people as possible by exposing them to the joy of engineering, fabricating and creating things out of nothing. If I'm lucky a few people may become engineers, which would be great for the world. Engineering is awesome.\n\nIf you're interested in sending me something:\n\nP.O. Box 78470\nCharlotte, NC 28271\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Stuff Made Here", + "navigationEndpoint": { + "clickTrackingParams": "CLMCENowGEMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@StuffMadeHere", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCj1VqrHhDte54oLgPG4xpuQ", + "canonicalBaseUrl": "/@StuffMadeHere" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "4.6 million subscribers" + } + }, + "simpleText": "4.6M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CLMCENowGEMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { "simpleText": "@StuffMadeHere" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCj1VqrHhDte54oLgPG4xpuQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CLQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Stuff Made Here." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Stuff Made Here." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Stuff Made Here" + }, + "trackingParams": "CMICEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Stuff Made Here" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Stuff Made Here" + }, + "trackingParams": "CMECEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Stuff Made Here" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Stuff Made Here" + }, + "trackingParams": "CMACEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Stuff Made Here" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CLgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CLgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CLgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2oxVnFySGhEdGU1NG9MZ1BHNHhwdVESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2oxVnFySGhEdGU1NG9MZ1BHNHhwdVESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2oxVnFySGhEdGU1NG9MZ1BHNHhwdVESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLoCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Stuff Made Here" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCj1VqrHhDte54oLgPG4xpuQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLsCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CLkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ2oxVnFySGhEdGU1NG9MZ1BHNHhwdVEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CLQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCj1VqrHhDte54oLgPG4xpuQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CLQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLUCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Stuff Made Here" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCj1VqrHhDte54oLgPG4xpuQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLYCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CLMCENowGEMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Stuff Made Here", + "navigationEndpoint": { + "clickTrackingParams": "CLMCENowGEMiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@StuffMadeHere", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCj1VqrHhDte54oLgPG4xpuQ", + "canonicalBaseUrl": "/@StuffMadeHere" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCWH4JkQWioU3vTAritHDnAA", + "title": { "simpleText": "sydsnap" }, + "navigationEndpoint": { + "clickTrackingParams": "CKMCENowGEQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@sydsnap", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWH4JkQWioU3vTAritHDnAA", + "canonicalBaseUrl": "/@sydsnap" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_ltVeBIuP0YJIFSzAiI6f30nf882OfAdV_CeD-h0mVasLU=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_ltVeBIuP0YJIFSzAiI6f30nf882OfAdV_CeD-h0mVasLU=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Anime/ manga / visual+light novel addicted youtuber. My quirk is yelling loudly." + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "sydsnap", + "navigationEndpoint": { + "clickTrackingParams": "CKMCENowGEQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@sydsnap", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWH4JkQWioU3vTAritHDnAA", + "canonicalBaseUrl": "/@sydsnap" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "811K subscribers" } + }, + "simpleText": "811K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "subscriberCountText": { "simpleText": "@sydsnap" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCWH4JkQWioU3vTAritHDnAA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CKQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to sydsnap." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from sydsnap." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for sydsnap" + }, + "trackingParams": "CLICEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for sydsnap" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for sydsnap" + }, + "trackingParams": "CLECEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for sydsnap" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for sydsnap" + }, + "trackingParams": "CLACEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for sydsnap" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CKgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CKgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CKgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1dINEprUVdpb1UzdlRBcml0SERuQUESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1dINEprUVdpb1UzdlRBcml0SERuQUESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1dINEprUVdpb1UzdlRBcml0SERuQUESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKoCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "sydsnap" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCWH4JkQWioU3vTAritHDnAA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKsCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CKkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1dINEprUVdpb1UzdlRBcml0SERuQUEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CKQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCWH4JkQWioU3vTAritHDnAA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CKQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKUCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "sydsnap" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCWH4JkQWioU3vTAritHDnAA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKYCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CKMCENowGEQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "sydsnap", + "navigationEndpoint": { + "clickTrackingParams": "CKMCENowGEQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@sydsnap", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWH4JkQWioU3vTAritHDnAA", + "canonicalBaseUrl": "/@sydsnap" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCi3H2bHgaTFwrfwx_GOJyZw", + "title": { "simpleText": "t-low - Topic" }, + "navigationEndpoint": { + "clickTrackingParams": "CJMCENowGEUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCi3H2bHgaTFwrfwx_GOJyZw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCi3H2bHgaTFwrfwx_GOJyZw", + "canonicalBaseUrl": "/channel/UCi3H2bHgaTFwrfwx_GOJyZw" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/Eu_Ek1vTScAtdhB5OCAP67sRRfsAjN74BEVmPO3NcDQjBbmsLzJtSxBAbwNwrrG5ih0ywpAY4fk=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/Eu_Ek1vTScAtdhB5OCAP67sRRfsAjN74BEVmPO3NcDQjBbmsLzJtSxBAbwNwrrG5ih0ywpAY4fk=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "T-Low ist ein deutscher Rapper. Sein Stil ist eine Mischung aus autotunelastigem Trap, Punk Rap und Cloud Rap mit Einflüssen aus Dream Pop. Mit den Songs Sehnsucht und We Made It erreichte er im März bzw. April 2022 jeweils die Spitze der Singlecharts in Deutschland." + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "t-low - Topic", + "navigationEndpoint": { + "clickTrackingParams": "CJMCENowGEUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCi3H2bHgaTFwrfwx_GOJyZw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCi3H2bHgaTFwrfwx_GOJyZw", + "canonicalBaseUrl": "/channel/UCi3H2bHgaTFwrfwx_GOJyZw" + } + } + } + ] + }, + "videoCountText": { + "runs": [{ "text": "241" }, { "text": " videos" }] + }, + "subscriptionButton": { "subscribed": true }, + "subscriberCountText": { + "accessibility": { + "accessibilityData": { "label": "65.5K subscribers" } + }, + "simpleText": "65.5K subscribers" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCi3H2bHgaTFwrfwx_GOJyZw", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CJQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to t-low - Topic." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from t-low - Topic." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for t-low - Topic" + }, + "trackingParams": "CKICEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for t-low - Topic" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for t-low - Topic" + }, + "trackingParams": "CKECEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for t-low - Topic" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for t-low - Topic" + }, + "trackingParams": "CKACEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for t-low - Topic" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CJgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CJgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CJgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2kzSDJiSGdhVEZ3cmZ3eF9HT0p5WncSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2kzSDJiSGdhVEZ3cmZ3eF9HT0p5WncSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2kzSDJiSGdhVEZ3cmZ3eF9HT0p5WncSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJoCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "t-low - Topic" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCi3H2bHgaTFwrfwx_GOJyZw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJsCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CJkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ2kzSDJiSGdhVEZ3cmZ3eF9HT0p5WncgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CJQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCi3H2bHgaTFwrfwx_GOJyZw"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CJQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJUCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "t-low - Topic" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCi3H2bHgaTFwrfwx_GOJyZw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJYCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CJMCENowGEUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "t-low - Topic", + "navigationEndpoint": { + "clickTrackingParams": "CJMCENowGEUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCi3H2bHgaTFwrfwx_GOJyZw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCi3H2bHgaTFwrfwx_GOJyZw", + "canonicalBaseUrl": "/channel/UCi3H2bHgaTFwrfwx_GOJyZw" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCqECaJ8Gagnn7YCbPEzWH6g", + "title": { "simpleText": "Taylor Swift" }, + "navigationEndpoint": { + "clickTrackingParams": "CIMCENowGEYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TaylorSwift", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCqECaJ8Gagnn7YCbPEzWH6g", + "canonicalBaseUrl": "/@TaylorSwift" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/PFmecESWwRnrbIFZ04vG6UbdXKzjyC3vQkufqqEYEHpXlwHFRMDN8RuvG7A1WRnbGKVZTcyFYQ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/PFmecESWwRnrbIFZ04vG6UbdXKzjyC3vQkufqqEYEHpXlwHFRMDN8RuvG7A1WRnbGKVZTcyFYQ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "All’s fair in love and poetry... New album THE TORTURED POETS DEPARTMENT. \nOut April 19 🤍\n\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Taylor Swift", + "navigationEndpoint": { + "clickTrackingParams": "CIMCENowGEYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TaylorSwift", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCqECaJ8Gagnn7YCbPEzWH6g", + "canonicalBaseUrl": "/@TaylorSwift" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "60.5 million subscribers" + } + }, + "simpleText": "60.5M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CIMCENowGEYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@TaylorSwift" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCqECaJ8Gagnn7YCbPEzWH6g", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CIQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Taylor Swift." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Taylor Swift." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Taylor Swift" + }, + "trackingParams": "CJICEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Taylor Swift" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Taylor Swift" + }, + "trackingParams": "CJECEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Taylor Swift" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Taylor Swift" + }, + "trackingParams": "CJACEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Taylor Swift" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CIgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CIgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CIgCEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3FFQ2FKOEdhZ25uN1lDYlBFeldINmcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI8CEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3FFQ2FKOEdhZ25uN1lDYlBFeldINmcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI4CEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3FFQ2FKOEdhZ25uN1lDYlBFeldINmcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI0CEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIoCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Taylor Swift" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCqECaJ8Gagnn7YCbPEzWH6g" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIwCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIsCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CIkCENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3FFQ2FKOEdhZ25uN1lDYlBFeldINmcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CIQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCqECaJ8Gagnn7YCbPEzWH6g"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CIQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIQCEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIUCEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Taylor Swift" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCqECaJ8Gagnn7YCbPEzWH6g" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIcCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIYCEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CIMCENowGEYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Taylor Swift", + "navigationEndpoint": { + "clickTrackingParams": "CIMCENowGEYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TaylorSwift", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCqECaJ8Gagnn7YCbPEzWH6g", + "canonicalBaseUrl": "/@TaylorSwift" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCEy_Fzl4jE1AF_a2R98yKsw", + "title": { "simpleText": "Test with Sanjaa" }, + "navigationEndpoint": { + "clickTrackingParams": "CPMBENowGEciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TestwithSanjaa", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCEy_Fzl4jE1AF_a2R98yKsw", + "canonicalBaseUrl": "/@TestwithSanjaa" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_lbopSbgcvTQ8376dROCfVnF3WSndiYxJc7WEnsWskRB6Q=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_lbopSbgcvTQ8376dROCfVnF3WSndiYxJc7WEnsWskRB6Q=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [{ "text": "Test and Taste with Sanjaa" }] + }, + "shortBylineText": { + "runs": [ + { + "text": "Test with Sanjaa", + "navigationEndpoint": { + "clickTrackingParams": "CPMBENowGEciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TestwithSanjaa", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCEy_Fzl4jE1AF_a2R98yKsw", + "canonicalBaseUrl": "/@TestwithSanjaa" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "77.5K subscribers" } + }, + "simpleText": "77.5K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "subscriberCountText": { + "simpleText": "@TestwithSanjaa" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCEy_Fzl4jE1AF_a2R98yKsw", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CPQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Test with Sanjaa." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Test with Sanjaa." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Test with Sanjaa" + }, + "trackingParams": "CIICEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Test with Sanjaa" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Test with Sanjaa" + }, + "trackingParams": "CIECEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Test with Sanjaa" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Test with Sanjaa" + }, + "trackingParams": "CIACEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Test with Sanjaa" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CPgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CPgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CPgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0V5X0Z6bDRqRTFBRl9hMlI5OHlLc3cSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0V5X0Z6bDRqRTFBRl9hMlI5OHlLc3cSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0V5X0Z6bDRqRTFBRl9hMlI5OHlLc3cSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CP0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPoBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Test with Sanjaa" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCEy_Fzl4jE1AF_a2R98yKsw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPsBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CPkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ0V5X0Z6bDRqRTFBRl9hMlI5OHlLc3cgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CPQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCEy_Fzl4jE1AF_a2R98yKsw"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CPQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CPUBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Test with Sanjaa" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCEy_Fzl4jE1AF_a2R98yKsw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CPcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CPYBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CPMBENowGEciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Test with Sanjaa", + "navigationEndpoint": { + "clickTrackingParams": "CPMBENowGEciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TestwithSanjaa", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCEy_Fzl4jE1AF_a2R98yKsw", + "canonicalBaseUrl": "/@TestwithSanjaa" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC5UAwBUum7CPN5buc-_N1Fw", + "title": { "simpleText": "The Linux Experiment" }, + "navigationEndpoint": { + "clickTrackingParams": "COMBENowGEgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TheLinuxEXP", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC5UAwBUum7CPN5buc-_N1Fw", + "canonicalBaseUrl": "/@TheLinuxEXP" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_lAKf-vZLoTI-gZUoP5Y3gbdGd07E4eDHUhTee6aOzDCnU=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_lAKf-vZLoTI-gZUoP5Y3gbdGd07E4eDHUhTee6aOzDCnU=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Making Linux accessible: no techno babble, no super technical content. Just Linux desktop news, simple tutorials, application spotlights, and opinion pieces trying to stay positive, without gatekeeping.\n\n👏 SUPPORT THE CHANNEL:\nGet access to a weekly podcast, vote on the next topics I cover, and get your name in the credits:\n\nYouTube: https://www.youtube.com/channel/UC5UAwBUum7CPN5buc-_N1Fw/join\nPatreon: https://www.patreon.com/thelinuxexperiment\n\nOr, you can donate whatever you want: https://paypal.me/thelinuxexp?locale.x=fr_FR\n\n🏆 FOLLOW ME ELSEWHERE:\nMastodon: https://mastodon.social/web/@thelinuxEXP\nPixelfed: https://pixelfed.social/TLENick\nDiscord: https://discord.gg/xK7ukavWmQ\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "The Linux Experiment", + "navigationEndpoint": { + "clickTrackingParams": "COMBENowGEgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TheLinuxEXP", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC5UAwBUum7CPN5buc-_N1Fw", + "canonicalBaseUrl": "/@TheLinuxEXP" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "373K subscribers" } + }, + "simpleText": "373K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "COMBENowGEgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { "simpleText": "@TheLinuxEXP" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC5UAwBUum7CPN5buc-_N1Fw", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "COQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to The Linux Experiment." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from The Linux Experiment." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for The Linux Experiment" + }, + "trackingParams": "CPIBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for The Linux Experiment" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for The Linux Experiment" + }, + "trackingParams": "CPEBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for The Linux Experiment" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for The Linux Experiment" + }, + "trackingParams": "CPABEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for The Linux Experiment" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "COgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "COgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "COgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzVVQXdCVXVtN0NQTjVidWMtX04xRncSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzVVQXdCVXVtN0NQTjVidWMtX04xRncSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzVVQXdCVXVtN0NQTjVidWMtX04xRncSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CO0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COoBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "The Linux Experiment" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC5UAwBUum7CPN5buc-_N1Fw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COsBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "COkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzVVQXdCVXVtN0NQTjVidWMtX04xRncgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "COQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC5UAwBUum7CPN5buc-_N1Fw"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "COQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "COUBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "The Linux Experiment" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "COcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC5UAwBUum7CPN5buc-_N1Fw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "COcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "COYBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "COMBENowGEgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "The Linux Experiment", + "navigationEndpoint": { + "clickTrackingParams": "COMBENowGEgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TheLinuxEXP", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC5UAwBUum7CPN5buc-_N1Fw", + "canonicalBaseUrl": "/@TheLinuxEXP" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC0WP5P-ufpRfjbNrmOWwLBQ", + "title": { "simpleText": "The Weeknd" }, + "navigationEndpoint": { + "clickTrackingParams": "CNMBENowGEkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TheWeeknd", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC0WP5P-ufpRfjbNrmOWwLBQ", + "canonicalBaseUrl": "/@TheWeeknd" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/WHvw1ak1FcJaHeEiTmG2iN0dqEjjPxAtT_tA8ruJ3MlNr9I-RHsAur1iAenYeQN_d6LNPH2Z8Ic=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/WHvw1ak1FcJaHeEiTmG2iN0dqEjjPxAtT_tA8ruJ3MlNr9I-RHsAur1iAenYeQN_d6LNPH2Z8Ic=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Official YouTube channel for The Weeknd.\nwww.theweeknd.com" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "The Weeknd", + "navigationEndpoint": { + "clickTrackingParams": "CNMBENowGEkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TheWeeknd", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC0WP5P-ufpRfjbNrmOWwLBQ", + "canonicalBaseUrl": "/@TheWeeknd" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "36.7 million subscribers" + } + }, + "simpleText": "36.7M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CNMBENowGEkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@TheWeeknd" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC0WP5P-ufpRfjbNrmOWwLBQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CNQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to The Weeknd." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from The Weeknd." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for The Weeknd" + }, + "trackingParams": "COIBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for The Weeknd" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for The Weeknd" + }, + "trackingParams": "COEBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for The Weeknd" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for The Weeknd" + }, + "trackingParams": "COABEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for The Weeknd" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CNgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CNgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CNgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzBXUDVQLXVmcFJmamJOcm1PV3dMQlESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzBXUDVQLXVmcFJmamJOcm1PV3dMQlESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzBXUDVQLXVmcFJmamJOcm1PV3dMQlESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CN0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNoBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "The Weeknd" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC0WP5P-ufpRfjbNrmOWwLBQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNsBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CNkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzBXUDVQLXVmcFJmamJOcm1PV3dMQlEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CNQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC0WP5P-ufpRfjbNrmOWwLBQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CNQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CNUBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "The Weeknd" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC0WP5P-ufpRfjbNrmOWwLBQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CNcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CNYBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CNMBENowGEkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "The Weeknd", + "navigationEndpoint": { + "clickTrackingParams": "CNMBENowGEkiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TheWeeknd", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC0WP5P-ufpRfjbNrmOWwLBQ", + "canonicalBaseUrl": "/@TheWeeknd" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCWu-IOxbeSD-MRM2Q87ZF0A", + "title": { "simpleText": "Think Before You Sleep" }, + "navigationEndpoint": { + "clickTrackingParams": "CMMBENowGEoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ThinkBeforeYouSleepYT", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWu-IOxbeSD-MRM2Q87ZF0A", + "canonicalBaseUrl": "/@ThinkBeforeYouSleepYT" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/fN1RADbsG5oWViWlVyqto0Xn37kXN3O7l7FWfxaflsyRF-tzdDncV4i4g46jySCR6SZSzEOZ=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/fN1RADbsG5oWViWlVyqto0Xn37kXN3O7l7FWfxaflsyRF-tzdDncV4i4g46jySCR6SZSzEOZ=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "\n\n\nIf you would like to make a topic request, then send an email to thinkbeforeyousleeprequests@gmail.com\n\nTopic requests should include an article, TV show, Movie, or Twitch Streamer, YouTube video/channel. Please be as specific as possible as to where the source material is. For example, if it's a TV show, I need to know what season and what episode. If you are requesting a video that is longer than 10 minutes, please include relevant time stamps to interesting things that were said during the video.\n\nThank you for your help.\n\nIf you have business dealings with me please use the business e-mail provided in the \"Details\" section below. Do not use the request e-mail because your message might not be seen. Any e-mails sent to the business e-mail that have nothing to do with business will be ignored.\n\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Think Before You Sleep", + "navigationEndpoint": { + "clickTrackingParams": "CMMBENowGEoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ThinkBeforeYouSleepYT", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWu-IOxbeSD-MRM2Q87ZF0A", + "canonicalBaseUrl": "/@ThinkBeforeYouSleepYT" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "905K subscribers" } + }, + "simpleText": "905K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CMMBENowGEoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { + "simpleText": "@ThinkBeforeYouSleepYT" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCWu-IOxbeSD-MRM2Q87ZF0A", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CMQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Think Before You Sleep." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Think Before You Sleep." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Think Before You Sleep" + }, + "trackingParams": "CNIBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Think Before You Sleep" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Think Before You Sleep" + }, + "trackingParams": "CNEBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Think Before You Sleep" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Think Before You Sleep" + }, + "trackingParams": "CNABEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Think Before You Sleep" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CMgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CMgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CMgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1d1LUlPeGJlU0QtTVJNMlE4N1pGMEESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1d1LUlPeGJlU0QtTVJNMlE4N1pGMEESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1d1LUlPeGJlU0QtTVJNMlE4N1pGMEESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CM0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMoBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Think Before You Sleep" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCWu-IOxbeSD-MRM2Q87ZF0A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMsBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CMkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1d1LUlPeGJlU0QtTVJNMlE4N1pGMEEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CMQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCWu-IOxbeSD-MRM2Q87ZF0A"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CMQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CMUBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "Think Before You Sleep" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCWu-IOxbeSD-MRM2Q87ZF0A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CMcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CMYBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CMMBENowGEoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Think Before You Sleep", + "navigationEndpoint": { + "clickTrackingParams": "CMMBENowGEoiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ThinkBeforeYouSleepYT", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCWu-IOxbeSD-MRM2Q87ZF0A", + "canonicalBaseUrl": "/@ThinkBeforeYouSleepYT" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCGexINHKQhnkwmMaympciYQ", + "title": { "simpleText": "Tim Bendzko" }, + "navigationEndpoint": { + "clickTrackingParams": "CLMBENowGEsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@timbendzko", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCGexINHKQhnkwmMaympciYQ", + "canonicalBaseUrl": "/@timbendzko" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/h3pJv5qBDKSjjNo8H998cZAdnXsF0S6vzf-MF9D8YZQoeOaMHrhON01TFrb0EcDcuhZgGfKjQw=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/h3pJv5qBDKSjjNo8H998cZAdnXsF0S6vzf-MF9D8YZQoeOaMHrhON01TFrb0EcDcuhZgGfKjQw=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { "text": "Jetzt hast du lang genug gewartet...\n" } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Tim Bendzko", + "navigationEndpoint": { + "clickTrackingParams": "CLMBENowGEsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@timbendzko", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCGexINHKQhnkwmMaympciYQ", + "canonicalBaseUrl": "/@timbendzko" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "297K subscribers" } + }, + "simpleText": "297K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CLMBENowGEsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@timbendzko" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCGexINHKQhnkwmMaympciYQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CLQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Tim Bendzko." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Tim Bendzko." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Tim Bendzko" + }, + "trackingParams": "CMIBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Tim Bendzko" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Tim Bendzko" + }, + "trackingParams": "CMEBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Tim Bendzko" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Tim Bendzko" + }, + "trackingParams": "CMABEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Tim Bendzko" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CLgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CLgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CLgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0dleElOSEtRaG5rd21NYXltcGNpWVESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0dleElOSEtRaG5rd21NYXltcGNpWVESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0dleElOSEtRaG5rd21NYXltcGNpWVESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CL0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLoBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Tim Bendzko" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCGexINHKQhnkwmMaympciYQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLsBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CLkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ0dleElOSEtRaG5rd21NYXltcGNpWVEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CLQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCGexINHKQhnkwmMaympciYQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CLQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CLUBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Tim Bendzko" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCGexINHKQhnkwmMaympciYQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CLcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CLYBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CLMBENowGEsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Tim Bendzko", + "navigationEndpoint": { + "clickTrackingParams": "CLMBENowGEsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@timbendzko", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCGexINHKQhnkwmMaympciYQ", + "canonicalBaseUrl": "/@timbendzko" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCtiObj3CsEAdNU6ZPWDsddQ", + "title": { "simpleText": "TOMORROW X TOGETHER OFFICIAL" }, + "navigationEndpoint": { + "clickTrackingParams": "CKMBENowGEwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TXT_bighit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCtiObj3CsEAdNU6ZPWDsddQ", + "canonicalBaseUrl": "/@TXT_bighit" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/qhmEoqhG9u8lCm3NgdJc1hJ4yZYBPCZ8l2J-ia6cf_gSsnuFLo1sM_NUmFn48oPRAiJIkNUo=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/qhmEoqhG9u8lCm3NgdJc1hJ4yZYBPCZ8l2J-ia6cf_gSsnuFLo1sM_NUmFn48oPRAiJIkNUo=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "#투모로우바이투게더 공식 유튜브 입니다.\nThis is the official YouTube for #TOMORROW_X_TOGETHER" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "TOMORROW X TOGETHER OFFICIAL", + "navigationEndpoint": { + "clickTrackingParams": "CKMBENowGEwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TXT_bighit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCtiObj3CsEAdNU6ZPWDsddQ", + "canonicalBaseUrl": "/@TXT_bighit" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "12.4 million subscribers" + } + }, + "simpleText": "12.4M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CKMBENowGEwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@TXT_bighit" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCtiObj3CsEAdNU6ZPWDsddQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CKQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to TOMORROW X TOGETHER OFFICIAL." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from TOMORROW X TOGETHER OFFICIAL." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for TOMORROW X TOGETHER OFFICIAL" + }, + "trackingParams": "CLIBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for TOMORROW X TOGETHER OFFICIAL" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for TOMORROW X TOGETHER OFFICIAL" + }, + "trackingParams": "CLEBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for TOMORROW X TOGETHER OFFICIAL" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for TOMORROW X TOGETHER OFFICIAL" + }, + "trackingParams": "CLABEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for TOMORROW X TOGETHER OFFICIAL" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CKgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CKgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CKgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3RpT2JqM0NzRUFkTlU2WlBXRHNkZFESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3RpT2JqM0NzRUFkTlU2WlBXRHNkZFESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3RpT2JqM0NzRUFkTlU2WlBXRHNkZFESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CK0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKoBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "TOMORROW X TOGETHER OFFICIAL" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCtiObj3CsEAdNU6ZPWDsddQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKsBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CKkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3RpT2JqM0NzRUFkTlU2WlBXRHNkZFEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CKQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCtiObj3CsEAdNU6ZPWDsddQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CKQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CKUBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "TOMORROW X TOGETHER OFFICIAL" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCtiObj3CsEAdNU6ZPWDsddQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CKcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CKYBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CKMBENowGEwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "TOMORROW X TOGETHER OFFICIAL", + "navigationEndpoint": { + "clickTrackingParams": "CKMBENowGEwiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TXT_bighit", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCtiObj3CsEAdNU6ZPWDsddQ", + "canonicalBaseUrl": "/@TXT_bighit" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCZem9C5rWjSb0B8tV3k2EZg", + "title": { "simpleText": "Torque Test Channel" }, + "navigationEndpoint": { + "clickTrackingParams": "CJMBENowGE0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TorqueTestChannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCZem9C5rWjSb0B8tV3k2EZg", + "canonicalBaseUrl": "/@TorqueTestChannel" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_n3V8UR7V7bO4lbA8IhEYHO_sYqEwV3eByDzoB0RF8B_Q=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_n3V8UR7V7bO4lbA8IhEYHO_sYqEwV3eByDzoB0RF8B_Q=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "On the Torque Test Channel our aim is to test old-school to modern tools on a level playing field to compare or reveal performance figures in understandable terms in order to shine some light on recent marketing trends.\n\nFAQ:\nYou should use ($120-250) battery on (X) brand! \nIf they package their kit that way. For now, they rate the tool's specs with the battery they provide so we test vs that. \n\nWhat air set-up do you have?\nIR 80gal compressor - 20ft 1\" cast iron pipe to 3ft 3/4\" pipe threaded into wall regulator (48 CFM max), 3/8\" NPT out to 3/8\" 25ft hose. 1/4\" Milton V Hi-Flo Pro fittings and Milton 5in1 hi-flo coupler (67 CFM max)\n\nWhy do you test up to 15 seconds (that's too long, too short): \nSee ep1, there's a standard for impact testing. \n\nCan I send you a tool and you send back?\nYes! TorqueTestChannel at gmail.com\n\nWhy not use a torque wrench?\nSee ep3 on nut-busting. \n\nIt's technically \"pounds-foot\" though\nWe tried saying it that way, it's pretty laborsome after awhile. \n\n\n\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Torque Test Channel", + "navigationEndpoint": { + "clickTrackingParams": "CJMBENowGE0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TorqueTestChannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCZem9C5rWjSb0B8tV3k2EZg", + "canonicalBaseUrl": "/@TorqueTestChannel" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "467K subscribers" } + }, + "simpleText": "467K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CJMBENowGE0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { + "simpleText": "@TorqueTestChannel" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCZem9C5rWjSb0B8tV3k2EZg", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CJQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Torque Test Channel." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Torque Test Channel." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Torque Test Channel" + }, + "trackingParams": "CKIBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Torque Test Channel" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Torque Test Channel" + }, + "trackingParams": "CKEBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Torque Test Channel" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Torque Test Channel" + }, + "trackingParams": "CKABEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Torque Test Channel" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CJgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CJgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CJgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1plbTlDNXJXalNiMEI4dFYzazJFWmcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1plbTlDNXJXalNiMEI4dFYzazJFWmcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1plbTlDNXJXalNiMEI4dFYzazJFWmcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CJ0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJoBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Torque Test Channel" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCZem9C5rWjSb0B8tV3k2EZg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJsBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CJkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1plbTlDNXJXalNiMEI4dFYzazJFWmcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CJQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCZem9C5rWjSb0B8tV3k2EZg"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CJQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CJUBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "Torque Test Channel" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCZem9C5rWjSb0B8tV3k2EZg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CJcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CJYBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CJMBENowGE0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Torque Test Channel", + "navigationEndpoint": { + "clickTrackingParams": "CJMBENowGE0iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TorqueTestChannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCZem9C5rWjSb0B8tV3k2EZg", + "canonicalBaseUrl": "/@TorqueTestChannel" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCC9192yGQD25eBZgFZ84MPw", + "title": { "simpleText": "Trailerpark" }, + "navigationEndpoint": { + "clickTrackingParams": "CIMBENowGE4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@trailerpark", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCC9192yGQD25eBZgFZ84MPw", + "canonicalBaseUrl": "/@trailerpark" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_lYwM_1_M7MxhF_wY2lAem2tZM-P_cVA9JgaQeYewaeyw=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_lYwM_1_M7MxhF_wY2lAem2tZM-P_cVA9JgaQeYewaeyw=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Trailerpark ist das Sprachrohr für eine Jugend geprägt von Komasaufen, Youporn-Clips und exzessivem Nihilismus. Musik für Hartz4-Empfänger, Kinder mit Kindern und Minderbemittelte mit RTL-Realityshow-Erfahrung." + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CIMBENowGE4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@trailerpark", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCC9192yGQD25eBZgFZ84MPw", + "canonicalBaseUrl": "/@trailerpark" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "270K subscribers" } + }, + "simpleText": "270K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CIMBENowGE4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@trailerpark" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCC9192yGQD25eBZgFZ84MPw", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CIQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Trailerpark." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Trailerpark." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Trailerpark" + }, + "trackingParams": "CJIBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Trailerpark" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Trailerpark" + }, + "trackingParams": "CJEBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Trailerpark" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Trailerpark" + }, + "trackingParams": "CJABEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Trailerpark" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CIgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "command": { + "clickTrackingParams": "CIgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CIgBEJf5ASITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcFMhxQUkVGRVJFTkNFX0FMTF9OT1RJRklDQVRJT05T", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0M5MTkyeUdRRDI1ZUJaZ0ZaODRNUHcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI8BEOu1BBgEIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcFMhJQUkVGRVJFTkNFX0RFRkFVTFQ=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0M5MTkyeUdRRDI1ZUJaZ0ZaODRNUHcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI4BEOy1BBgFIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcFMhtQUkVGRVJFTkNFX05PX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ0M5MTkyeUdRRDI1ZUJaZ0ZaODRNUHcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CI0BEO21BBgGIhMIl9Ot0se8igMVAm96BR3lwDcF", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIoBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Trailerpark" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCC9192yGQD25eBZgFZ84MPw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIwBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIsBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CIkBENuLChgHIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ0M5MTkyeUdRRDI1ZUJaZ0ZaODRNUHcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CIQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCC9192yGQD25eBZgFZ84MPw"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CIQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIQBEJsrIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CIUBEMY4IhMIl9Ot0se8igMVAm96BR3lwDcF", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Trailerpark" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcFMhFzdWJzLWNoYW5uZWwtbGlzdA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCC9192yGQD25eBZgFZ84MPw" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CIcBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CIYBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CIMBENowGE4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "longBylineText": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CIMBENowGE4iEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@trailerpark", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCC9192yGQD25eBZgFZ84MPw", + "canonicalBaseUrl": "/@trailerpark" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCcmxOGYGF51T1XsqQLewGtQ", + "title": { "simpleText": "Trash Taste" }, + "navigationEndpoint": { + "clickTrackingParams": "CHMQ2jAYTyITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TrashTaste", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCcmxOGYGF51T1XsqQLewGtQ", + "canonicalBaseUrl": "/@TrashTaste" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_kMwLH77YtyKHVCbKrQfzYYFSc4IQ5e5mILkvgvXSP0UpA=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_kMwLH77YtyKHVCbKrQfzYYFSc4IQ5e5mILkvgvXSP0UpA=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "A podcast with attitude that hits different." + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Trash Taste", + "navigationEndpoint": { + "clickTrackingParams": "CHMQ2jAYTyITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TrashTaste", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCcmxOGYGF51T1XsqQLewGtQ", + "canonicalBaseUrl": "/@TrashTaste" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.66 million subscribers" + } + }, + "simpleText": "1.66M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CHMQ2jAYTyITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { "simpleText": "@TrashTaste" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCcmxOGYGF51T1XsqQLewGtQ", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CHQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Trash Taste." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Trash Taste." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Trash Taste" + }, + "trackingParams": "CIIBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Trash Taste" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Trash Taste" + }, + "trackingParams": "CIEBEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Trash Taste" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Trash Taste" + }, + "trackingParams": "CIABEPBbIhMIl9Ot0se8igMVAm96BR3lwDcF", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Trash Taste" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CHgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "command": { + "clickTrackingParams": "CHgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CHgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CH8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwUyHFBSRUZFUkVOQ0VfQUxMX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2NteE9HWUdGNTFUMVhzcVFMZXdHdFESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CH8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CH4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwUyElBSRUZFUkVOQ0VfREVGQVVMVA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2NteE9HWUdGNTFUMVhzcVFMZXdHdFESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CH4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CH0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwUyG1BSRUZFUkVOQ0VfTk9fTk9USUZJQ0FUSU9OUw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2NteE9HWUdGNTFUMVhzcVFMZXdHdFESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CH0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CHkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CHoQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Trash Taste" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CHwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCcmxOGYGF51T1XsqQLewGtQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CHwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CHsQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CHkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ2NteE9HWUdGNTFUMVhzcVFMZXdHdFEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CHQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCcmxOGYGF51T1XsqQLewGtQ"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CHQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CHQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CHUQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Trash Taste" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CHcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCcmxOGYGF51T1XsqQLewGtQ" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CHcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CHYQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CHMQ2jAYTyITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "longBylineText": { + "runs": [ + { + "text": "Trash Taste", + "navigationEndpoint": { + "clickTrackingParams": "CHMQ2jAYTyITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TrashTaste", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCcmxOGYGF51T1XsqQLewGtQ", + "canonicalBaseUrl": "/@TrashTaste" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCsQBsZJltmLzlsJNG7HevBg", + "title": { "simpleText": "Tyler, The Creator" }, + "navigationEndpoint": { + "clickTrackingParams": "CGMQ2jAYUCITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TylerTheCreator", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCsQBsZJltmLzlsJNG7HevBg", + "canonicalBaseUrl": "/@TylerTheCreator" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/-1Bt8eufq601KzmA0Rk1yrIzz372UDDeBkIpWytlztkcAyh1w6g2bNfXVnR6hadnezvUCq0XICA=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/-1Bt8eufq601KzmA0Rk1yrIzz372UDDeBkIpWytlztkcAyh1w6g2bNfXVnR6hadnezvUCq0XICA=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "CHROMAKOPIA is out now: https://tylerthecreator.lnk.to/chromakopia \n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Tyler, The Creator", + "navigationEndpoint": { + "clickTrackingParams": "CGMQ2jAYUCITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TylerTheCreator", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCsQBsZJltmLzlsJNG7HevBg", + "canonicalBaseUrl": "/@TylerTheCreator" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "6.55 million subscribers" + } + }, + "simpleText": "6.55M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CGMQ2jAYUCITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@TylerTheCreator" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCsQBsZJltmLzlsJNG7HevBg", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CGQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Tyler, The Creator." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Tyler, The Creator." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Tyler, The Creator" + }, + "trackingParams": "CHIQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Tyler, The Creator" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Tyler, The Creator" + }, + "trackingParams": "CHEQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Tyler, The Creator" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Tyler, The Creator" + }, + "trackingParams": "CHAQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Tyler, The Creator" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CGgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "command": { + "clickTrackingParams": "CGgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CGgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CG8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwUyHFBSRUZFUkVOQ0VfQUxMX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3NRQnNaSmx0bUx6bHNKTkc3SGV2QmcSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CG8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CG4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwUyElBSRUZFUkVOQ0VfREVGQVVMVA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3NRQnNaSmx0bUx6bHNKTkc3SGV2QmcSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CG4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CG0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwUyG1BSRUZFUkVOQ0VfTk9fTk9USUZJQ0FUSU9OUw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ3NRQnNaSmx0bUx6bHNKTkc3SGV2QmcSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CG0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CGkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CGoQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Tyler, The Creator" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CGwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCsQBsZJltmLzlsJNG7HevBg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CGwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CGsQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CGkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ3NRQnNaSmx0bUx6bHNKTkc3SGV2QmcgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CGQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCsQBsZJltmLzlsJNG7HevBg"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CGQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CGQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CGUQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "Tyler, The Creator" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CGcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCsQBsZJltmLzlsJNG7HevBg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CGcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CGYQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CGMQ2jAYUCITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "longBylineText": { + "runs": [ + { + "text": "Tyler, The Creator", + "navigationEndpoint": { + "clickTrackingParams": "CGMQ2jAYUCITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@TylerTheCreator", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCsQBsZJltmLzlsJNG7HevBg", + "canonicalBaseUrl": "/@TylerTheCreator" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC_7HfGUn1OVNlu0p8F2Cmwg", + "title": { "simpleText": "Wincent Weiss" }, + "navigationEndpoint": { + "clickTrackingParams": "CFMQ2jAYUSITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@WincentWeissMusic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC_7HfGUn1OVNlu0p8F2Cmwg", + "canonicalBaseUrl": "/@WincentWeissMusic" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ZRbrlo_XK-wxrLumtq8gcBrhDCBDoqg2VgEVjHC4iNnPtXBk3o_kGGorlom_tXgmPwqmkzOVgw=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ZRbrlo_XK-wxrLumtq8gcBrhDCBDoqg2VgEVjHC4iNnPtXBk3o_kGGorlom_tXgmPwqmkzOVgw=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Wir würden uns sehr freuen, wenn ihr uns bei unserer Tour besucht :)\nhttps://www.ticketmaster.de/artist/wincent-weiss-tickets/977408?camefrom=BTA\n\nEventim:\nhttps://www.eventim.de/artist/wincent-weiss/wincent-weiss-tour-2025-3471325/\n\nHier geht es zu unserem Merchshop:\nhttps://shop.wincentweiss.de\n\nKanal abonnieren: http://bit.ly/WincentWeissYT\n\nFolgt mir auch hier:\nInstagram: https://www.instagram.com/wincentweiss/\nFacebook: http://www.facebook.com/WincentWeissOfficial\nSpotify: https://play.spotify.com/artist/12xme1fwd3iGEW7rF9b6tp\nTwitter: https://twitter.com/Wincent_Weiss\nSnapchat: Wincenweiss\n\n#Wlog #Wincent Weiss \n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Wincent Weiss", + "navigationEndpoint": { + "clickTrackingParams": "CFMQ2jAYUSITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@WincentWeissMusic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC_7HfGUn1OVNlu0p8F2Cmwg", + "canonicalBaseUrl": "/@WincentWeissMusic" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "450K subscribers" } + }, + "simpleText": "450K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CFMQ2jAYUSITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { + "simpleText": "@WincentWeissMusic" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC_7HfGUn1OVNlu0p8F2Cmwg", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CFQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Wincent Weiss." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Wincent Weiss." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Wincent Weiss" + }, + "trackingParams": "CGIQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Wincent Weiss" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Wincent Weiss" + }, + "trackingParams": "CGEQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Wincent Weiss" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Wincent Weiss" + }, + "trackingParams": "CGAQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Wincent Weiss" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CFgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "command": { + "clickTrackingParams": "CFgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CFgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwUyHFBSRUZFUkVOQ0VfQUxMX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ183SGZHVW4xT1ZObHUwcDhGMkNtd2cSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CF8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwUyElBSRUZFUkVOQ0VfREVGQVVMVA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ183SGZHVW4xT1ZObHUwcDhGMkNtd2cSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CF4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwUyG1BSRUZFUkVOQ0VfTk9fTk9USUZJQ0FUSU9OUw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ183SGZHVW4xT1ZObHUwcDhGMkNtd2cSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CF0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CFkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CFoQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Wincent Weiss" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CFwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC_7HfGUn1OVNlu0p8F2Cmwg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CFwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CFsQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CFkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ183SGZHVW4xT1ZObHUwcDhGMkNtd2cgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CFQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC_7HfGUn1OVNlu0p8F2Cmwg"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CFQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CFQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CFUQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Wincent Weiss" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CFcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC_7HfGUn1OVNlu0p8F2Cmwg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CFcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CFYQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CFMQ2jAYUSITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "longBylineText": { + "runs": [ + { + "text": "Wincent Weiss", + "navigationEndpoint": { + "clickTrackingParams": "CFMQ2jAYUSITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@WincentWeissMusic", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC_7HfGUn1OVNlu0p8F2Cmwg", + "canonicalBaseUrl": "/@WincentWeissMusic" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC7QteRlErpm27bkZ6izFwKg", + "title": { "simpleText": "World Friends" }, + "navigationEndpoint": { + "clickTrackingParams": "CEMQ2jAYUiITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/Oj_xuNQlHyzkKYA24quOadUj_jMlGVBQ43LCLt6Nk8gFFcFMPKZnxQASsXI6CX_n10he4Tc09A=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Hello! This is World Friends :)\n\nSponsor a video: worldfriends.kr@gmail.com\n\n제작 : 어썸엔터테인먼트 (주)\nⓒ2024. Awesome Entertainment All rights reserved.\n\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "World Friends", + "navigationEndpoint": { + "clickTrackingParams": "CEMQ2jAYUiITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "1.54 million subscribers" + } + }, + "simpleText": "1.54M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CEMQ2jAYUiITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { + "simpleText": "@worldfriends77" + }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC7QteRlErpm27bkZ6izFwKg", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CEQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to World Friends." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from World Friends." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for World Friends" + }, + "trackingParams": "CFIQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for World Friends" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for World Friends" + }, + "trackingParams": "CFEQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for World Friends" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for World Friends" + }, + "trackingParams": "CFAQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for World Friends" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CEgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "command": { + "clickTrackingParams": "CEgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CEgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CE8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwUyHFBSRUZFUkVOQ0VfQUxMX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzdRdGVSbEVycG0yN2JrWjZpekZ3S2cSAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CE8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CE4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwUyElBSRUZFUkVOQ0VfREVGQVVMVA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzdRdGVSbEVycG0yN2JrWjZpekZ3S2cSAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CE4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CE0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwUyG1BSRUZFUkVOQ0VfTk9fTk9USUZJQ0FUSU9OUw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzdRdGVSbEVycG0yN2JrWjZpekZ3S2cSAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CE0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CEoQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "World Friends" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CEwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC7QteRlErpm27bkZ6izFwKg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CEwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CEsQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CEkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzdRdGVSbEVycG0yN2JrWjZpekZ3S2cgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CEQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC7QteRlErpm27bkZ6izFwKg"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CEQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CEUQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "World Friends" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CEcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC7QteRlErpm27bkZ6izFwKg" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CEcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CEYQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CEMQ2jAYUiITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "longBylineText": { + "runs": [ + { + "text": "World Friends", + "navigationEndpoint": { + "clickTrackingParams": "CEMQ2jAYUiITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@worldfriends77", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC7QteRlErpm27bkZ6izFwKg", + "canonicalBaseUrl": "/@worldfriends77" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCiSj5lGGYhpIxoWrwotQBEA", + "title": { + "simpleText": "X-Plane. Org Videos and Reviews" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDMQ2jAYUyITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@x-plane", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCiSj5lGGYhpIxoWrwotQBEA", + "canonicalBaseUrl": "/@x-plane" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_m0XEcsPovACCjGbdOfwwtsd03OWAxzFKMIa8xrHONFSw=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_m0XEcsPovACCjGbdOfwwtsd03OWAxzFKMIa8xrHONFSw=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Official Channel for X-Plane.org \n\n\n\n\n\n\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "X-Plane. Org Videos and Reviews", + "navigationEndpoint": { + "clickTrackingParams": "CDMQ2jAYUyITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@x-plane", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCiSj5lGGYhpIxoWrwotQBEA", + "canonicalBaseUrl": "/@x-plane" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "8.13K subscribers" } + }, + "simpleText": "8.13K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "subscriberCountText": { "simpleText": "@x-plane" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCiSj5lGGYhpIxoWrwotQBEA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CDQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to X-Plane. Org Videos and Reviews." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from X-Plane. Org Videos and Reviews." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for X-Plane. Org Videos and Reviews" + }, + "trackingParams": "CEIQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for X-Plane. Org Videos and Reviews" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for X-Plane. Org Videos and Reviews" + }, + "trackingParams": "CEEQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for X-Plane. Org Videos and Reviews" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for X-Plane. Org Videos and Reviews" + }, + "trackingParams": "CEAQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for X-Plane. Org Videos and Reviews" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CDgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "command": { + "clickTrackingParams": "CDgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CDgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CD8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwUyHFBSRUZFUkVOQ0VfQUxMX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2lTajVsR0dZaHBJeG9XcndvdFFCRUESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CD8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CD4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwUyElBSRUZFUkVOQ0VfREVGQVVMVA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2lTajVsR0dZaHBJeG9XcndvdFFCRUESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CD4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CD0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwUyG1BSRUZFUkVOQ0VfTk9fTk9USUZJQ0FUSU9OUw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ2lTajVsR0dZaHBJeG9XcndvdFFCRUESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CD0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CDoQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "X-Plane. Org Videos and Reviews" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CDwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCiSj5lGGYhpIxoWrwotQBEA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CDwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CDsQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CDkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ2lTajVsR0dZaHBJeG9XcndvdFFCRUEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CDQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCiSj5lGGYhpIxoWrwotQBEA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CDQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CDUQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { + "text": "X-Plane. Org Videos and Reviews" + }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CDcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCiSj5lGGYhpIxoWrwotQBEA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CDcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CDYQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CDMQ2jAYUyITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "longBylineText": { + "runs": [ + { + "text": "X-Plane. Org Videos and Reviews", + "navigationEndpoint": { + "clickTrackingParams": "CDMQ2jAYUyITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@x-plane", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCiSj5lGGYhpIxoWrwotQBEA", + "canonicalBaseUrl": "/@x-plane" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC0sytTpk1adR_cfjHhiJ08Q", + "title": { "simpleText": "ZacksJerryRig" }, + "navigationEndpoint": { + "clickTrackingParams": "CCMQ2jAYVCITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ZacksJerryRig", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC0sytTpk1adR_cfjHhiJ08Q", + "canonicalBaseUrl": "/@ZacksJerryRig" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_mYOtq_5qxOdFfAH-RIOtdUIj7Sfuak--6Ir2FKWZ2FUA=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/ytc/AIdro_mYOtq_5qxOdFfAH-RIOtdUIj7Sfuak--6Ir2FKWZ2FUA=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Primary Channel: YouTube.com/user/JerryRigEverything\n\nMy primary channel is for my projects. ZacksJerryRig, is for my travels, vlogs, and things that I just find interesting." + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "ZacksJerryRig", + "navigationEndpoint": { + "clickTrackingParams": "CCMQ2jAYVCITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ZacksJerryRig", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC0sytTpk1adR_cfjHhiJ08Q", + "canonicalBaseUrl": "/@ZacksJerryRig" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "234K subscribers" } + }, + "simpleText": "234K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "CHECK_CIRCLE_THICK" }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CCMQ2jAYVCITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "accessibilityData": { "label": "Verified" } + } + } + ], + "subscriberCountText": { "simpleText": "@ZacksJerryRig" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC0sytTpk1adR_cfjHhiJ08Q", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CCQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to ZacksJerryRig." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from ZacksJerryRig." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for ZacksJerryRig" + }, + "trackingParams": "CDIQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for ZacksJerryRig" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for ZacksJerryRig" + }, + "trackingParams": "CDEQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for ZacksJerryRig" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for ZacksJerryRig" + }, + "trackingParams": "CDAQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for ZacksJerryRig" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CCgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "command": { + "clickTrackingParams": "CCgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CCgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CC8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwUyHFBSRUZFUkVOQ0VfQUxMX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzBzeXRUcGsxYWRSX2NmakhoaUowOFESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CC8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CC4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwUyElBSRUZFUkVOQ0VfREVGQVVMVA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzBzeXRUcGsxYWRSX2NmakhoaUowOFESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CC4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CC0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwUyG1BSRUZFUkVOQ0VfTk9fTk9USUZJQ0FUSU9OUw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzBzeXRUcGsxYWRSX2NmakhoaUowOFESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CC0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CCkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CCoQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "ZacksJerryRig" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CCwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC0sytTpk1adR_cfjHhiJ08Q" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CCwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CCsQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CCkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzBzeXRUcGsxYWRSX2NmakhoaUowOFEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CCQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC0sytTpk1adR_cfjHhiJ08Q"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CCQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CCQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CCUQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "ZacksJerryRig" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CCcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC0sytTpk1adR_cfjHhiJ08Q" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CCcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CCYQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CCMQ2jAYVCITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "longBylineText": { + "runs": [ + { + "text": "ZacksJerryRig", + "navigationEndpoint": { + "clickTrackingParams": "CCMQ2jAYVCITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ZacksJerryRig", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC0sytTpk1adR_cfjHhiJ08Q", + "canonicalBaseUrl": "/@ZacksJerryRig" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UC3PdiRW5dUA4V70ueeR1eHA", + "title": { "simpleText": "zayn" }, + "navigationEndpoint": { + "clickTrackingParams": "CBMQ2jAYVSITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Zayn", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC3PdiRW5dUA4V70ueeR1eHA", + "canonicalBaseUrl": "/@Zayn" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/pv17akWLCW5NxKTbRyBNIJo9K6i0aXk0_vHUU1pIj5H73Q_UgYquVVB2-p0GoAxFMBnW9-Ij6w=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/pv17akWLCW5NxKTbRyBNIJo9K6i0aXk0_vHUU1pIj5H73Q_UgYquVVB2-p0GoAxFMBnW9-Ij6w=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { "text": "ROOM UNDER THE STAIRS\nOUT NOW\n\n" } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "zayn", + "navigationEndpoint": { + "clickTrackingParams": "CBMQ2jAYVSITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Zayn", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC3PdiRW5dUA4V70ueeR1eHA", + "canonicalBaseUrl": "/@Zayn" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { + "label": "15.9 million subscribers" + } + }, + "simpleText": "15.9M subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CBMQ2jAYVSITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@Zayn" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UC3PdiRW5dUA4V70ueeR1eHA", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CBQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to zayn." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from zayn." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for zayn" + }, + "trackingParams": "CCIQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for zayn" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for zayn" + }, + "trackingParams": "CCEQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for zayn" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for zayn" + }, + "trackingParams": "CCAQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for zayn" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CBgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "command": { + "clickTrackingParams": "CBgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CBgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CB8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwUyHFBSRUZFUkVOQ0VfQUxMX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzNQZGlSVzVkVUE0VjcwdWVlUjFlSEESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CB8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CB4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwUyElBSRUZFUkVOQ0VfREVGQVVMVA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzNQZGlSVzVkVUE0VjcwdWVlUjFlSEESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CB4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CB0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwUyG1BSRUZFUkVOQ0VfTk9fTk9USUZJQ0FUSU9OUw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQzNQZGlSVzVkVUE0VjcwdWVlUjFlSEESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CB0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CBkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CBoQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "zayn" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CBwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC3PdiRW5dUA4V70ueeR1eHA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CBwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CBsQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CBkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQzNQZGlSVzVkVUE0VjcwdWVlUjFlSEEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CBQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UC3PdiRW5dUA4V70ueeR1eHA"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CBQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CBQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CBUQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "zayn" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CBcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UC3PdiRW5dUA4V70ueeR1eHA" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CBcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CBYQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CBMQ2jAYVSITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "longBylineText": { + "runs": [ + { + "text": "zayn", + "navigationEndpoint": { + "clickTrackingParams": "CBMQ2jAYVSITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Zayn", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC3PdiRW5dUA4V70ueeR1eHA", + "canonicalBaseUrl": "/@Zayn" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + }, + { + "channelRenderer": { + "channelId": "UCQam2rlpwMx1YlvBN8PSS2A", + "title": { "simpleText": "Zoe Wees" }, + "navigationEndpoint": { + "clickTrackingParams": "CAMQ2jAYViITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@zoewees", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQam2rlpwMx1YlvBN8PSS2A", + "canonicalBaseUrl": "/@zoewees" + } + }, + "thumbnail": { + "thumbnails": [ + { + "url": "//yt3.googleusercontent.com/Jo4JxTnN7Pa_rA5-BBEHEPVAtNw9eqJVGdCNH9c6DNmzl5EJZIcg9048X-BYmqEJlSJo8Zjg=s88-c-k-c0x00ffffff-no-rj-mo", + "width": 88, + "height": 88 + }, + { + "url": "//yt3.googleusercontent.com/Jo4JxTnN7Pa_rA5-BBEHEPVAtNw9eqJVGdCNH9c6DNmzl5EJZIcg9048X-BYmqEJlSJo8Zjg=s176-c-k-c0x00ffffff-no-rj-mo", + "width": 176, + "height": 176 + } + ] + }, + "descriptionSnippet": { + "runs": [ + { + "text": "'Therapy’ the debut album out now 🤍\nhttps://bio.to/zoewees\n" + } + ] + }, + "shortBylineText": { + "runs": [ + { + "text": "Zoe Wees", + "navigationEndpoint": { + "clickTrackingParams": "CAMQ2jAYViITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@zoewees", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQam2rlpwMx1YlvBN8PSS2A", + "canonicalBaseUrl": "/@zoewees" + } + } + } + ] + }, + "videoCountText": { + "accessibility": { + "accessibilityData": { "label": "731K subscribers" } + }, + "simpleText": "731K subscribers" + }, + "subscriptionButton": { "subscribed": true }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "AUDIO_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Official Artist Channel", + "trackingParams": "CAMQ2jAYViITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "accessibilityData": { + "label": "Official Artist Channel" + } + } + } + ], + "subscriberCountText": { "simpleText": "@zoewees" }, + "subscribeButton": { + "subscribeButtonRenderer": { + "buttonText": { "runs": [{ "text": "Subscribed" }] }, + "subscribed": true, + "enabled": true, + "type": "FREE", + "channelId": "UCQam2rlpwMx1YlvBN8PSS2A", + "showPreferences": false, + "subscribedButtonText": { + "runs": [{ "text": "Subscribed" }] + }, + "unsubscribedButtonText": { + "runs": [{ "text": "Subscribe" }] + }, + "trackingParams": "CAQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "unsubscribeButtonText": { + "runs": [{ "text": "Unsubscribe" }] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to Zoe Wees." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from Zoe Wees." + } + }, + "notificationPreferenceButton": { + "subscriptionNotificationToggleButtonRenderer": { + "states": [ + { + "stateId": 2, + "nextStateId": 2, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "accessibility": { + "label": "Current setting is all notifications. Tap to change your notification setting for Zoe Wees" + }, + "trackingParams": "CBIQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is all notifications. Tap to change your notification setting for Zoe Wees" + } + } + } + } + }, + { + "stateId": 3, + "nextStateId": 3, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "accessibility": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Zoe Wees" + }, + "trackingParams": "CBEQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is personalized notifications. Tap to change your notification setting for Zoe Wees" + } + } + } + } + }, + { + "stateId": 0, + "nextStateId": 0, + "state": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "accessibility": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Zoe Wees" + }, + "trackingParams": "CBAQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "accessibilityData": { + "accessibilityData": { + "label": "Current setting is receive no notifications. Tap to change your notification setting for Zoe Wees" + } + } + } + } + } + ], + "currentStateId": 3, + "trackingParams": "CAgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "command": { + "clickTrackingParams": "CAgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAgQl_kBIhMIl9Ot0se8igMVAm96BR3lwDcF", + "openPopupAction": { + "popup": { + "menuPopupRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "All" + }, + "icon": { + "iconType": "NOTIFICATIONS_ACTIVE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CA8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwUyHFBSRUZFUkVOQ0VfQUxMX05PVElGSUNBVElPTlM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1FhbTJybHB3TXgxWWx2Qk44UFNTMkESAggCGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CA8Q67UEGAQiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "Personalized" + }, + "icon": { + "iconType": "NOTIFICATIONS_NONE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CA4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwUyElBSRUZFUkVOQ0VfREVGQVVMVA==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1FhbTJybHB3TXgxWWx2Qk44UFNTMkESAggBGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CA4Q7LUEGAUiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": true + } + }, + { + "menuServiceItemRenderer": { + "text": { + "simpleText": "None" + }, + "icon": { + "iconType": "NOTIFICATIONS_OFF" + }, + "serviceEndpoint": { + "clickTrackingParams": "CA0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwUyG1BSRUZFUkVOQ0VfTk9fTk9USUZJQ0FUSU9OUw==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/notification/modify_channel_preference" + } + }, + "modifyChannelNotificationPreferenceEndpoint": { + "params": "ChhVQ1FhbTJybHB3TXgxWWx2Qk44UFNTMkESAggDGAAgBFIICgIIARIAGAA%3D" + } + }, + "trackingParams": "CA0Q7bUEGAYiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "isSelected": false + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "icon": { + "iconType": "PERSON_MINUS" + }, + "serviceEndpoint": { + "clickTrackingParams": "CAkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CAoQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Zoe Wees" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CAwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCQam2rlpwMx1YlvBN8PSS2A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CAwQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CAsQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + }, + "trackingParams": "CAkQ24sKGAciEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + } + ] + } + }, + "popupType": "DROPDOWN" + } + } + ] + } + }, + "targetId": "notification-bell", + "secondaryIcon": { "iconType": "EXPAND_MORE" } + } + }, + "subscribedEntityKey": "EhhVQ1FhbTJybHB3TXgxWWx2Qk44UFNTMkEgMygB", + "onSubscribeEndpoints": [ + { + "clickTrackingParams": "CAQQmysiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/subscribe" + } + }, + "subscribeEndpoint": { + "channelIds": ["UCQam2rlpwMx1YlvBN8PSS2A"], + "params": "EgIIARgA" + } + } + ], + "onUnsubscribeEndpoints": [ + { + "clickTrackingParams": "CAQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAQQmysiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CAUQxjgiEwiX063Sx7yKAxUCb3oFHeXANwU=", + "dialogMessages": [ + { + "runs": [ + { "text": "Unsubscribe from " }, + { "text": "Zoe Wees" }, + { "text": "?" } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { "text": "Unsubscribe" } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CAcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwUyEXN1YnMtY2hhbm5lbC1saXN0", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/subscription/unsubscribe" + } + }, + "unsubscribeEndpoint": { + "channelIds": [ + "UCQam2rlpwMx1YlvBN8PSS2A" + ], + "params": "CgIIARgA" + } + }, + "accessibility": { + "label": "Unsubscribe" + }, + "trackingParams": "CAcQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [{ "text": "Cancel" }] + }, + "accessibility": { + "label": "Cancel" + }, + "trackingParams": "CAYQ8FsiEwiX063Sx7yKAxUCb3oFHeXANwU=" + } + }, + "primaryIsCancel": false + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ] + } + }, + "trackingParams": "CAMQ2jAYViITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "longBylineText": { + "runs": [ + { + "text": "Zoe Wees", + "navigationEndpoint": { + "clickTrackingParams": "CAMQ2jAYViITCJfTrdLHvIoDFQJvegUd5cA3BQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@zoewees", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQam2rlpwMx1YlvBN8PSS2A", + "canonicalBaseUrl": "/@zoewees" + } + } + } + ] + }, + "channelRendererStyle": "CHANNEL_RENDERER_STYLE__NARROW_THUMBNAIL_SPACING" + } + } + ] + } + }, + "trackingParams": "CAIQ3BwYACITCJfTrdLHvIoDFQJvegUd5cA3BQ==" + } + } + ], + "trackingParams": "CAEQuy8YWCITCJfTrdLHvIoDFQJvegUd5cA3BQ==" + } + } + ], + "slot": "RELOAD_CONTINUATION_SLOT_BODY" + } + } + ], + "frameworkUpdates": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EhhVQ3BPbE9lUWpqN0VzVm5EaDN6dUNnc0EgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3BPbE9lUWpqN0VzVm5EaDN6dUNnc0EgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1NSQ200ekh1RVRDUzdqSFdNaVdOb2cgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1NSQ200ekh1RVRDUzdqSFdNaVdOb2cgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3NSTTBZQl9kYWJ0RVBHUFRLby1nY3cgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3NSTTBZQl9kYWJ0RVBHUFRLby1nY3cgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzlHdFNMZWtzZks0eXVKX2cxbGdRYmcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzlHdFNMZWtzZks0eXVKX2cxbGdRYmcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ18xSFZNbnctNjEwcXg1NGlFaVdrN0EgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ18xSFZNbnctNjEwcXg1NGlFaVdrN0EgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3hBU19hSzdzUzJ4X2JxbmxKSERTSHcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3hBU19hSzdzUzJ4X2JxbmxKSERTSHcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ240TldKYTNaQ1ZvbFhYVU83QVpfWncgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ240TldKYTNaQ1ZvbFhYVU83QVpfWncgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ0JMN1p4Vlg0R3ZXNENGaUVTXy0wWUEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ0JMN1p4Vlg0R3ZXNENGaUVTXy0wWUEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ29HSjZ0SGI0OTN6bVIyeVphUHN6Y1EgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ29HSjZ0SGI0OTN6bVIyeVphUHN6Y1EgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ2hXdjZQbl96UDBySTZsZ0d0M015ZkEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2hXdjZQbl96UDBySTZsZ0d0M015ZkEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3JqNkRaNXo2ZHlBdkphZExSY003dkEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3JqNkRaNXo2ZHlBdkphZExSY003dkEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ0psLWNHRFNvR2xCODZ2Ql8zc2N3QVEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ0psLWNHRFNvR2xCODZ2Ql8zc2N3QVEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3RPY0RCS2d5ci1mNTBTZ2JNRXJGa1EgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3RPY0RCS2d5ci1mNTBTZ2JNRXJGa1EgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ09tSFVuLS0xNkI5MG9XMkw2RlJSM0EgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ09tSFVuLS0xNkI5MG9XMkw2RlJSM0EgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3RIb1RySDBHZ0o5ZkJyem1UcWs3UGcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3RIb1RySDBHZ0o5ZkJyem1UcWs3UGcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ092RU1mMDBEbndka3BPQ1JXZGM2dUEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ092RU1mMDBEbndka3BPQ1JXZGM2dUEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3B2Q0pXZ1VOd1pBckd0SjAwa0RTMUEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3B2Q0pXZ1VOd1pBckd0SjAwa0RTMUEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ2hDV21nRWdVWHdTNVFFWlotaVdOLVEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2hDV21nRWdVWHdTNVFFWlotaVdOLVEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3oxbVEtNF93dWk4M1VmVDN5bHFtcHcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3oxbVEtNF93dWk4M1VmVDN5bHFtcHcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ194OEhvRDE4WEprSUxRQnJlVkVOVVEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ194OEhvRDE4WEprSUxRQnJlVkVOVVEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzBDLXcwWWpHcHFEWEdCOElIYjY2MkEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzBDLXcwWWpHcHFEWEdCOElIYjY2MkEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzdWU0ltZ1o0QXJfZUl4TE1NUjlTOXcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzdWU0ltZ1o0QXJfZUl4TE1NUjlTOXcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ0ZlcUFmRXVLbTdsSWcyZGRRemg2MUEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ0ZlcUFmRXVLbTdsSWcyZGRRemg2MUEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzNlUDQ4TEVzeG80bW9URllyT3JHOUEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzNlUDQ4TEVzeG80bW9URllyT3JHOUEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1JMUjJKbzNZaVJ3d1RwMGVXZEc4bkEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1JMUjJKbzNZaVJ3d1RwMGVXZEc4bkEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzlLbDVYeS1rRFlfejlDRDllcFc2M2cgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzlLbDVYeS1rRFlfejlDRDllcFc2M2cgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ24zeVUyYkhYXzhITUNmWE9CVGtYQ2cgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ24zeVUyYkhYXzhITUNmWE9CVGtYQ2cgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1Q5emNRTmx5aHQ3ZlJsY2ptZmxSU0EgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1Q5emNRTmx5aHQ3ZlJsY2ptZmxSU0EgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQy1Gbml4NzF2UlA2NFdYZW8waWtkMFEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQy1Gbml4NzF2UlA2NFdYZW8waWtkMFEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1dGS0NyNDBZd09aUXg4RkhVX1pxcVEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1dGS0NyNDBZd09aUXg4RkhVX1pxcVEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1ZabHhrS3FsdlZxelJKWGhBR3E0MlEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1ZabHhrS3FsdlZxelJKWGhBR3E0MlEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1gzSXJWN3VJaXI2eXpNTTlrT3RIMVEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1gzSXJWN3VJaXI2eXpNTTlrT3RIMVEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3YyTTMxVFBVR2picmZqck9ZcDdTaFEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3YyTTMxVFBVR2picmZqck9ZcDdTaFEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzQzNlB4cUVaY192Ti13LU9wOWFva3cgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzQzNlB4cUVaY192Ti13LU9wOWFva3cgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ05MMVphZFNqSHBqbTRxOWoyc1Z0T0EgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ05MMVphZFNqSHBqbTRxOWoyc1Z0T0EgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3MtUUJUNHFral9ZaVF3MVpudERPM2cgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3MtUUJUNHFral9ZaVF3MVpudERPM2cgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ0xRTlZVSUpYSjJlalZIdVNsQnRtR1EgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ0xRTlZVSUpYSjJlalZIdVNsQnRtR1EgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzFTLU53MTBSWWM5SDBBSDZpVl84MWcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzFTLU53MTBSWWM5SDBBSDZpVl84MWcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3dUcFNDZFJDVF96cEp0TmdvMVA0UFEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3dUcFNDZFJDVF96cEp0TmdvMVA0UFEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1RNRDIycElJbW1nR1N4ZGRjeFhQY2cgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1RNRDIycElJbW1nR1N4ZGRjeFhQY2cgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ2F6NUxLNFd2RXNnYTYwdWFxMGl4dEEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2F6NUxLNFd2RXNnYTYwdWFxMGl4dEEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ0l2cVdxakM0YUx2cDd6SThoekFSckEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ0l2cVdxakM0YUx2cDd6SThoekFSckEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1NKNGdrVkM2TnJ2SUk4dW16dGYwT3cgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1NKNGdrVkM2TnJ2SUk4dW16dGYwT3cgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3YwMTFoSW0tUXFwZ0RHdDMyeHJJUkEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3YwMTFoSW0tUXFwZ0RHdDMyeHJJUkEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3ZFQl8teE05MVBCSlVScFZCdlZYckEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3ZFQl8teE05MVBCSlVScFZCdlZYckEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ0x5QVllLXBrNkhHbWZ5VDk0b3VCY0EgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ0x5QVllLXBrNkhHbWZ5VDk0b3VCY0EgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ0VkdnBVMnBGUkNWcVU2eUlQeVRwTVEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ0VkdnBVMnBGUkNWcVU2eUlQeVRwTVEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1p5Z01HYklFOEpORTFfcXF0bUlYaEEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1p5Z01HYklFOEpORTFfcXF0bUlYaEEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ2hzRENQcGpkaDZMN3JOcjFiN3MxQlEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2hzRENQcGpkaDZMN3JOcjFiN3MxQlEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1g2T1EzRGtjc2JZTkU2SDh1UVF1VkEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1g2T1EzRGtjc2JZTkU2SDh1UVF1VkEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ01pSlJBd0ROU056dVllTjJ1V2EwcEEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ01pSlJBd0ROU056dVllTjJ1V2EwcEEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1JyTFdoY3JtN2pyT01pdVUwSG1OUkEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1JyTFdoY3JtN2pyT01pdVUwSG1OUkEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1dPQTFaR3l3TGJxbWlneEU0UWx2dXcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1dPQTFaR3l3TGJxbWlneEU0UWx2dXcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzJ5MHQzQUFIdVp4YjhJZ05tLUEteUEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzJ5MHQzQUFIdVp4YjhJZ05tLUEteUEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ2k0RURBZ2pVTHd3TkJIT2cxYWFDaWcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2k0RURBZ2pVTHd3TkJIT2cxYWFDaWcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ0U1eVRuOWxqelNuQ19vTXA5Sm5ja2cgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ0U1eVRuOWxqelNuQ19vTXA5Sm5ja2cgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1J1T0R5eUNvMllTUWhKZWE5RkFGTHcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1J1T0R5eUNvMllTUWhKZWE5RkFGTHcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1JpeTdJc3FGdWN2SDNJbGo3cWY1UmcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1JpeTdJc3FGdWN2SDNJbGo3cWY1UmcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3hUSENNYXhVUmhhcGlzQ01Cdjh5MEEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3hUSENNYXhVUmhhcGlzQ01Cdjh5MEEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ2FKODRVNXhzalg5S1QxbUlGM0IyMncgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2FKODRVNXhzalg5S1QxbUlGM0IyMncgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ2ZTQXFxZnRkYzdGTTFTWTV2SmpLZkEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2ZTQXFxZnRkYzdGTTFTWTV2SmpLZkEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3c1SjBfRVVuVjVpWEtWTVVHSHNRMEEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3c1SjBfRVVuVjVpWEtWTVVHSHNRMEEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ2tkYzdnSHBhdnhwZ0dhbHhLYmdTSEEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2tkYzdnSHBhdnhwZ0dhbHhLYmdTSEEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ2YxakJIazRvb2ZTd1h6b1dHOGxnV2cgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2YxakJIazRvb2ZTd1h6b1dHOGxnV2cgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ09pRzRVb0UwLUNCWktsRFZndzFlVEEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ09pRzRVb0UwLUNCWktsRFZndzFlVEEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzlyTWlFak5hQ1NzZWJzMzFNUkRDUkEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzlyTWlFak5hQ1NzZWJzMzFNUkRDUkEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ2oxVnFySGhEdGU1NG9MZ1BHNHhwdVEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2oxVnFySGhEdGU1NG9MZ1BHNHhwdVEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1dINEprUVdpb1UzdlRBcml0SERuQUEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1dINEprUVdpb1UzdlRBcml0SERuQUEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ2kzSDJiSGdhVEZ3cmZ3eF9HT0p5WncgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2kzSDJiSGdhVEZ3cmZ3eF9HT0p5WncgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3FFQ2FKOEdhZ25uN1lDYlBFeldINmcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3FFQ2FKOEdhZ25uN1lDYlBFeldINmcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ0V5X0Z6bDRqRTFBRl9hMlI5OHlLc3cgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ0V5X0Z6bDRqRTFBRl9hMlI5OHlLc3cgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzVVQXdCVXVtN0NQTjVidWMtX04xRncgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzVVQXdCVXVtN0NQTjVidWMtX04xRncgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzBXUDVQLXVmcFJmamJOcm1PV3dMQlEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzBXUDVQLXVmcFJmamJOcm1PV3dMQlEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1d1LUlPeGJlU0QtTVJNMlE4N1pGMEEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1d1LUlPeGJlU0QtTVJNMlE4N1pGMEEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ0dleElOSEtRaG5rd21NYXltcGNpWVEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ0dleElOSEtRaG5rd21NYXltcGNpWVEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3RpT2JqM0NzRUFkTlU2WlBXRHNkZFEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3RpT2JqM0NzRUFkTlU2WlBXRHNkZFEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1plbTlDNXJXalNiMEI4dFYzazJFWmcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1plbTlDNXJXalNiMEI4dFYzazJFWmcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ0M5MTkyeUdRRDI1ZUJaZ0ZaODRNUHcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ0M5MTkyeUdRRDI1ZUJaZ0ZaODRNUHcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ2NteE9HWUdGNTFUMVhzcVFMZXdHdFEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2NteE9HWUdGNTFUMVhzcVFMZXdHdFEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ3NRQnNaSmx0bUx6bHNKTkc3SGV2QmcgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ3NRQnNaSmx0bUx6bHNKTkc3SGV2QmcgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ183SGZHVW4xT1ZObHUwcDhGMkNtd2cgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ183SGZHVW4xT1ZObHUwcDhGMkNtd2cgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzdRdGVSbEVycG0yN2JrWjZpekZ3S2cgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzdRdGVSbEVycG0yN2JrWjZpekZ3S2cgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ2lTajVsR0dZaHBJeG9XcndvdFFCRUEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2lTajVsR0dZaHBJeG9XcndvdFFCRUEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzBzeXRUcGsxYWRSX2NmakhoaUowOFEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzBzeXRUcGsxYWRSX2NmakhoaUowOFEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQzNQZGlSVzVkVUE0VjcwdWVlUjFlSEEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQzNQZGlSVzVkVUE0VjcwdWVlUjFlSEEgMygB", + "subscribed": true + } + } + }, + { + "entityKey": "EhhVQ1FhbTJybHB3TXgxWWx2Qk44UFNTMkEgMygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ1FhbTJybHB3TXgxWWx2Qk44UFNTMkEgMygB", + "subscribed": true + } + } + } + ], + "timestamp": { "seconds": "1734911141", "nanos": 345306280 } + } + } +} diff --git a/testfiles/music_history/music_history.json b/testfiles/music_history/music_history.json new file mode 100644 index 0000000..788964d --- /dev/null +++ b/testfiles/music_history/music_history.json @@ -0,0 +1,11448 @@ +{ + "responseContext": { + "serviceTrackingParams": [ + { + "service": "GFEEDBACK", + "params": [ + { "key": "browse_id", "value": "FEmusic_history" }, + { "key": "browse_id_prefix", "value": "" }, + { "key": "logged_in", "value": "1" }, + { + "key": "e", + "value": "23804281,23813628,24004644,24077241,24181174,24241378,24299875,24439361,24459436,24548629,24566687,24697013,51009781,51010235,51017346,51020570,51025415,51030101,51037342,51037353,51050361,51053689,51057842,51057853,51063643,51065188,51089007,51098299,51111738,51115184,51124104,51125020,51145218,51151423,51152050,51157411,51160545,51169118,51176511,51178314,51178327,51178344,51178351,51178982,51179884,51183909,51204329,51208678,51217504,51222382,51222973,51226938,51227037,51227778,51228850,51230478,51236019,51237842,51239093,51241028,51242448,51248255,51248734,51249751,51255676,51255743,51256084,51257943,51260634,51274583,51275785,51276557,51276565,51278183,51281227,51285717,51287196,51289922,51289929,51289938,51289958,51289965,51290036,51290043,51290404,51292055,51294322,51296439,51298020,51299710,51299724,51299973,51299999,51300018,51302680,51303667,51303669,51303789,51304155,51305839,51310742,51311025,51311034,51313109,51313765,51313767,51313802,51315910,51315919,51315928,51315931,51315938,51315945,51315956,51315963,51315972,51315979,51316744,51316844,51318845,51321893,51322669,51324941,51326281,51326932,51327144,51327163,51327180,51327613,51327615,51330194,51331485,51331500,51331520,51331535,51331538,51331545,51331552,51331561,51333541,51333878,51334535,51335365,51335392,51335594,51335646,51335928,51336633,51337000,51337139,51337186,51337349,51339007,51340662,51341214,51341226,51341730,51341974,51342579,51342857,51343368,51343796,51345228,51345295,51345629,51346352,51346795,51346816,51346823,51346836,51346849,51346868,51346879,51346896,51347325,51347576,51348208,51348354,51348672,51349880,51349914,51351446,51353231,51353361,51353393,51354114,51354507,51354569,51355268,51355273,51355291,51355307,51355312,51355337,51355342,51355679,51355825,51357477,51357777,51359172,51360108,51360123,51360140,51360212,51360215,51361727,51361828,51362040,51362071,51362455,51362643,51362674,51362857,51363725,51363734,51363741,51363756,51363761,51363772,51365460,51365716,51365751,51365860,51365987,51366423,51366864,51367318,51367487,51367605,51367993,51368502,51369325,51369559,51369905,51370739,51371001,51371006,51371522,51372699,51374017,51374206,51374439,51375168,51375719,51375867,51376050,51376515,51379209" + } + ] + }, + { + "service": "CSI", + "params": [ + { "key": "c", "value": "WEB_REMIX" }, + { "key": "cver", "value": "1.20241218.01.00" }, + { "key": "yt_li", "value": "1" }, + { "key": "GetBrowseHistoryPage_rid", "value": "0x61eede01bf87eed1" } + ] + }, + { + "service": "ECATCHER", + "params": [ + { "key": "client.version", "value": "1.20000101" }, + { "key": "client.name", "value": "WEB_REMIX" } + ] + } + ], + "maxAgeSeconds": 0 + }, + "contents": { + "singleColumnBrowseResultsRenderer": { + "tabs": [ + { + "tabRenderer": { + "title": "Recently played", + "selected": true, + "content": { + "sectionListRenderer": { + "contents": [ + { + "musicShelfRenderer": { + "title": { "runs": [{ "text": "Today" }] }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CJQDEMn0AhgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKUDEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CKQDEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "-gBtW4GhF3Y", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CKQDEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play O Du fröhliche - Helene Fischer" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause O Du fröhliche - Helene Fischer" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "O Du fröhliche", + "navigationEndpoint": { + "clickTrackingParams": "CJQDEMn0AhgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "-gBtW4GhF3Y", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Helene Fischer", + "navigationEndpoint": { + "clickTrackingParams": "CJQDEMn0AhgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCE7_p3lcXA-YXRZp2PjrgYw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Weihnachten", + "navigationEndpoint": { + "clickTrackingParams": "CJQDEMn0AhgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_IBxM8XVyrqh", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "3:34" }], + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 34 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CKMDEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "-gBtW4GhF3Y", + "playlistId": "RDAMVM-gBtW4GhF3Y", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0tZ0J0VzRHaEYzWQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CKMDEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CKEDEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "-gBtW4GhF3Y", + "onEmptyQueue": { + "clickTrackingParams": "CKEDEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "-gBtW4GhF3Y" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CKEDEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CKIDEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CKEDEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8DEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "-gBtW4GhF3Y", + "onEmptyQueue": { + "clickTrackingParams": "CJ8DEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "-gBtW4GhF3Y" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CJ8DEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CKADEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CJ8DEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJ4DEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKKOk13gVkqsVaBYVwB9S8Eo7mm1wkSw_ABmb4CMmBvze_nPTJQXNysrbYKhtJEV7BrqVDd1oBv5V-qK8FECdap-DRtKQ" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJ4DEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIbWEc5V1by5cukpfan7vIzxWO3VkGbuR9YGzUaWDpBuSSvCx9CkVeqVVuFipuYlJG5MzJiLyol-GIdtr7TiiVz-3M6Iw" + } + }, + "trackingParams": "CJ4DEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CJ0DEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "-gBtW4GhF3Y" + } + }, + "trackingParams": "CJ0DEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CJwDEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_IBxM8XVyrqh", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CJwDEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CJsDEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCE7_p3lcXA-YXRZp2PjrgYw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CJsDEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CJoDEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTC-gBtW4GhF3Y", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CJoDEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CJkDEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "CgstZ0J0VzRHaEYzWQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CJkDEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CJUDEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJaqhoxfB9T_GaKvAHRKjGh4978es3Fxr44BwuVzk1owcC-7IbPNNQRFZVm9EG3F8us563y4Vhn67JsCTQ-edQm6PGYAA", + "actions": [ + { + "clickTrackingParams": "CJUDEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CJUDEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CJgDEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CJUDEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJcDEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpICbqes4r62sMFLfNVsJTrGrJGOmhNglvt8ts19YndhDXsb1bv76_01rlD-XU4SdmZKHrKloHHHkRPkM58bT9Ly41anaNzy4lVn_5ehgksKUDKts0U" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJcDEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJ-t7TLmI0RSn__oBiBYP5dZCqiHr6Dwg-i_2UNCX-6E5y3Is1Q9VCsWIK9iQdr5u7yxT3xVnuwfD2Gp4XTBWDPl2MXeUvO0ZpOBikkghkseKNcbxM" + } + }, + "trackingParams": "CJcDEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CJUDEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "-gBtW4GhF3Y" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CJYDEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CJYDEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "-gBtW4GhF3Y" }, + "actions": [ + { + "clickTrackingParams": "CJYDEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpKKOk13gVkqsVaBYVwB9S8Eo7mm1wkSw_ABmb4CMmBvze_nPTJQXNysrbYKhtJEV7BrqVDd1oBv5V-qK8FECdap-DRtKQ" + } + } + ] + } + }, + { + "clickTrackingParams": "CJYDEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "-gBtW4GhF3Y" } + } + }, + { + "clickTrackingParams": "CJYDEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "-gBtW4GhF3Y" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "-gBtW4GhF3Y" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CIIDEMn0AhgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJMDEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CJIDEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "nsV9bCW3sLM", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CJIDEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Stille Nacht - Helene Fischer" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Stille Nacht - Helene Fischer" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Stille Nacht", + "navigationEndpoint": { + "clickTrackingParams": "CIIDEMn0AhgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "nsV9bCW3sLM", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Helene Fischer", + "navigationEndpoint": { + "clickTrackingParams": "CIIDEMn0AhgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCE7_p3lcXA-YXRZp2PjrgYw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Weihnachten", + "navigationEndpoint": { + "clickTrackingParams": "CIIDEMn0AhgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_IBxM8XVyrqh", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "4:24" }], + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 24 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CJEDEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "nsV9bCW3sLM", + "playlistId": "RDAMVMnsV9bCW3sLM", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1uc1Y5YkNXM3NMTQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CJEDEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CI8DEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "nsV9bCW3sLM", + "onEmptyQueue": { + "clickTrackingParams": "CI8DEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "nsV9bCW3sLM" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CI8DEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CJADEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CI8DEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CI0DEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "nsV9bCW3sLM", + "onEmptyQueue": { + "clickTrackingParams": "CI0DEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "nsV9bCW3sLM" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CI0DEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CI4DEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CI0DEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIwDEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpILiEQW6wcUlGoOUvQZNqd1CCq7VF-2PIVgVlQ2y-Rl3k5Jyg8CUiyKSmKsHyWD0j3lIA_KNpooddOGl1v2JbPgI9aVOw" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIwDEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIxBINS2yZDUU_GKGomYOGx-gZtzG3UFQ9Uut8b3e-UdYemFSxaI8zAznr9A5pV70Cstg6BDuvEGrNqGMl_1L-FR6bvjA" + } + }, + "trackingParams": "CIwDEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CIsDEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "nsV9bCW3sLM" + } + }, + "trackingParams": "CIsDEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CIoDEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_IBxM8XVyrqh", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CIoDEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CIkDEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCE7_p3lcXA-YXRZp2PjrgYw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CIkDEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CIgDEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTCnsV9bCW3sLM", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CIgDEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CIcDEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgtuc1Y5YkNXM3NMTQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CIcDEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CIMDEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLZeBCx-OAAqBNCqTJ70C5FURcAwnvhzEy7Pe9B4OR7ftRfWRZ7M9Darf1acIQNv4n_QVmISEzwYhu1_f5QXt60YGB4jQ", + "actions": [ + { + "clickTrackingParams": "CIMDEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CIMDEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CIYDEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CIMDEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIUDEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIQVacQGRw31zvCOHX1nU9_bYvcgVMe8u4Ofa7lKNh1dyvLo3ga2waPj3d6EIZeZEHOJumFY2qPafnRRvM2czF79gXav-n6V-4vPtE4ruqci761mf4" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIUDEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKJJDp839jHFhJm5OyDc2S9h6inKzXGg3baGJcxYgbdlgwOzTojPtdW9XkMzo7u8ev1-Ui4d4LR96v6h4ApzioN-UCR0e9Y7NKQIn7WqOAjt8N_2wI" + } + }, + "trackingParams": "CIUDEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CIMDEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "nsV9bCW3sLM" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CIQDEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CIQDEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "nsV9bCW3sLM" }, + "actions": [ + { + "clickTrackingParams": "CIQDEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpILiEQW6wcUlGoOUvQZNqd1CCq7VF-2PIVgVlQ2y-Rl3k5Jyg8CUiyKSmKsHyWD0j3lIA_KNpooddOGl1v2JbPgI9aVOw" + } + } + ] + } + }, + { + "clickTrackingParams": "CIQDEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "nsV9bCW3sLM" } + } + }, + { + "clickTrackingParams": "CIQDEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "nsV9bCW3sLM" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "nsV9bCW3sLM" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CPACEMn0AhgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIEDEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CIADEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "3-oqGxnJTrA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CIADEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Ihr Kinderlein kommet - Helene Fischer" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Ihr Kinderlein kommet - Helene Fischer" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Ihr Kinderlein kommet", + "navigationEndpoint": { + "clickTrackingParams": "CPACEMn0AhgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "3-oqGxnJTrA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Helene Fischer", + "navigationEndpoint": { + "clickTrackingParams": "CPACEMn0AhgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCE7_p3lcXA-YXRZp2PjrgYw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Weihnachten", + "navigationEndpoint": { + "clickTrackingParams": "CPACEMn0AhgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_IBxM8XVyrqh", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "3:15" }], + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 15 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CP8CEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "3-oqGxnJTrA", + "playlistId": "RDAMVM3-oqGxnJTrA", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0zLW9xR3huSlRyQQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CP8CEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CP0CEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "3-oqGxnJTrA", + "onEmptyQueue": { + "clickTrackingParams": "CP0CEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "3-oqGxnJTrA" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CP0CEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CP4CEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CP0CEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CPsCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "3-oqGxnJTrA", + "onEmptyQueue": { + "clickTrackingParams": "CPsCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "3-oqGxnJTrA" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CPsCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CPwCEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CPsCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPoCEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIFHVFsso3vxEa3JAcJbGhrCfOFqOTQ3lnF2zCyX_yKAjdsfpQgSy85zxhU-uKzINvrenVAJ5oSTk2PofKum0mMooo1ag" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPoCEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI_IR734v3Y5k5zE3S0irz85nMkxvE8zqSkJ8dwHbAO44_wo_04UStcwl9xYlVlKVYBETWZpAoOjhcbQURDL19ZcSgdVw" + } + }, + "trackingParams": "CPoCEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CPkCEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "3-oqGxnJTrA" + } + }, + "trackingParams": "CPkCEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CPgCEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_IBxM8XVyrqh", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CPgCEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CPcCEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCE7_p3lcXA-YXRZp2PjrgYw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CPcCEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CPYCEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTC3-oqGxnJTrA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CPYCEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CPUCEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "CgszLW9xR3huSlRyQQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CPUCEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CPECEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJKjoVG2NeVyW6s8Okb1oUGlJXx-bVzwzY_Wt9mxDLHM480CnSWsbQfmLhw1aHkhgYrhWDWOXJbk08w40OzvSxl-Oq5pA", + "actions": [ + { + "clickTrackingParams": "CPECEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CPECEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CPQCEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CPECEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPMCEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLe0e70IdGj_4RHx-KrwvyShji58_yd-9SSIsWvbxyplDJlZZ6KkDZvus9s-di8nIUUWqFd8GdDtsrmBwmlRU-2Kd5T7OsOqeTtcq5yrY-7EBaA5r0" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPMCEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKp6ACOn8ZWZ_ueWO2cvNhDsqHxzidBiXiL3bSjXy6tbqVevszns4tWrvwtqS_TvFrFUcbl23vMD5pmwJ9S4gm7iafd0o0d3aJbUmngkzX5yts_6J0" + } + }, + "trackingParams": "CPMCEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CPECEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "3-oqGxnJTrA" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CPICEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CPICEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "3-oqGxnJTrA" }, + "actions": [ + { + "clickTrackingParams": "CPICEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpIFHVFsso3vxEa3JAcJbGhrCfOFqOTQ3lnF2zCyX_yKAjdsfpQgSy85zxhU-uKzINvrenVAJ5oSTk2PofKum0mMooo1ag" + } + } + ] + } + }, + { + "clickTrackingParams": "CPICEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "3-oqGxnJTrA" } + } + }, + { + "clickTrackingParams": "CPICEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "3-oqGxnJTrA" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "3-oqGxnJTrA" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CN4CEMn0AhgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CO8CEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CO4CEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "xBby89eXe1g", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CO4CEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Tochter Zion - Helene Fischer" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Tochter Zion - Helene Fischer" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Tochter Zion", + "navigationEndpoint": { + "clickTrackingParams": "CN4CEMn0AhgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "xBby89eXe1g", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Helene Fischer", + "navigationEndpoint": { + "clickTrackingParams": "CN4CEMn0AhgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCE7_p3lcXA-YXRZp2PjrgYw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Weihnachten", + "navigationEndpoint": { + "clickTrackingParams": "CN4CEMn0AhgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_IBxM8XVyrqh", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "3:06" }], + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 6 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CO0CEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "xBby89eXe1g", + "playlistId": "RDAMVMxBby89eXe1g", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk14QmJ5ODllWGUxZw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CO0CEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "COsCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "xBby89eXe1g", + "onEmptyQueue": { + "clickTrackingParams": "COsCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "xBby89eXe1g" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "COsCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "COwCEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "COsCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "COkCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "xBby89eXe1g", + "onEmptyQueue": { + "clickTrackingParams": "COkCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "xBby89eXe1g" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "COkCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "COoCEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "COkCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COgCEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJlGp-11y0y8LkTD-gMtT3yJkTdepDHVmcnVENbK4JF6dHYNCOqUKSshQaLN8CB6TX6AFGTsw_obCYQgTxwh5fUcQDocQ" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COgCEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJ3IHXLUh1cZE1Cb5viqy96mu5FMfFY-iTGM9AKxPn3HaBs75XZusrj0P0B7br-VIbrkVChrp87KToswiIvfXzbChlmKw" + } + }, + "trackingParams": "COgCEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "COcCEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "xBby89eXe1g" + } + }, + "trackingParams": "COcCEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "COYCEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_IBxM8XVyrqh", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "COYCEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "COUCEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCE7_p3lcXA-YXRZp2PjrgYw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "COUCEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "COQCEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTCxBby89eXe1g", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "COQCEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "COMCEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgt4QmJ5ODllWGUxZw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "COMCEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CN8CEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL03kFVwkr9AwRSsvYrSOvgJBYwXIeG0KpHjzehwoKUkNrJRIgZe5CleDZnaqQKucSG7tDgw8w4ECEdOz71jJRUptx3OA", + "actions": [ + { + "clickTrackingParams": "CN8CEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CN8CEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "COICEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CN8CEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COECEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpICx6c1_V1QVxA30ODeyEu99EAHUuFm4W_Tb9WdcMD-MrRvhmASjnDtFE69fCBUwYxAp2JHIFxlTHLcuXMXUHEBf-8hznwb-BNcWvDNG4evDzK-yVs" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COECEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJsc_mXuWfTzomDCp_EqD7gp2-nnIeePIfzqvqpXvBaZUcrHdGZH55x0-tv9wbnHcK9j49_E2Bo5BySS4wuQcXUgiwXRjWz_fAkjq0xBShk1n4S1sc" + } + }, + "trackingParams": "COECEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CN8CEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "xBby89eXe1g" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "COACEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "COACEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "xBby89eXe1g" }, + "actions": [ + { + "clickTrackingParams": "COACEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpJlGp-11y0y8LkTD-gMtT3yJkTdepDHVmcnVENbK4JF6dHYNCOqUKSshQaLN8CB6TX6AFGTsw_obCYQgTxwh5fUcQDocQ" + } + } + ] + } + }, + { + "clickTrackingParams": "COACEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "xBby89eXe1g" } + } + }, + { + "clickTrackingParams": "COACEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "xBby89eXe1g" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "xBby89eXe1g" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CMwCEMn0AhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CN0CEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CNwCEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "ikyIeWgP6i4", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CNwCEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Adeste Fideles - Helene Fischer" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Adeste Fideles - Helene Fischer" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Adeste Fideles", + "navigationEndpoint": { + "clickTrackingParams": "CMwCEMn0AhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "ikyIeWgP6i4", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Helene Fischer", + "navigationEndpoint": { + "clickTrackingParams": "CMwCEMn0AhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCE7_p3lcXA-YXRZp2PjrgYw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Weihnachten", + "navigationEndpoint": { + "clickTrackingParams": "CMwCEMn0AhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_IBxM8XVyrqh", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "3:56" }], + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 56 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CNsCEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "ikyIeWgP6i4", + "playlistId": "RDAMVMikyIeWgP6i4", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1pa3lJZVdnUDZpNA%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CNsCEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CNkCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "ikyIeWgP6i4", + "onEmptyQueue": { + "clickTrackingParams": "CNkCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "ikyIeWgP6i4" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CNkCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CNoCEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CNkCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CNcCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "ikyIeWgP6i4", + "onEmptyQueue": { + "clickTrackingParams": "CNcCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "ikyIeWgP6i4" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CNcCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CNgCEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CNcCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNYCEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJM9adaXI65bIDA_gbKsiDRruURkIADwQiMotG_Z3B1CX7c227LjbS7jB779nBIkIdPshZQGw_DRdPGDmFP60xsr7xj6g" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNYCEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI-7f_JzdO_sxwJ3w3-eSXh0DncdF0BMnuP4jO9e7JZsHWMuDstztlzfMmo11Fc738qcV2o1QI3vH5cko5qab_76Pk5dg" + } + }, + "trackingParams": "CNYCEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CNUCEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "ikyIeWgP6i4" + } + }, + "trackingParams": "CNUCEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CNQCEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_IBxM8XVyrqh", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CNQCEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CNMCEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCE7_p3lcXA-YXRZp2PjrgYw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CNMCEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CNICEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTCikyIeWgP6i4", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CNICEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CNECEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgtpa3lJZVdnUDZpNA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CNECEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CM0CEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIJ3xTc281EbY9cKzMVNqbKECUxOFaN4S8k8LjQtCZmR0DYu-YXfGKo9CfzNvEbPeRFvSFki3XW_lOUz4iu90ni65YinA", + "actions": [ + { + "clickTrackingParams": "CM0CEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CM0CEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CNACEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CM0CEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CM8CEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLY5UvQd8WPDLzEhzEBg5_1R9hHjhSUKgD3txwnPmfYJkVLbEYwm269IyeTH7uFTzJH5_nCwGoaZku3JeHZSBU52c8Akbo0XuNLWkyqcCK4vgO_b0A" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CM8CEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJuyxgVgHOZQvRhenhhqZ6iDpdqOHNVP5_128qCFQ-dqupSEhoAZ-_MUM4hCWcmfD72praNRRWW9k2C4dxfT07is2HXcBJCYgjvuGfQT3FhMoZSRT4" + } + }, + "trackingParams": "CM8CEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CM0CEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "ikyIeWgP6i4" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CM4CEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CM4CEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "ikyIeWgP6i4" }, + "actions": [ + { + "clickTrackingParams": "CM4CEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpJM9adaXI65bIDA_gbKsiDRruURkIADwQiMotG_Z3B1CX7c227LjbS7jB779nBIkIdPshZQGw_DRdPGDmFP60xsr7xj6g" + } + } + ] + } + }, + { + "clickTrackingParams": "CM4CEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "ikyIeWgP6i4" } + } + }, + { + "clickTrackingParams": "CM4CEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "ikyIeWgP6i4" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "ikyIeWgP6i4" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CLoCEMn0AhgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/-IzX3AN3btJwzM7YzUtDRu8-40B_qNcQlckN26aHVFNopjA4wiRGLuDfiTPrSx8X-ULA-GdkcbGU57M=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/-IzX3AN3btJwzM7YzUtDRu8-40B_qNcQlckN26aHVFNopjA4wiRGLuDfiTPrSx8X-ULA-GdkcbGU57M=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CMsCEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CMoCEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "u54XYn1nCZ8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CMoCEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Das Polizeiboot - SpongeBob Schwammkopf" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Das Polizeiboot - SpongeBob Schwammkopf" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Das Polizeiboot", + "navigationEndpoint": { + "clickTrackingParams": "CLoCEMn0AhgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "u54XYn1nCZ8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "SpongeBob Schwammkopf", + "navigationEndpoint": { + "clickTrackingParams": "CLoCEMn0AhgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UC_WzOax81EduoCiIrWQCrTw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Quallendisco", + "navigationEndpoint": { + "clickTrackingParams": "CLoCEMn0AhgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_M2trHaS2Z39", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "3:07" }], + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 7 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CMkCEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "u54XYn1nCZ8", + "playlistId": "RDAMVMu54XYn1nCZ8", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk11NTRYWW4xbkNaOA%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CMkCEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CMcCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "u54XYn1nCZ8", + "onEmptyQueue": { + "clickTrackingParams": "CMcCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "u54XYn1nCZ8" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CMcCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CMgCEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CMcCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CMUCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "u54XYn1nCZ8", + "onEmptyQueue": { + "clickTrackingParams": "CMUCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "u54XYn1nCZ8" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CMUCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CMYCEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CMUCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMQCEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLAKLGAQrMg3poONXslhDgqmkj_F2et_Po_aQCF4n805Hc7qpxwqSYULTcVRGzhAV6fnia2Yvc_i1vzmRWSrBgMEyRgCg" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMQCEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK5Z7EjSZfrqC9rqq4Wgde3YMoDN3gaRAr-l6j0bpu8e8GO-NhOAZs6J0XXYjsJUeintFp_aZbo7ch9Cvd0VNP19wMKkw" + } + }, + "trackingParams": "CMQCEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CMMCEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "u54XYn1nCZ8" + } + }, + "trackingParams": "CMMCEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CMICEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_M2trHaS2Z39", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CMICEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CMECEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UC_WzOax81EduoCiIrWQCrTw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CMECEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CMACEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTCu54XYn1nCZ8", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CMACEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CL8CEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgt1NTRYWW4xbkNaOA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CL8CEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CLsCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL6f-HonXlszTC4qfUQexIW_jSuMykpMkYY2mA3oiSn2eVPGb4PczkrjFw5viruX5-2ao8tSvlVDbDGoXR9wYkQn3BW5A", + "actions": [ + { + "clickTrackingParams": "CLsCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CLsCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CL4CEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CLsCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CL0CEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJ2_6FE7vINpvulpipqMB4rlxfyW8QzKgOiOfRHYIrvyS4pXOyVUOAw8cgofEvOYLvHy7AakAYlmlLU6fDt7hWqVzO2C7FttUVVNStvTBsBYQvYm4A" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CL0CEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLSTs-C19f66aSmVqwryUKnhUEJ55wRN6fWWttbveYb6pQZtJ4aqEp3f1G5ZgIg1Ib1CuSOFggNkELWekFbIGJYx6GPjmyCIn2cu6ukbotVVoy8JZc" + } + }, + "trackingParams": "CL0CEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CLsCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "u54XYn1nCZ8" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CLwCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CLwCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "u54XYn1nCZ8" }, + "actions": [ + { + "clickTrackingParams": "CLwCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpLAKLGAQrMg3poONXslhDgqmkj_F2et_Po_aQCF4n805Hc7qpxwqSYULTcVRGzhAV6fnia2Yvc_i1vzmRWSrBgMEyRgCg" + } + } + ] + } + }, + { + "clickTrackingParams": "CLwCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "u54XYn1nCZ8" } + } + }, + { + "clickTrackingParams": "CLwCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "u54XYn1nCZ8" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "u54XYn1nCZ8" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CKcCEMn0AhgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/kpuoWhUjjFS0CR_Bz7OY4JSHXIYzbYTa9FWalcXudTAETr1EioLtSa5ua5vNcla0_aAbVjUe0zv-OQxWsw=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/kpuoWhUjjFS0CR_Bz7OY4JSHXIYzbYTa9FWalcXudTAETr1EioLtSa5ua5vNcla0_aAbVjUe0zv-OQxWsw=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CLkCEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CLgCEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "acOEjiOH2v8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CLgCEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play We Made It - t-low" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause We Made It - t-low" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "We Made It", + "navigationEndpoint": { + "clickTrackingParams": "CKcCEMn0AhgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "acOEjiOH2v8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "t-low", + "navigationEndpoint": { + "clickTrackingParams": "CKcCEMn0AhgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCi3H2bHgaTFwrfwx_GOJyZw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { "text": " & " }, + { + "text": "Miksu / Macloud", + "navigationEndpoint": { + "clickTrackingParams": "CKcCEMn0AhgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCrWB2JlLx3-q8CUUiVXgedg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Percocet Party", + "navigationEndpoint": { + "clickTrackingParams": "CKcCEMn0AhgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_fkur1VEwyKR", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "3:32" }], + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 32 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CLcCEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "acOEjiOH2v8", + "playlistId": "RDAMVMacOEjiOH2v8", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1hY09FamlPSDJ2OA%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CLcCEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CLUCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "acOEjiOH2v8", + "onEmptyQueue": { + "clickTrackingParams": "CLUCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "acOEjiOH2v8" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CLUCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CLYCEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CLUCEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CLMCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "acOEjiOH2v8", + "onEmptyQueue": { + "clickTrackingParams": "CLMCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "acOEjiOH2v8" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CLMCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CLQCEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CLMCEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLICEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIkA43xmkyRLjjStukqCbgTEcBVjZq1KTgguRy6rfHMqSoytImYzIw8PS11fAKxDKpw9HrvxN9bS74hHvtYb-DeCy1Xew" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLICEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpID0LsfWcYAbYS1qekrDhoqLnMgByOBiwonxx-GdxB1mzqxrF1ENDo5mmmIfoh6ak9BkjAAys9lu9xfi87yYRN-JNFzpg" + } + }, + "trackingParams": "CLICEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CLECEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "acOEjiOH2v8" + } + }, + "trackingParams": "CLECEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CLACEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_fkur1VEwyKR", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CLACEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CK8CEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCi3H2bHgaTFwrfwx_GOJyZw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CK8CEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CK4CEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTCacOEjiOH2v8", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CK4CEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CK0CEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "CgthY09FamlPSDJ2OA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CK0CEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CKkCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL5o1gk1I4haWs5NOs4OlzJ7-dyj5-ncSgZ_r3BqvKrR1d4DGgXgMljAglYjEaq9NTMqaNk1lTwnQarhFAtX7EgWz1CCg", + "actions": [ + { + "clickTrackingParams": "CKkCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CKkCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CKwCEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CKkCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKsCEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIIQXlyy-gBbZqH6p4Qn1cgshGJI9HoNSWTElsqTLRQ9wyeBnBjzYo1_wTB668sm9NYgOcmTo9_jBno55Vt9GLuJ3ldPoiANbmPEQCLoHS0k9OCu10" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKsCEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKtn0iDGjK9FGeDsram8Lh2dtm0deL9BtHCKg_5jo0GAgE6CEmwmrOT-nazbYcgWbYbFlpmuehV7QbvdcY_wPNB5Eh1nAkhgqI9FdJ8EtW6yfPwtzA" + } + }, + "trackingParams": "CKsCEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CKkCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "acOEjiOH2v8" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CKoCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CKoCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "acOEjiOH2v8" }, + "actions": [ + { + "clickTrackingParams": "CKoCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpIkA43xmkyRLjjStukqCbgTEcBVjZq1KTgguRy6rfHMqSoytImYzIw8PS11fAKxDKpw9HrvxN9bS74hHvtYb-DeCy1Xew" + } + } + ] + } + }, + { + "clickTrackingParams": "CKoCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "acOEjiOH2v8" } + } + }, + { + "clickTrackingParams": "CKoCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "acOEjiOH2v8" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "badges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CKgCEKHtAhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, + "accessibilityData": { + "accessibilityData": { "label": "Explicit" } + } + } + } + ], + "playlistItemData": { "videoId": "acOEjiOH2v8" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CJYCEMn0AhgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/Xg5dn6o-mME/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n1aZ8j7_o-eQbVtcbLCm2KSK2I6A", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKYCEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CKUCEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "Xg5dn6o-mME", + "params": "8gEDmAEI", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_PODCAST_EPISODE" + } + } + } + }, + "trackingParams": "CKUCEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Misfit Toys - Pusha T" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Misfit Toys - Pusha T" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Misfit Toys", + "navigationEndpoint": { + "clickTrackingParams": "CJYCEMn0AhgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPEDXg5dn6o-mME", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_NON_MUSIC_AUDIO_TRACK_PAGE" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Pusha T", + "navigationEndpoint": { + "clickTrackingParams": "CJYCEMn0AhgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCr4IKNkUPPmkwE_LAjtho0g", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { "runs": [{ "text": "Nov 20, 2021" }] }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "3:10" }], + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 10 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save episode for later" }] + }, + "defaultIcon": { "iconType": "BOOKMARK_BORDER" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKQCEPXQChgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "playlistEditEndpoint": { + "playlistId": "SE", + "actions": [ + { + "addedVideoId": "Xg5dn6o-mME", + "action": "ACTION_ADD_VIDEO", + "dedupeOption": "DEDUPE_OPTION_CHECK", + "addedVideoPositionIfManualSort": 0 + } + ], + "params": "YAE%3D" + } + }, + "toggledText": { + "runs": [ + { "text": "Remove from " }, + { "text": "Episodes for Later" } + ] + }, + "toggledIcon": { "iconType": "BOOKMARK" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKQCEPXQChgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "playlistEditEndpoint": { + "playlistId": "SE", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Xg5dn6o-mME" + } + ] + } + }, + "trackingParams": "CKQCEPXQChgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "isToggled": false + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Mark as played" }] + }, + "defaultIcon": { "iconType": "CHECK" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKECEOy_CxgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL0ajTOgTDdcce-4Dnpk2CWtyGmSSjjpSJq_eaFQeC1UVOcldXVVUxvSi2TelVsgH9pPjkpxz1YkK5KbW-PzWlxYzYLYw", + "actions": [ + { + "clickTrackingParams": "CKECEOy_CxgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationActionRenderer": { + "responseText": { + "runs": [ + { + "text": "Episode marked as played" + } + ] + }, + "trackingParams": "CKMCELlqIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "toggledText": { + "runs": [{ "text": "Mark as unplayed" }] + }, + "toggledIcon": { "iconType": "ARROW_UNDO" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKECEOy_CxgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKth3HqE82WGj2C4Jd84HYEoUKGaDFUkX3bgSdDjjm-AhjB9BxT3Js6cX_Cq0488qehOCHZgSGPiAI630vjR4QzXNHFHg", + "actions": [ + { + "clickTrackingParams": "CKECEOy_CxgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationActionRenderer": { + "responseText": { + "runs": [ + { + "text": "Episode marked as unplayed" + } + ] + }, + "trackingParams": "CKICELlqIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CKECEOy_CxgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "isToggled": false + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8CEL7uBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Xg5dn6o-mME", + "onEmptyQueue": { + "clickTrackingParams": "CJ8CEL7uBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "Xg5dn6o-mME" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CJ8CEL7uBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode will play next" + } + ] + }, + "trackingParams": "CKACEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CJ8CEL7uBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0CEPvvBRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Xg5dn6o-mME", + "onEmptyQueue": { + "clickTrackingParams": "CJ0CEPvvBRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "Xg5dn6o-mME" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CJ0CEPvvBRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode added to queue" + } + ] + }, + "trackingParams": "CJ4CEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CJ0CEPvvBRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CJwCEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "Xg5dn6o-mME" + } + }, + "trackingParams": "CJwCEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CJsCEJD7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCr4IKNkUPPmkwE_LAjtho0g", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CJsCEJD7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CJoCEJH7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtYZzVkbjZvLW1NRQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CJoCEJH7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CJcCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKth3HqE82WGj2C4Jd84HYEoUKGaDFUkX3bgSdDjjm-AhjB9BxT3Js6cX_Cq0488qehOCHZgSGPiAI630vjR4QzXNHFHg", + "actions": [ + { + "clickTrackingParams": "CJcCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CJcCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CJkCEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CJcCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CJcCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "Xg5dn6o-mME" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CJgCEKVBGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CJgCEKVBGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "Xg5dn6o-mME" } + } + }, + { + "clickTrackingParams": "CJgCEKVBGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "Xg5dn6o-mME" } + } + }, + { + "clickTrackingParams": "CJgCEKVBGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "Xg5dn6o-mME" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "Xg5dn6o-mME" } + } + } + ], + "trackingParams": "CJUCEPleGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "shelfDivider": { + "musicShelfDividerRenderer": { "hidden": true } + } + } + }, + { + "musicShelfRenderer": { + "title": { "runs": [{ "text": "Last week" }] }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CIMCEMn0AhgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJQCEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CJMCEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "Smy4qcyPMEc", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CJMCEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Remember Me (Intro) - d4vd" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Remember Me (Intro) - d4vd" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Remember Me (Intro)", + "navigationEndpoint": { + "clickTrackingParams": "CIMCEMn0AhgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "Smy4qcyPMEc", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "d4vd", + "navigationEndpoint": { + "clickTrackingParams": "CIMCEMn0AhgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCGr1UQ4CwzRMmYoQfHQQWTg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + "navigationEndpoint": { + "clickTrackingParams": "CIMCEMn0AhgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "1:41" }], + "accessibility": { + "accessibilityData": { + "label": "1 minute, 41 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CJICEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "Smy4qcyPMEc", + "playlistId": "RDAMVMSmy4qcyPMEc", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1TbXk0cWN5UE1FYw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CJICEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CJACEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Smy4qcyPMEc", + "onEmptyQueue": { + "clickTrackingParams": "CJACEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "Smy4qcyPMEc" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CJACEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CJECEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CJACEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CI4CEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Smy4qcyPMEc", + "onEmptyQueue": { + "clickTrackingParams": "CI4CEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "Smy4qcyPMEc" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CI4CEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CI8CEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CI4CEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CI0CEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIF0F4VPlfzynxJrax5zQwHIw5eeLi4kQ-dUaNAz_faK3GEKJTtUV22P3UH-3Oun3OFEPmoJRBtqvxloayih2LorIerjw" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CI0CEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIUsLGHIztk8bUVQocbB4nzn9CObSU4kQn3gMCOGvAol3dn-vKG2Zwdu_6I-fkvbQvG3mKg5eFpI7u32g8qW_pUGCsCAQ" + } + }, + "trackingParams": "CI0CEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CIwCEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "Smy4qcyPMEc" + } + }, + "trackingParams": "CIwCEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CIsCEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CIsCEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CIoCEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCGr1UQ4CwzRMmYoQfHQQWTg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CIoCEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CIkCEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTCSmy4qcyPMEc", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CIkCEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CIgCEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtTbXk0cWN5UE1FYw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CIgCEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CIQCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJksIfJvi7ZH9GppDI83clQMisOhTqgh5qGRLjzVyfSB5V053Hrl3hZfHTUZuS0dTmMs61CXSjCzI9GUWsQiUxX3CIduw", + "actions": [ + { + "clickTrackingParams": "CIQCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CIQCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CIcCEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CIQCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIYCEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLqVxYk_b7hCD4unEl10sjTRlh4DiOMalsYkBTlNaT9_G2DDadz4Scj8M0ujlzrrM0gNlnWnjv18pgphH3oR_hakHp1Y_bEjoSl7a_MiQUhh2NvLGs" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIYCEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKrVQBlpyNKJ33AmEtIkueOxI48UDfTrVcNNhNg8D6xQjiFa-bxeBSQsIVS0Nua80bS1KxIDL51DIMOuDoeCzrRs0S6lvDaRyQmLJ65qV70qI3Jo-A" + } + }, + "trackingParams": "CIYCEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CIQCEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "Smy4qcyPMEc" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CIUCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CIUCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "Smy4qcyPMEc" }, + "actions": [ + { + "clickTrackingParams": "CIUCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpIF0F4VPlfzynxJrax5zQwHIw5eeLi4kQ-dUaNAz_faK3GEKJTtUV22P3UH-3Oun3OFEPmoJRBtqvxloayih2LorIerjw" + } + } + ] + } + }, + { + "clickTrackingParams": "CIUCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "Smy4qcyPMEc" } + } + }, + { + "clickTrackingParams": "CIUCEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "Smy4qcyPMEc" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "Smy4qcyPMEc" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CPEBEMn0AhgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIICEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CIECEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "cmEIneYW2yk", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CIECEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Paint The Town Blue (from the series Arcane League of Legends) - Ashnikko" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Paint The Town Blue (from the series Arcane League of Legends) - Ashnikko" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Paint The Town Blue (from the series Arcane League of Legends)", + "navigationEndpoint": { + "clickTrackingParams": "CPEBEMn0AhgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "cmEIneYW2yk", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Ashnikko", + "navigationEndpoint": { + "clickTrackingParams": "CPEBEMn0AhgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCn3fPGV_gVYAmpgb1APyQug", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + "navigationEndpoint": { + "clickTrackingParams": "CPEBEMn0AhgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "1:55" }], + "accessibility": { + "accessibilityData": { + "label": "1 minute, 55 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CIACEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "cmEIneYW2yk", + "playlistId": "RDAMVMcmEIneYW2yk", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1jbUVJbmVZVzJ5aw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CIACEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CP4BEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "cmEIneYW2yk", + "onEmptyQueue": { + "clickTrackingParams": "CP4BEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "cmEIneYW2yk" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CP4BEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CP8BEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CP4BEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CPwBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "cmEIneYW2yk", + "onEmptyQueue": { + "clickTrackingParams": "CPwBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "cmEIneYW2yk" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CPwBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CP0BEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CPwBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPsBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJQOPJ9TN5uFw73Ve7GQrKcp5NTJGFyMvpzZXUr7PR5ANxJuuTIJ32NIhu5UKwGvBx2fR9PsjViYW0qxWJZPgEYjz1xMQ" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPsBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLgvqLgGsVEs8vnnWeUAz4uM1i7mUI_e1_pj79p7Jos-V_Y6YeEzjPARUMEgU-N4TJXBZpJAgsP4pq64gNWejFownE8jQ" + } + }, + "trackingParams": "CPsBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CPoBEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "cmEIneYW2yk" + } + }, + "trackingParams": "CPoBEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CPkBEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CPkBEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CPgBEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCn3fPGV_gVYAmpgb1APyQug", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CPgBEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CPcBEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTCcmEIneYW2yk", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CPcBEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CPYBEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtjbUVJbmVZVzJ5aw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CPYBEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CPIBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKmWKVA2NRsxs29-qxW3TmT-bdvF7t5htizfVYHxT2NRLJH6yPq7WuB8zYTWsgvMSCdGxwtPzwnZGDoRmjoRa5yROAyxA", + "actions": [ + { + "clickTrackingParams": "CPIBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CPIBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CPUBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CPIBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPQBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI75O9Q4oxPNOJCjKgZ2qsVw_VFpofVyPriX5jRdemAhUK9xRO9g3WdnLnZr_JeA1JwfoBxXyzn3GucjIKkMpRfl8eQGfwnSU7WexVgO-e2XHpJz0w" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPQBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLWSEY3XMNygNDWM4h9YBm0GetM3DBjIp7P2obz-Xwop3DmpNkMlhHxsVd37LHiR8Yw6ZmntWEJml7oyt8_ngFubmGNLXceupm4Y3INXpiqfi3Wrok" + } + }, + "trackingParams": "CPQBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CPIBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "cmEIneYW2yk" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CPMBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CPMBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "cmEIneYW2yk" }, + "actions": [ + { + "clickTrackingParams": "CPMBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpJQOPJ9TN5uFw73Ve7GQrKcp5NTJGFyMvpzZXUr7PR5ANxJuuTIJ32NIhu5UKwGvBx2fR9PsjViYW0qxWJZPgEYjz1xMQ" + } + } + ] + } + }, + { + "clickTrackingParams": "CPMBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "cmEIneYW2yk" } + } + }, + { + "clickTrackingParams": "CPMBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "cmEIneYW2yk" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "cmEIneYW2yk" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CN8BEMn0AhgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CPABEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CO8BEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "HFVM4QE1qBA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CO8BEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play To Ashes and Blood (from the series Arcane League of Legends) - Woodkid" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause To Ashes and Blood (from the series Arcane League of Legends) - Woodkid" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "To Ashes and Blood (from the series Arcane League of Legends)", + "navigationEndpoint": { + "clickTrackingParams": "CN8BEMn0AhgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "HFVM4QE1qBA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Woodkid", + "navigationEndpoint": { + "clickTrackingParams": "CN8BEMn0AhgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCqishLHg7u5voH0sEmR-l6Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + "navigationEndpoint": { + "clickTrackingParams": "CN8BEMn0AhgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "4:06" }], + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 6 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CO4BEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "HFVM4QE1qBA", + "playlistId": "RDAMVMHFVM4QE1qBA", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1IRlZNNFFFMXFCQQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CO4BEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "COwBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "HFVM4QE1qBA", + "onEmptyQueue": { + "clickTrackingParams": "COwBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "HFVM4QE1qBA" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "COwBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CO0BEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "COwBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "COoBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "HFVM4QE1qBA", + "onEmptyQueue": { + "clickTrackingParams": "COoBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "HFVM4QE1qBA" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "COoBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "COsBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "COoBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COkBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLjAmuZT4NHoOiN3GYDGQr_LLe8ytFGKt0e7LUmN5rlo7dcT7iP4Tpql63XAmz7r0Ux9i_XlwwTCw7SFJ0BAzlj2OGVsg" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COkBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLtrbWTp8wA9JQ70qPBe71VR3tcqUvuvzO0NZ7zPv53BSZIw5_tMYZuYBVZlzKe31N8v3Nv1P5smN5GEr0A5rYBPei0MA" + } + }, + "trackingParams": "COkBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "COgBEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "HFVM4QE1qBA" + } + }, + "trackingParams": "COgBEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "COcBEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "COcBEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "COYBEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCqishLHg7u5voH0sEmR-l6Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "COYBEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "COUBEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTCHFVM4QE1qBA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "COUBEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "COQBEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtIRlZNNFFFMXFCQQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "COQBEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "COABEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLekyNjaTcgoUKfvcNgIfnBNYSzVUwDJC7B0MUAkLzfofFKUvhdn50mINiqRtYHYJLz_Q85wKzLCccUDqajCaz2QrAWyw", + "actions": [ + { + "clickTrackingParams": "COABEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "COABEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "COMBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "COABEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COIBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLU1FwVxYBvSAqzMFyMkqKcNd1-XwiJg3-ehzXJ-OY7R1-Skx3gDi9dt_KDKxjP-tKTR1phlT0bmgM51i25wYyv5rJlLmaDQnz5aLgE4HRirR2fQe0" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COIBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIGGsW4PZAzNda6jEsW1ZOZbR1L-Ymcu1-mOEPyE2N1gW5bGZcrAX7W-D-pZPhHqyetKgm7yg1i9gi8-R0akoTN0D269uFG3S7BIN-1sgr3lLebZEQ" + } + }, + "trackingParams": "COIBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "COABEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "HFVM4QE1qBA" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "COEBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "COEBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "HFVM4QE1qBA" }, + "actions": [ + { + "clickTrackingParams": "COEBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpLjAmuZT4NHoOiN3GYDGQr_LLe8ytFGKt0e7LUmN5rlo7dcT7iP4Tpql63XAmz7r0Ux9i_XlwwTCw7SFJ0BAzlj2OGVsg" + } + } + ] + } + }, + { + "clickTrackingParams": "COEBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "HFVM4QE1qBA" } + } + }, + { + "clickTrackingParams": "COEBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "HFVM4QE1qBA" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "HFVM4QE1qBA" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CM0BEMn0AhgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CN4BEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CN0BEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "O0qHqHt3JiY", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CN0BEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Hellfire (from the series Arcane League of Legends) - Fever 333" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Hellfire (from the series Arcane League of Legends) - Fever 333" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Hellfire (from the series Arcane League of Legends)", + "navigationEndpoint": { + "clickTrackingParams": "CM0BEMn0AhgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "O0qHqHt3JiY", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Fever 333", + "navigationEndpoint": { + "clickTrackingParams": "CM0BEMn0AhgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCqRcnDXGwIt_mCXNuzKVqqg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + "navigationEndpoint": { + "clickTrackingParams": "CM0BEMn0AhgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "2:45" }], + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 45 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CNwBEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "O0qHqHt3JiY", + "playlistId": "RDAMVMO0qHqHt3JiY", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1PMHFIcUh0M0ppWQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CNwBEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CNoBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "O0qHqHt3JiY", + "onEmptyQueue": { + "clickTrackingParams": "CNoBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "O0qHqHt3JiY" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CNoBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CNsBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CNoBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CNgBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "O0qHqHt3JiY", + "onEmptyQueue": { + "clickTrackingParams": "CNgBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "O0qHqHt3JiY" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CNgBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CNkBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CNgBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNcBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKfdUV-7Ye9mbwZI9p0gCiEXVgSalQcr5Mp4xMxgIyA4KScAMOLoC3OTbnSUZUSgcrsfkkwyN6ISyQ1DlhvZS4sNXEcXA" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNcBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIVaMw-teIKlu3fujrqNZO_4B10x-8W_jeh0Hs9i2sO_e2EWGh_g5lvCaedA74yJM6z4zZGf4xFY_aIpxqQaZqXQiJIEA" + } + }, + "trackingParams": "CNcBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CNYBEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "O0qHqHt3JiY" + } + }, + "trackingParams": "CNYBEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CNUBEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CNUBEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CNQBEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCqRcnDXGwIt_mCXNuzKVqqg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CNQBEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CNMBEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTCO0qHqHt3JiY", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CNMBEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CNIBEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtPMHFIcUh0M0ppWQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CNIBEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CM4BEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI1QyqJLkbe4IvBDX-9L1RB5FweVjDoQrKBBnWSIzAir6LyNrRUql6uEsXimMpGN4ZAQQKYlEm8SXc3RP1siViLtSX9tw", + "actions": [ + { + "clickTrackingParams": "CM4BEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CM4BEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CNEBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CM4BEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNABEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKAhucyMxn-GzsRCVj9RRgqP3z1ZHbKVvL1HjuE110132-aPuNuPn7tlBJrizeMtjt4jDIv7jjN5i7WDEAnP-TEYYM0z1sO8gnL7IePVSztTlqUOH8" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNABEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL3YMMArLekRtBbQko0lIJHI3B7LOytxcWrxirUoEr0xkMV3SX6Sj1ISgBxwfUnV7l9Acurlwa7zPi5k5HwoNEUrkicqAodIXyTv--mYvwGxXRVNjs" + } + }, + "trackingParams": "CNABEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CM4BEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "O0qHqHt3JiY" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CM8BEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CM8BEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "O0qHqHt3JiY" }, + "actions": [ + { + "clickTrackingParams": "CM8BEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpKfdUV-7Ye9mbwZI9p0gCiEXVgSalQcr5Mp4xMxgIyA4KScAMOLoC3OTbnSUZUSgcrsfkkwyN6ISyQ1DlhvZS4sNXEcXA" + } + } + ] + } + }, + { + "clickTrackingParams": "CM8BEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "O0qHqHt3JiY" } + } + }, + { + "clickTrackingParams": "CM8BEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "O0qHqHt3JiY" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "O0qHqHt3JiY" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CLoBEMn0AhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CMwBEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CMsBEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "rfDBTQNdj-M", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CMsBEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Renegade (We Never Run) (from the series Arcane League of Legends) - Raja Kumari" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Renegade (We Never Run) (from the series Arcane League of Legends) - Raja Kumari" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Renegade (We Never Run) (from the series Arcane League of Legends) (feat. Jarina De Marco)", + "navigationEndpoint": { + "clickTrackingParams": "CLoBEMn0AhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "rfDBTQNdj-M", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Raja Kumari", + "navigationEndpoint": { + "clickTrackingParams": "CLoBEMn0AhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCm9GDfNgJCv-FJkWTIaiFIg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { "text": " & " }, + { + "text": "Stefflon Don", + "navigationEndpoint": { + "clickTrackingParams": "CLoBEMn0AhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCfW0_9uspt55KDtOZNPcSFg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + "navigationEndpoint": { + "clickTrackingParams": "CLoBEMn0AhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "2:42" }], + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 42 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CMoBEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "rfDBTQNdj-M", + "playlistId": "RDAMVMrfDBTQNdj-M", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1yZkRCVFFOZGotTQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CMoBEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CMgBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "rfDBTQNdj-M", + "onEmptyQueue": { + "clickTrackingParams": "CMgBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "rfDBTQNdj-M" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CMgBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CMkBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CMgBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CMYBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "rfDBTQNdj-M", + "onEmptyQueue": { + "clickTrackingParams": "CMYBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "rfDBTQNdj-M" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CMYBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CMcBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CMYBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMUBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL61B0gzSnEOJCDxjlko2IwZwj5vNPZAFTaZQ6uphzWpWdeJvNZ3guJGMpYp46eeYSM3XSV9DYbOz-GQ64mX70wOYzyyg" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMUBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKeuaVC6oAxfjPwXlylY68IpLZOujgWAtRmNxxG56ae9RlmSPbnKam0AfYDGDysEmiXWUmTYKS6o6Mb0L79O_X4qaGsTA" + } + }, + "trackingParams": "CMUBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CMQBEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "rfDBTQNdj-M" + } + }, + "trackingParams": "CMQBEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CMMBEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CMMBEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CMIBEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCm9GDfNgJCv-FJkWTIaiFIg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CMIBEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CMEBEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTCrfDBTQNdj-M", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CMEBEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CMABEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtyZkRCVFFOZGotTQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CMABEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CLwBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI-te4aRDe83rD88NkPzUSYMonXWc6ruyJ_aIawn54Slki7bDKB0SPCv-cdc0G-UNGqltNxwOG3iQ7eYIZ4NG8LAQJZ5w", + "actions": [ + { + "clickTrackingParams": "CLwBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CLwBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CL8BEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CLwBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CL4BEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJJmu29NMMYdpm8kyAvUZQk0FbSJuSuwmqV8Z95k0ltKyv29XHXzexWFScvRV0Nevy61cmkAUejak3ds3rz2uNSV6faTzoeX2T6zOK1skjFdtrR41s" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CL4BEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIFy7zuRvfKYt8KoXTc8TIPxuafhR2rmczd5LYFSVD845vAuzZQ6TnJN8pis-lPsLj9E_46Zb4Jzy_G-1v0nJ8JUyoqakhXsKu2FLPEH-VahaKiTOM" + } + }, + "trackingParams": "CL4BEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CLwBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "rfDBTQNdj-M" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CL0BEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CL0BEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "rfDBTQNdj-M" }, + "actions": [ + { + "clickTrackingParams": "CL0BEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpL61B0gzSnEOJCDxjlko2IwZwj5vNPZAFTaZQ6uphzWpWdeJvNZ3guJGMpYp46eeYSM3XSV9DYbOz-GQ64mX70wOYzyyg" + } + } + ] + } + }, + { + "clickTrackingParams": "CL0BEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "rfDBTQNdj-M" } + } + }, + { + "clickTrackingParams": "CL0BEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "rfDBTQNdj-M" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "badges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CLsBEKHtAhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, + "accessibilityData": { + "accessibilityData": { "label": "Explicit" } + } + } + } + ], + "playlistItemData": { "videoId": "rfDBTQNdj-M" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CKgBEMn0AhgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/MiN4KEyFzPNKECd0md-d4FtMpzbpVChSp_lWmh4w14CTfcLix05BOgS3TD5nQlrllMvp2_6T_e3lIJaD=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/MiN4KEyFzPNKECd0md-d4FtMpzbpVChSp_lWmh4w14CTfcLix05BOgS3TD5nQlrllMvp2_6T_e3lIJaD=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CLkBEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CLgBEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "_M409k9cOcg", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CLgBEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 특 S-Class - Stray Kids" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 특 S-Class - Stray Kids" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "특 S-Class", + "navigationEndpoint": { + "clickTrackingParams": "CKgBEMn0AhgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "_M409k9cOcg", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Stray Kids", + "navigationEndpoint": { + "clickTrackingParams": "CKgBEMn0AhgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "5-STAR", + "navigationEndpoint": { + "clickTrackingParams": "CKgBEMn0AhgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_zR25p24PqIC", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "3:16" }], + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 16 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CLcBEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "_M409k9cOcg", + "playlistId": "RDAMVM_M409k9cOcg", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1fTTQwOWs5Y09jZw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CLcBEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CLUBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "_M409k9cOcg", + "onEmptyQueue": { + "clickTrackingParams": "CLUBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "_M409k9cOcg" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CLUBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CLYBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CLUBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CLMBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "_M409k9cOcg", + "onEmptyQueue": { + "clickTrackingParams": "CLMBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "_M409k9cOcg" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CLMBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CLQBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CLMBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLIBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKidE_jtK_7DoYO3as5eXNNSIu1_IZBKbWM1PrYMqUCLPBlMods46mgCpMw1-eWoumG18GpeOCmXAMitdH5-txtCoRwcQ" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLIBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJKvI6zS028w3uRxYmD7H-N3vH3Y2ilNUI-IAuRMUS0x1xykHeLCN_1AIyfHqKiaNlkAN6CLXtO10ZaqeAzU5_jFseW8g" + } + }, + "trackingParams": "CLIBEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CLEBEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "_M409k9cOcg" + } + }, + "trackingParams": "CLEBEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CLABEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_zR25p24PqIC", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CLABEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CK8BEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CK8BEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CK4BEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTC_M409k9cOcg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CK4BEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CK0BEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtfTTQwOWs5Y09jZw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CK0BEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CKkBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLO5vVttGmgPvKg4i-_6uLQVqACn61we1vlkRhPzd8iR3_MXMcmaIzuMRa5M08kaVqWCohIdF9qhw2LGmGkjLwePb9QNQ", + "actions": [ + { + "clickTrackingParams": "CKkBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CKkBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CKwBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CKkBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKsBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJbQgQdYcy_-fgRIW6hm2SELTyrathL9vgW5LnSFWsRIS2ZX5Ikb_oe0uNJIq-l_YHbLmXwaXepVJshmYpocr4GFB7O0i-H-WnJiDBhpEu6khNR1hA" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKsBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL-pTuauR5Cz-gymTDxt-XZ-198APDeFxhtQlpuaYoUpSIlp6yab7ZrlCVYU8PR_gScQNR9PNc-K-ciNKPvcNOYR9gSZ9bMQr5BviCwsbN6hdcuqcY" + } + }, + "trackingParams": "CKsBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CKkBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "_M409k9cOcg" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CKoBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CKoBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "_M409k9cOcg" }, + "actions": [ + { + "clickTrackingParams": "CKoBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpKidE_jtK_7DoYO3as5eXNNSIu1_IZBKbWM1PrYMqUCLPBlMods46mgCpMw1-eWoumG18GpeOCmXAMitdH5-txtCoRwcQ" + } + } + ] + } + }, + { + "clickTrackingParams": "CKoBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "_M409k9cOcg" } + } + }, + { + "clickTrackingParams": "CKoBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "_M409k9cOcg" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "_M409k9cOcg" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CJUBEMn0AhgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKcBEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CKYBEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "MpG_ft84IoE", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CKYBEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Sucker (from the series Arcane League of Legends) - Marcus King" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Sucker (from the series Arcane League of Legends) - Marcus King" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Sucker (from the series Arcane League of Legends)", + "navigationEndpoint": { + "clickTrackingParams": "CJUBEMn0AhgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "MpG_ft84IoE", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Marcus King", + "navigationEndpoint": { + "clickTrackingParams": "CJUBEMn0AhgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UC5xpuW4UI520aDhKXGaJYgQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + "navigationEndpoint": { + "clickTrackingParams": "CJUBEMn0AhgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "3:45" }], + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 45 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CKUBEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "MpG_ft84IoE", + "playlistId": "RDAMVMMpG_ft84IoE", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1NcEdfZnQ4NElvRQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CKUBEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CKMBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "MpG_ft84IoE", + "onEmptyQueue": { + "clickTrackingParams": "CKMBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "MpG_ft84IoE" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CKMBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CKQBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CKMBEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CKEBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "MpG_ft84IoE", + "onEmptyQueue": { + "clickTrackingParams": "CKEBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "MpG_ft84IoE" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CKEBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CKIBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CKEBEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKABEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJ9c6gEU3QCcx1BSoSVXcRh0GmaaEjH82s6yhzszh_Bdir0hR52JWMfDtpCwIkzP36f_d4pPPG2TJWDSVk4yWKYl9kZ9w" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKABEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI2Qt_ORl0319psFM_1WIkaILh4nR7dxUOvUL0W7xfGkmJfaNomjIS9TOD_KaoS7n37KmHzR4TSANwWjelk_toYhfLFsA" + } + }, + "trackingParams": "CKABEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CJ8BEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "MpG_ft84IoE" + } + }, + "trackingParams": "CJ8BEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CJ4BEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CJ4BEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CJ0BEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UC5xpuW4UI520aDhKXGaJYgQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CJ0BEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CJwBEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTCMpG_ft84IoE", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CJwBEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CJsBEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtNcEdfZnQ4NElvRQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CJsBEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CJcBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKEpZZE0aONRtKodmrpdmXUrY-UBSEc58jpLzrEE3cawN1ZZXqlruX-sbH5NgB_FOX7ywQXMpF9U_ZKlAZaZTA5TG_BxA", + "actions": [ + { + "clickTrackingParams": "CJcBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CJcBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CJoBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CJcBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJkBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpImOhhgRG7EyVURBBsY8ZBmBXNVfvfboyxM97byKDAtRsvvfIWIWSI5Lo7wdfff6DJHZ4FBbRHTXie5PxrfuxbwR1qXZGUHQjQGaxuhqMPjXozBuNU" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJkBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJXuYREvQi5VGJKNAC_8I2fJk1IXR-TkKvhur-pavoWhBVmGSNOucXSFAXaLAeG_bE-MJcJ6q8SG-0XQy9l60iDNz94Ztnsj96QS930FJAS-auePgs" + } + }, + "trackingParams": "CJkBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CJcBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "MpG_ft84IoE" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CJgBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CJgBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "MpG_ft84IoE" }, + "actions": [ + { + "clickTrackingParams": "CJgBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpJ9c6gEU3QCcx1BSoSVXcRh0GmaaEjH82s6yhzszh_Bdir0hR52JWMfDtpCwIkzP36f_d4pPPG2TJWDSVk4yWKYl9kZ9w" + } + } + ] + } + }, + { + "clickTrackingParams": "CJgBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "MpG_ft84IoE" } + } + }, + { + "clickTrackingParams": "CJgBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "MpG_ft84IoE" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "badges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CJYBEKHtAhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, + "accessibilityData": { + "accessibilityData": { "label": "Explicit" } + } + } + } + ], + "playlistItemData": { "videoId": "MpG_ft84IoE" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CIMBEMn0AhgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJQBEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CJMBEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "g7W7MisCKWk", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CJMBEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play I Can't Hear It Now (from the series Arcane League of Legends) - Freya Ridings" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause I Can't Hear It Now (from the series Arcane League of Legends) - Freya Ridings" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "I Can't Hear It Now (from the series Arcane League of Legends)", + "navigationEndpoint": { + "clickTrackingParams": "CIMBEMn0AhgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "g7W7MisCKWk", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Freya Ridings", + "navigationEndpoint": { + "clickTrackingParams": "CIMBEMn0AhgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCw5G4AVjJ_YI9BOTjj-v1iw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + "navigationEndpoint": { + "clickTrackingParams": "CIMBEMn0AhgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "2:42" }], + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 42 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CJIBEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "g7W7MisCKWk", + "playlistId": "RDAMVMg7W7MisCKWk", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1nN1c3TWlzQ0tXaw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CJIBEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CJABEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "g7W7MisCKWk", + "onEmptyQueue": { + "clickTrackingParams": "CJABEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "g7W7MisCKWk" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CJABEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CJEBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CJABEL7uBRgBIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CI4BEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "g7W7MisCKWk", + "onEmptyQueue": { + "clickTrackingParams": "CI4BEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "g7W7MisCKWk" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CI4BEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CI8BEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CI4BEPvvBRgCIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CI0BEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKeAvdRNEP28jVTUpXi4If9ajEHzhxP3bk0zX2GZh5eltyTMtEgAtWuqBbNUsBT4Sw-eTwx-XpKYEYsHz3nXAl6heQpvw" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CI0BEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK2yDbGheEL5Wn_pRBBrdShKH7x-gDct2tOOlvP9nhpCBMaRlHqIeW5_PuT--pS-QghOM6pMRRNWrPOtomHdqPIHpuzeQ" + } + }, + "trackingParams": "CI0BEIT_BRgDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CIwBEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx", + "addToPlaylistEndpoint": { + "videoId": "g7W7MisCKWk" + } + }, + "trackingParams": "CIwBEMOUBhgEIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CIsBEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CIsBEI_7BRgFIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CIoBEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "UCw5G4AVjJ_YI9BOTjj-v1iw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CIoBEJD7BRgGIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CIkBEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx", + "browseEndpoint": { + "browseId": "MPTCg7W7MisCKWk", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CIkBEK-jChgHIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CIgBEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtnN1c3TWlzQ0tXaw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CIgBEJH7BRgIIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CIQBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKfY1dFzcWYpsDDIEj87pq9b7oRgrfBgOvI054GBeGohrZIIhRnBICC4pHqCmjC4EEVc64U4i-Q3XLDYj3jmqdcNN_0iw", + "actions": [ + { + "clickTrackingParams": "CIQBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CIQBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CIcBEMrHAyITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CIQBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIYBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKOQEKF2LECWPZNKV_qqepmc6yB9eIx5c0Sg6vVn_674Qeup1Ek9xjH4TCbHznohsRUbbIBPyh2_JKDgIcJg2U4x82UrJVzEzmxXF1bmReBzcoHA58" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIYBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKlzdmFdV0sB0gYK2BU-tdh_Y3hL6X0VosUdMl4bBblYA5r8veEKS1-f4xcRRU5rWMjJZX2j0WBEcnLbQ-AmsTbFb3dKj8ft1gLdtgFzkM3skn9M8s" + } + }, + "trackingParams": "CIYBEP7eChgKIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + ], + "trackingParams": "CIQBEKc7IhMIj5CZq8i8igMVbARzCR1kISzx", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "g7W7MisCKWk" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CIUBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CIUBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "g7W7MisCKWk" }, + "actions": [ + { + "clickTrackingParams": "CIUBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpKeAvdRNEP28jVTUpXi4If9ajEHzhxP3bk0zX2GZh5eltyTMtEgAtWuqBbNUsBT4Sw-eTwx-XpKYEYsHz3nXAl6heQpvw" + } + } + ] + } + }, + { + "clickTrackingParams": "CIUBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "g7W7MisCKWk" } + } + }, + { + "clickTrackingParams": "CIUBEKVBGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "g7W7MisCKWk" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "g7W7MisCKWk" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CHEQyfQCGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIIBEIS_AiITCI-QmavIvIoDFWwEcwkdZCEs8Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CIEBEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "watchEndpoint": { + "videoId": "B-XivnZunVM", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CIEBEMjeAiITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Heavy Is The Crown (Original Score) - Mike Shinoda" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Heavy Is The Crown (Original Score) - Mike Shinoda" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Heavy Is The Crown (Original Score)", + "navigationEndpoint": { + "clickTrackingParams": "CHEQyfQCGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "B-XivnZunVM", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Mike Shinoda", + "navigationEndpoint": { + "clickTrackingParams": "CHEQyfQCGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCjZCpUyBTuYRQhkYKZR_mdg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { "text": " & " }, + { + "text": "Emily Armstrong", + "navigationEndpoint": { + "clickTrackingParams": "CHEQyfQCGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCCDcGPkq3rOACsM5_j5QiHg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + "navigationEndpoint": { + "clickTrackingParams": "CHEQyfQCGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "1:42" }], + "accessibility": { + "accessibilityData": { + "label": "1 minute, 42 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CIABEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "B-XivnZunVM", + "playlistId": "RDAMVMB-XivnZunVM", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1CLVhpdm5adW5WTQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CIABEJvzBRgAIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CH4Qvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "B-XivnZunVM", + "onEmptyQueue": { + "clickTrackingParams": "CH4Qvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "B-XivnZunVM" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CH4Qvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CH8QyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CH4Qvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CHwQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "B-XivnZunVM", + "onEmptyQueue": { + "clickTrackingParams": "CHwQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "B-XivnZunVM" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CHwQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CH0QyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CHwQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Remove from library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_SAVED" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CHsQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIhX8_SUri5R_LR-kueaQjkK1sEs-uXzNmT3BzvVbfiEk3usWBWO0TgfUgZIxHC1gsuNBvazs0RH2ISzq-KmePdWMEdBw" + } + }, + "toggledText": { + "runs": [{ "text": "Save to library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_ADD" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CHsQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLMVBGpYfIzORdLL3hAY1dcX2a8o84wwkWTSKqKvUEV0luotAqx8KbeoM6HLef7y8rE8BgcHLmUAZeEGWIN7QQx6TuWAg" + } + }, + "trackingParams": "CHsQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CHoQw5QGGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToPlaylistEndpoint": { + "videoId": "B-XivnZunVM" + } + }, + "trackingParams": "CHoQw5QGGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CHkQj_sFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPREb_muqZ7sOFHBp", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CHkQj_sFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CHgQkPsFGAYiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCjZCpUyBTuYRQhkYKZR_mdg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CHgQkPsFGAYiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CHcQr6MKGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPTCB-XivnZunVM", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CHcQr6MKGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CHYQkfsFGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtCLVhpdm5adW5WTQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CHYQkfsFGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CHIQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI0S9REpoGWDTzzW09o1_BNgZhMBTZkQiIpvCAjBO76HCzh9JvY0AfNmPYAARaZXhUyChTbVxooGMSThOzVymfSGKjsVQ", + "actions": [ + { + "clickTrackingParams": "CHIQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CHIQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CHUQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CHIQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CHQQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLYiOxHzVqxA9GyCxlB1KtkpqpD3EcCuSBEoYbCTNNhNXeNMmH3P7pxBcL0nYM4OETH1cFg7r-VbiAU1ccA8F4v12KK9nP4sMsx8QUooUKUcnUDlvY" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CHQQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJqMJmf0W1uU0NSg5gIcqnUSEok5tgGPcB3twRANKUum9ZN_CAw6jQCrkpw4gxckTs7yJ8Z0twXyB3xegNCoseqDIdxvdLsaSbr_avxT9z27891mVQ" + } + }, + "trackingParams": "CHQQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + } + ], + "trackingParams": "CHIQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "B-XivnZunVM" }, + "likeStatus": "LIKE", + "trackingParams": "CHMQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CHMQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "B-XivnZunVM" }, + "actions": [ + { + "clickTrackingParams": "CHMQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpLMVBGpYfIzORdLL3hAY1dcX2a8o84wwkWTSKqKvUEV0luotAqx8KbeoM6HLef7y8rE8BgcHLmUAZeEGWIN7QQx6TuWAg" + } + } + ] + } + }, + { + "clickTrackingParams": "CHMQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "B-XivnZunVM" } + } + }, + { + "clickTrackingParams": "CHMQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "B-XivnZunVM" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "B-XivnZunVM" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CF8QyfQCGAkiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/gHEirg29K3Qf3JREf5nXADzhEsWvG60jF3qzOBTZ-ZLGRdNp64_lcj-pI5GMrkhy1JPU5EIDE4WgmpU=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/gHEirg29K3Qf3JREf5nXADzhEsWvG60jF3qzOBTZ-ZLGRdNp64_lcj-pI5GMrkhy1JPU5EIDE4WgmpU=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CHAQhL8CIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CG8QyN4CIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "ZeIneYtQ1rw", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CG8QyN4CIhMIj5CZq8i8igMVbARzCR1kISzx", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play CASE 143 - Stray Kids" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause CASE 143 - Stray Kids" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "CASE 143", + "navigationEndpoint": { + "clickTrackingParams": "CF8QyfQCGAkiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "ZeIneYtQ1rw", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Stray Kids", + "navigationEndpoint": { + "clickTrackingParams": "CF8QyfQCGAkiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "MAXIDENT", + "navigationEndpoint": { + "clickTrackingParams": "CF8QyfQCGAkiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPREb_NuxPbSpDTkj", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "3:12" }], + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 12 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CG4Qm_MFGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "ZeIneYtQ1rw", + "playlistId": "RDAMVMZeIneYtQ1rw", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1aZUluZVl0UTFydw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CG4Qm_MFGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CGwQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "ZeIneYtQ1rw", + "onEmptyQueue": { + "clickTrackingParams": "CGwQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "ZeIneYtQ1rw" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CGwQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CG0QyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CGwQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CGoQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "ZeIneYtQ1rw", + "onEmptyQueue": { + "clickTrackingParams": "CGoQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "ZeIneYtQ1rw" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CGoQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CGsQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CGoQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CGkQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL3GKh5Cqe4VCDX9Uc0vYrJ8gYAuFhpbFa4HavCHhfJ6qhaVmu9yiWUjeMrqo4B0-JF3TCjI70l0uIoC2eXnKS4Zbw38g" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CGkQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJbf4X6F2LK6g9gTxqQUcZddRSPM2Er4kFC7foxaLgQet48KSsIc1LsZCKm7uOou6kECwlUQR9m9p3giLd_SgZRAlAFzQ" + } + }, + "trackingParams": "CGkQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CGgQw5QGGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToPlaylistEndpoint": { + "videoId": "ZeIneYtQ1rw" + } + }, + "trackingParams": "CGgQw5QGGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CGcQj_sFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPREb_NuxPbSpDTkj", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CGcQj_sFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CGYQkPsFGAYiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CGYQkPsFGAYiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CGUQr6MKGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPTCZeIneYtQ1rw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CGUQr6MKGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CGQQkfsFGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtaZUluZVl0UTFydw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CGQQkfsFGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CGAQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpII-RxJ7JV6q2A3QCeYrVjUC6DNfblYhjfDTlqd_DKNBzhwMx_xM-syzRa68diKThxM-WVqLiafuOuku8Uqnrbyi20Qig", + "actions": [ + { + "clickTrackingParams": "CGAQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CGAQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CGMQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CGAQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CGIQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKpZ9vju4BcE-BjuBP8WziHWeKVK4isxQuCSTw0djUOIQii9zWCrdRPoc9QZSqej--mm6EX8_daTyE5etYIBiayG7PVHJOaLK8Pw-kq9z1UYZDRIxg" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CGIQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpId3TW3GEP2nB61Er8wA0qKgkkxo71VY3KHvg-ygK7Y7e4PDQfuFNfcvuV01W-4wPErx8L2eQNWCB0gf7JuDkT6wi8eShYmZtN-Z8uw6ygiyUcl3iU" + } + }, + "trackingParams": "CGIQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + } + ], + "trackingParams": "CGAQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "ZeIneYtQ1rw" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CGEQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CGEQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "ZeIneYtQ1rw" }, + "actions": [ + { + "clickTrackingParams": "CGEQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpL3GKh5Cqe4VCDX9Uc0vYrJ8gYAuFhpbFa4HavCHhfJ6qhaVmu9yiWUjeMrqo4B0-JF3TCjI70l0uIoC2eXnKS4Zbw38g" + } + } + ] + } + }, + { + "clickTrackingParams": "CGEQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "ZeIneYtQ1rw" } + } + }, + { + "clickTrackingParams": "CGEQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "ZeIneYtQ1rw" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "ZeIneYtQ1rw" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CE0QyfQCGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CF4QhL8CIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CF0QyN4CIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "8Go0B7mNcsU", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CF0QyN4CIhMIj5CZq8i8igMVbARzCR1kISzx", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Railway (방찬) Railway (Bang Chan) - Stray Kids" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Railway (방찬) Railway (Bang Chan) - Stray Kids" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Railway (방찬) Railway (Bang Chan)", + "navigationEndpoint": { + "clickTrackingParams": "CE0QyfQCGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "8Go0B7mNcsU", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Stray Kids", + "navigationEndpoint": { + "clickTrackingParams": "CE0QyfQCGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "合 (HOP) HOP", + "navigationEndpoint": { + "clickTrackingParams": "CE0QyfQCGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPREb_hVsLiyk7ZIe", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "2:54" }], + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 54 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CFwQm_MFGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "8Go0B7mNcsU", + "playlistId": "RDAMVM8Go0B7mNcsU", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk04R28wQjdtTmNzVQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CFwQm_MFGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CFoQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "8Go0B7mNcsU", + "onEmptyQueue": { + "clickTrackingParams": "CFoQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "8Go0B7mNcsU" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CFoQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CFsQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CFoQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CFgQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "8Go0B7mNcsU", + "onEmptyQueue": { + "clickTrackingParams": "CFgQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "8Go0B7mNcsU" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CFgQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CFkQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CFgQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CFcQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIun-jrrJjIZqG6ipiXlX-PC64IeJhKHLdxfvWHV3OZ0vHXHDPMSXkzOwNhJMnu3eXShrjJFk7sLXhKzfx-9if3XCOncA" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CFcQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIZNp_jTdc37GYN647rFeAUmVY4UDcznPvlt5X3eiSD0ZkX3hUOj1qLuxA43GwMWG7j3Rcb3V0bRMeb3RuzqLcIv3KFdQ" + } + }, + "trackingParams": "CFcQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CFYQw5QGGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToPlaylistEndpoint": { + "videoId": "8Go0B7mNcsU" + } + }, + "trackingParams": "CFYQw5QGGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CFUQj_sFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPREb_hVsLiyk7ZIe", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CFUQj_sFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CFQQkPsFGAYiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CFQQkPsFGAYiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CFMQr6MKGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPTC8Go0B7mNcsU", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CFMQr6MKGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CFIQkfsFGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgs4R28wQjdtTmNzVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CFIQkfsFGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CE4QpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJsI83RZYer7ykhQS5o4KBnCxyV0zVHfdomSq4wY1Z9F4kRIrlsoPUriA5QwY1eXv9GMyCaNwLap0Rm_7TNqrDMEX0jbw", + "actions": [ + { + "clickTrackingParams": "CE4QpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CE4QpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CFEQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CE4QpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CFAQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKj_LdS5SsS2P4GzepORQdPzuSHWDfMMUnDsMuoLSQoxuSaaIPCXF2a9_qxRLclly6hKwzEJm57VXD6FOL_XC5Tu_ZXPR4qdwGWUXZdiWzYlltXWYw" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CFAQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKjcwOZ4VFJFwaalXxn2BT65AxD9bBM3wgHezOwz8CwtNoZ30qaeBFemCkxZbpiSny9FGQbPfN3N8zrbnCxYkwcBGFNvUJquiiHnF_ZjcZ_EF5DIMc" + } + }, + "trackingParams": "CFAQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + } + ], + "trackingParams": "CE4QpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "8Go0B7mNcsU" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CE8QpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CE8QpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "8Go0B7mNcsU" }, + "actions": [ + { + "clickTrackingParams": "CE8QpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpIun-jrrJjIZqG6ipiXlX-PC64IeJhKHLdxfvWHV3OZ0vHXHDPMSXkzOwNhJMnu3eXShrjJFk7sLXhKzfx-9if3XCOncA" + } + } + ] + } + }, + { + "clickTrackingParams": "CE8QpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "8Go0B7mNcsU" } + } + }, + { + "clickTrackingParams": "CE8QpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "8Go0B7mNcsU" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "8Go0B7mNcsU" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CDsQyfQCGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CEwQhL8CIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CEsQyN4CIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "of7yhvIadWo", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CEsQyN4CIhMIj5CZq8i8igMVbARzCR1kISzx", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Walkin On Water (HIP Ver.) - Stray Kids" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Walkin On Water (HIP Ver.) - Stray Kids" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Walkin On Water (HIP Ver.)", + "navigationEndpoint": { + "clickTrackingParams": "CDsQyfQCGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "of7yhvIadWo", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Stray Kids", + "navigationEndpoint": { + "clickTrackingParams": "CDsQyfQCGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "合 (HOP) HOP", + "navigationEndpoint": { + "clickTrackingParams": "CDsQyfQCGAsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPREb_hVsLiyk7ZIe", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "2:56" }], + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 56 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CEoQm_MFGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "of7yhvIadWo", + "playlistId": "RDAMVMof7yhvIadWo", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1vZjd5aHZJYWRXbw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CEoQm_MFGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CEgQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "of7yhvIadWo", + "onEmptyQueue": { + "clickTrackingParams": "CEgQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "of7yhvIadWo" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CEgQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CEkQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CEgQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CEYQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "of7yhvIadWo", + "onEmptyQueue": { + "clickTrackingParams": "CEYQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "of7yhvIadWo" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CEYQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CEcQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CEYQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CEUQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIbjKkf5YQObYy3vlVpVk5R9pU1arzDI-Of0O2NzSsVebxX942qKPz9qNd3VylcinSSiT2dHV4zplahxusjeIy4h8ZTqQ" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CEUQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK_Wwiwv8JZ9bLYlVBZgGHvBnjFz_ZhOr5LS0T6wJCyhLDo4KRpy8Vsfc_jbSdrmjtJGvOkd3E27A2E5_TNPMk2oT2tSw" + } + }, + "trackingParams": "CEUQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CEQQw5QGGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToPlaylistEndpoint": { + "videoId": "of7yhvIadWo" + } + }, + "trackingParams": "CEQQw5QGGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CEMQj_sFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPREb_hVsLiyk7ZIe", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CEMQj_sFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CEIQkPsFGAYiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CEIQkPsFGAYiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CEEQr6MKGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPTCof7yhvIadWo", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CEEQr6MKGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CEAQkfsFGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtvZjd5aHZJYWRXbw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CEAQkfsFGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CDwQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJbYv1h1OUrab6uw3Iwf5YptgMCXLk7nM7SzVEUPawcicyGXzOIFofHqlNYArKfzDZqhNsP5iBOa2D-EAttqTBDpEvptg", + "actions": [ + { + "clickTrackingParams": "CDwQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CDwQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CD8QyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CDwQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CD4Q_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLy9nNlIcHZpXhg2xU8X6Eb08hblyDrrS17tSbhEtjge14mfaBfylqSiFh492IktiQ0wftVbgahX06--TQi7B4T3KvsX7aTqqhwbdSDhQEBxTq0VSo" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CD4Q_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLdX3we762OHmbplrGgre-3se8Wpcj-ycQ6oIJK7tktfnVrVeD3nbaEAw8j4hDCij3FyP0LRbaOlebq6ESbjnbe-5xGnfh0npX3eFrDKfiWuTP-dh8" + } + }, + "trackingParams": "CD4Q_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + } + ], + "trackingParams": "CDwQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "of7yhvIadWo" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CD0QpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CD0QpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "of7yhvIadWo" }, + "actions": [ + { + "clickTrackingParams": "CD0QpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpIbjKkf5YQObYy3vlVpVk5R9pU1arzDI-Of0O2NzSsVebxX942qKPz9qNd3VylcinSSiT2dHV4zplahxusjeIy4h8ZTqQ" + } + } + ] + } + }, + { + "clickTrackingParams": "CD0QpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "of7yhvIadWo" } + } + }, + { + "clickTrackingParams": "CD0QpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "of7yhvIadWo" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "of7yhvIadWo" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CCkQyfQCGAwiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CDoQhL8CIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CDkQyN4CIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "iqeY3sz8ldk", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CDkQyN4CIhMIj5CZq8i8igMVbARzCR1kISzx", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play U - Stray Kids" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause U - Stray Kids" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "U (feat. TABLO)", + "navigationEndpoint": { + "clickTrackingParams": "CCkQyfQCGAwiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "iqeY3sz8ldk", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Stray Kids", + "navigationEndpoint": { + "clickTrackingParams": "CCkQyfQCGAwiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "合 (HOP) HOP", + "navigationEndpoint": { + "clickTrackingParams": "CCkQyfQCGAwiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPREb_hVsLiyk7ZIe", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "2:44" }], + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 44 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CDgQm_MFGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "iqeY3sz8ldk", + "playlistId": "RDAMVMiqeY3sz8ldk", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1pcWVZM3N6OGxkaw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CDgQm_MFGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CDYQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "iqeY3sz8ldk", + "onEmptyQueue": { + "clickTrackingParams": "CDYQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "iqeY3sz8ldk" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CDYQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CDcQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CDYQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CDQQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "iqeY3sz8ldk", + "onEmptyQueue": { + "clickTrackingParams": "CDQQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "iqeY3sz8ldk" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CDQQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CDUQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CDQQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CDMQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK87dUIoiigjL7f8ao3_xUvRZ0YlIzVEDa4bw2amuaAoLgFqBEMq57zDL280esw6ALaWjrIXXfInRk2Mt2iKM59GKSjQg" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CDMQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJEpQifH_S7--Kuy3duy6aBN-Tt-6ctDtbxmAbJkevolqM4ZjlHxvEMjAdTgmuHOp8_R3rWNGgwiHBiJfrkNjzoyksmAg" + } + }, + "trackingParams": "CDMQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CDIQw5QGGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToPlaylistEndpoint": { + "videoId": "iqeY3sz8ldk" + } + }, + "trackingParams": "CDIQw5QGGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CDEQj_sFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPREb_hVsLiyk7ZIe", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CDEQj_sFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CDAQkPsFGAYiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CDAQkPsFGAYiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CC8Qr6MKGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPTCiqeY3sz8ldk", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CC8Qr6MKGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CC4QkfsFGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtpcWVZM3N6OGxkaw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CC4QkfsFGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CCoQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKa8TXwY0XbLVpHRFUO6k1638oUjG3ApGAtc6au3AKumFlj4agS7fSWPUjmPeyqJjFFak6fcfHZuaza5nTQ4wACLXEr_A", + "actions": [ + { + "clickTrackingParams": "CCoQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CCoQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CC0QyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CCoQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CCwQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJiLi7nP2uBJXlX-iApeIMgh5gqXJmFQ5ABJjEeMRpBSOVZ3zSgDdAWI-3A65SSz41i4HQ3Y9hQuM_qj535Enq7-WjiTeCrNE4zSrnYYdn6gXWr-gM" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CCwQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK3ewywvINefbKQXuaLnXls9en9z1UDNcaDwXSrlwAYNQ5fnOZQTQ7h2o4VMiayWqlRKJLCvlHO7j_qk8J6ZQtRonid4MFQ4sw6JugL95pbeWtE5O8" + } + }, + "trackingParams": "CCwQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + } + ], + "trackingParams": "CCoQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "iqeY3sz8ldk" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CCsQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CCsQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "iqeY3sz8ldk" }, + "actions": [ + { + "clickTrackingParams": "CCsQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpK87dUIoiigjL7f8ao3_xUvRZ0YlIzVEDa4bw2amuaAoLgFqBEMq57zDL280esw6ALaWjrIXXfInRk2Mt2iKM59GKSjQg" + } + } + ] + } + }, + { + "clickTrackingParams": "CCsQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "iqeY3sz8ldk" } + } + }, + { + "clickTrackingParams": "CCsQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "iqeY3sz8ldk" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "iqeY3sz8ldk" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CBcQyfQCGA0iEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CCgQhL8CIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CCcQyN4CIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "vRmkqYlH-nA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CCcQyN4CIhMIj5CZq8i8igMVbARzCR1kISzx", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Bounce Back - Stray Kids" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Bounce Back - Stray Kids" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Bounce Back", + "navigationEndpoint": { + "clickTrackingParams": "CBcQyfQCGA0iEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "vRmkqYlH-nA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Stray Kids", + "navigationEndpoint": { + "clickTrackingParams": "CBcQyfQCGA0iEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "合 (HOP) HOP", + "navigationEndpoint": { + "clickTrackingParams": "CBcQyfQCGA0iEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPREb_hVsLiyk7ZIe", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "3:04" }], + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 4 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CCYQm_MFGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "vRmkqYlH-nA", + "playlistId": "RDAMVMvRmkqYlH-nA", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk12Um1rcVlsSC1uQQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CCYQm_MFGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CCQQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "vRmkqYlH-nA", + "onEmptyQueue": { + "clickTrackingParams": "CCQQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "vRmkqYlH-nA" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CCQQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CCUQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CCQQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CCIQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "vRmkqYlH-nA", + "onEmptyQueue": { + "clickTrackingParams": "CCIQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "vRmkqYlH-nA" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CCIQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CCMQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CCIQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Save to library" }] + }, + "defaultIcon": { "iconType": "LIBRARY_ADD" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CCEQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKVsz503zhksBL_ycx1U7YOCpus2cso_tIwjRvFCiJM2P_FDIAMa55KQITue8EifBaReWRjMand9d-xk9QB_qDAfIIyBA" + } + }, + "toggledText": { + "runs": [{ "text": "Remove from library" }] + }, + "toggledIcon": { "iconType": "LIBRARY_SAVED" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CCEQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLeZg9SRnXiAN_UZeBHZJ19LjXGRoqYrpIYVtZ_O1jTDtEPBZGGS_Vq2INt03wc_rch0u9lYXWm499nMIp7JZc9I9gzTA" + } + }, + "trackingParams": "CCEQhP8FGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CCAQw5QGGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToPlaylistEndpoint": { + "videoId": "vRmkqYlH-nA" + } + }, + "trackingParams": "CCAQw5QGGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to album" }] }, + "icon": { "iconType": "ALBUM" }, + "navigationEndpoint": { + "clickTrackingParams": "CB8Qj_sFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPREb_hVsLiyk7ZIe", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CB8Qj_sFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CB4QkPsFGAYiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CB4QkPsFGAYiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "View song credits" }] + }, + "icon": { "iconType": "PEOPLE_GROUP" }, + "navigationEndpoint": { + "clickTrackingParams": "CB0Qr6MKGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "MPTCvRmkqYlH-nA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CB0Qr6MKGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CBwQkfsFGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgt2Um1rcVlsSC1uQQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CBwQkfsFGAgiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CBgQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKisRgg4OL_WMK8lF872MGgW9PEKx0Glb7VyCDBVN1UsO4Pl4eGTKqzjCe9WiTAOFIt185-e6jfxmoBwgSIN-aIb8V9Qg", + "actions": [ + { + "clickTrackingParams": "CBgQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CBgQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CBsQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CBgQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CBoQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIE_wNixGNcHn9oL64kciTSGc5ZKgj-y1gq2JvP_C4cROaZuEWkZ4PFtYMgqC0XaLi3HHgUot8IsU7E98azdksv8Cx7pLi9tZFMuC65iNe_GSJzAVY" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CBoQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpItlrACp5x0gj7hCvKoSZ3zJ5Wi7MylzKsX4gsFd1ebzECrkLb2Ty3pCPt9xjPuyvnHNvgQ_3iDBfS-PpX00_yechGnxVzJGaAk0yQYna0j_qiXbK8" + } + }, + "trackingParams": "CBoQ_t4KGAoiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + } + ], + "trackingParams": "CBgQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "vRmkqYlH-nA" }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CBkQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CBkQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "vRmkqYlH-nA" }, + "actions": [ + { + "clickTrackingParams": "CBkQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpKVsz503zhksBL_ycx1U7YOCpus2cso_tIwjRvFCiJM2P_FDIAMa55KQITue8EifBaReWRjMand9d-xk9QB_qDAfIIyBA" + } + } + ] + } + }, + { + "clickTrackingParams": "CBkQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "vRmkqYlH-nA" } + } + }, + { + "clickTrackingParams": "CBkQpUEYCyITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "vRmkqYlH-nA" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "vRmkqYlH-nA" } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CAgQyfQCGA4iEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/ovHoY8UBIu8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nT3hLBjoOobwzYb9uspvK59B2j7A", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CBYQhL8CIhMIj5CZq8i8igMVbARzCR1kISzx" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": ["3422552064", "3422552064"] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CBUQyN4CIhMIj5CZq8i8igMVbARzCR1kISzx", + "watchEndpoint": { + "videoId": "ovHoY8UBIu8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CBUQyN4CIhMIj5CZq8i8igMVbARzCR1kISzx", + "playIcon": { "iconType": "PLAY_ARROW" }, + "pauseIcon": { "iconType": "PAUSE" }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { "iconType": "VOLUME_UP" }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Walkin On Water - Stray Kids" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Walkin On Water - Stray Kids" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Walkin On Water", + "navigationEndpoint": { + "clickTrackingParams": "CAgQyfQCGA4iEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "ovHoY8UBIu8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Stray Kids", + "navigationEndpoint": { + "clickTrackingParams": "CAgQyfQCGA4iEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { "text": " • " }, + { "text": "26M views" } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [{ "text": "2:52" }], + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 52 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Start radio" }] }, + "icon": { "iconType": "MIX" }, + "navigationEndpoint": { + "clickTrackingParams": "CBQQm_MFGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "ovHoY8UBIu8", + "playlistId": "RDAMVMovHoY8UBIu8", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1vdkhvWThVQkl1OA%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CBQQm_MFGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Play next" }] }, + "icon": { "iconType": "QUEUE_PLAY_NEXT" }, + "serviceEndpoint": { + "clickTrackingParams": "CBIQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "ovHoY8UBIu8", + "onEmptyQueue": { + "clickTrackingParams": "CBIQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "ovHoY8UBIu8" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CBIQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CBMQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CBIQvu4FGAEiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { "runs": [{ "text": "Add to queue" }] }, + "icon": { "iconType": "ADD_TO_REMOTE_QUEUE" }, + "serviceEndpoint": { + "clickTrackingParams": "CBAQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "ovHoY8UBIu8", + "onEmptyQueue": { + "clickTrackingParams": "CBAQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "watchEndpoint": { + "videoId": "ovHoY8UBIu8" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CBAQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CBEQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CBAQ--8FGAIiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [{ "text": "Save to playlist" }] + }, + "icon": { "iconType": "ADD_TO_PLAYLIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CA8Qw5QGGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToPlaylistEndpoint": { + "videoId": "ovHoY8UBIu8" + } + }, + "trackingParams": "CA8Qw5QGGAMiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Go to artist" }] }, + "icon": { "iconType": "ARTIST" }, + "navigationEndpoint": { + "clickTrackingParams": "CA4QkPsFGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "browseEndpoint": { + "browseId": "UCIMmuidNJdncfMEelOU08Fg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CA4QkPsFGAQiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Share" }] }, + "icon": { "iconType": "SHARE" }, + "navigationEndpoint": { + "clickTrackingParams": "CA0QkfsFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtvdkhvWThVQkl1OA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CA0QkfsFGAUiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [{ "text": "Remove from history" }] + }, + "icon": { "iconType": "REMOVE_FROM_HISTORY" }, + "serviceEndpoint": { + "clickTrackingParams": "CAkQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJDWjIf1JJXmIw1bKnL3azaDQiXEqUrdHwUyp7P_4R4dTRrilM0d-5T1kc-gfLqSu2E8D3oMbV8ghrTmwxA5havcrjJOQ", + "actions": [ + { + "clickTrackingParams": "CAkQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "hideEnclosingAction": { "hack": true } + }, + { + "clickTrackingParams": "CAkQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CAwQyscDIhMIj5CZq8i8igMVbARzCR1kISzx" + } + } + } + } + ] + } + }, + "trackingParams": "CAkQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [{ "text": "Pin to Listen again" }] + }, + "defaultIcon": { "iconType": "KEEP" }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CAsQ_t4KGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKchrtgx4uxNfQFnbLGZTOcifwwUj4Y6m_0hsI93XUB4lJ1FT1hjE-2MdP1gxIR8YHkCfVuM8-7kfa-Qf8zha9KPk3_gi21Cg55jwK7QDxVN6uzR8o" + } + }, + "toggledText": { + "runs": [{ "text": "Unpin from Listen again" }] + }, + "toggledIcon": { "iconType": "KEEP_OFF" }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CAsQ_t4KGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpItLr51QTPM_CxPIlEuIBQIElpe5n2bzsjju3_tdFy2w8iMeQYEv6o7wOYFPouNFCjZ7s0vo731DX3eQt7VPfBmLhgxyxPQwO4oxFCxKLk0grTcai8" + } + }, + "trackingParams": "CAsQ_t4KGAciEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + } + ], + "trackingParams": "CAkQpzsiEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { "videoId": "ovHoY8UBIu8" }, + "likeStatus": "LIKE", + "trackingParams": "CAoQpUEYCCITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CAoQpUEYCCITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { "videoId": "ovHoY8UBIu8" } + } + }, + { + "clickTrackingParams": "CAoQpUEYCCITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { "videoId": "ovHoY8UBIu8" } + } + }, + { + "clickTrackingParams": "CAoQpUEYCCITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { "videoId": "ovHoY8UBIu8" } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + }, + "playlistItemData": { "videoId": "ovHoY8UBIu8" } + } + } + ], + "trackingParams": "CAcQ-V4YASITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "shelfDivider": { + "musicShelfDividerRenderer": { "hidden": true } + } + } + } + ], + "trackingParams": "CAMQui8iEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "header": { + "chipCloudRenderer": { + "chips": [ + { + "chipCloudChipRenderer": { + "text": { "runs": [{ "text": "Music" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAYQ_V0YACITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "browseEndpoint": { + "browseId": "FEmusic_history", + "params": "oggECgIIAQ%3D%3D" + } + }, + "trackingParams": "CAYQ_V0YACITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "isSelected": true, + "targetId": "Music", + "onDeselectedCommand": { + "clickTrackingParams": "CAYQ_V0YACITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "browseEndpoint": { "browseId": "FEmusic_history" } + }, + "selectionBehavior": "CHIP_SELECTION_BEHAVIOR_TOGGLE_ON_TAP", + "uniqueId": "Music" + } + }, + { + "chipCloudChipRenderer": { + "text": { "runs": [{ "text": "Podcasts" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAUQ_V0YASITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "browseEndpoint": { + "browseId": "FEmusic_history", + "params": "oggECgIoAQ%3D%3D" + } + }, + "trackingParams": "CAUQ_V0YASITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "isSelected": false, + "targetId": "Podcasts", + "onDeselectedCommand": { + "clickTrackingParams": "CAUQ_V0YASITCI-QmavIvIoDFWwEcwkdZCEs8Q==", + "browseEndpoint": { "browseId": "FEmusic_history" } + }, + "selectionBehavior": "CHIP_SELECTION_BEHAVIOR_TOGGLE_ON_TAP", + "uniqueId": "Podcasts" + } + } + ], + "trackingParams": "CAQQ_F0iEwiPkJmryLyKAxVsBHMJHWQhLPE=", + "selectionBehavior": "CHIP_CLOUD_SELECTION_BEHAVIOR_SINGLE_SELECT" + } + } + } + }, + "tabIdentifier": "FEmusic_history", + "trackingParams": "CAIQ8JMBGAAiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + } + ] + } + }, + "header": { + "musicHeaderRenderer": { + "title": { "runs": [{ "text": "History" }] }, + "trackingParams": "CAEQ4HIiEwiPkJmryLyKAxVsBHMJHWQhLPE=" + } + }, + "trackingParams": "CAAQhGciEwiPkJmryLyKAxVsBHMJHWQhLPE=" +} diff --git a/testfiles/music_history/saved_albums.json b/testfiles/music_history/saved_albums.json new file mode 100644 index 0000000..72853e4 --- /dev/null +++ b/testfiles/music_history/saved_albums.json @@ -0,0 +1,1429 @@ +{ + "continuationContents": { + "sectionListContinuation": { + "contents": [ + { + "gridRenderer": { + "itemSize": "COLLECTION_STYLE_ITEM_SIZE_SMALL", + "items": [ + { + "musicTwoRowItemRenderer": { + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCwQmvMFGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lGpbHrSuBBr-NERQUiTdSt6gsGzbPSN-w" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CCwQmvMFGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCsQm_MFGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lGpbHrSuBBr-NERQUiTdSt6gsGzbPSN-w" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CCsQm_MFGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCkQvu4FGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CCoQyscDIhMIubOZqbPDigMV5joGAB2lkAr9" + } + } + }, + "clickTrackingParams": "CCkQvu4FGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CCkQvu4FGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "watchEndpoint": { + "playlistId": "OLAK5uy_lGpbHrSuBBr-NERQUiTdSt6gsGzbPSN-w" + } + }, + "playlistId": "OLAK5uy_lGpbHrSuBBr-NERQUiTdSt6gsGzbPSN-w" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CCkQvu4FGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCcQ--8FGAMiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CCgQyscDIhMIubOZqbPDigMV5joGAB2lkAr9" + } + } + }, + "clickTrackingParams": "CCcQ--8FGAMiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CCcQ--8FGAMiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "watchEndpoint": { + "playlistId": "OLAK5uy_lGpbHrSuBBr-NERQUiTdSt6gsGzbPSN-w" + } + }, + "playlistId": "OLAK5uy_lGpbHrSuBBr-NERQUiTdSt6gsGzbPSN-w" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCcQ--8FGAMiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_SAVED" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CCYQhP8FGAQiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "likeEndpoint": { + "actions": [ + { + "clickTrackingParams": "CCYQhP8FGAQiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "hideEnclosingAction": { + "hack": true + } + } + ], + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lGpbHrSuBBr-NERQUiTdSt6gsGzbPSN-w" + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_ADD" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CCYQhP8FGAQiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "playlistId": "OLAK5uy_lGpbHrSuBBr-NERQUiTdSt6gsGzbPSN-w" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "trackingParams": "CCYQhP8FGAQiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "playlistId": "OLAK5uy_lGpbHrSuBBr-NERQUiTdSt6gsGzbPSN-w" + }, + "clickTrackingParams": "CCUQw5QGGAUiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CCUQw5QGGAUiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CCQQkPsFGAYiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CCQQkPsFGAYiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCMQkfsFGAciEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xHcGJIclN1QkJyLU5FUlFVaVRkU3Q2Z3NHemJQU04tdw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CCMQkfsFGAciEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CCIQ_t4KGAgiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKyUaHB_bebEth4FBmkK1IuTXjlEhnMj1P8GtMLm2ltbs5K6m9b4oK69_j87gGAh5Y4UYHIEPMpIcBLS13IXDZb0zpHHoz2m_5Fjb0Cn3kM67FkoCRCkAnnAYh28PJ01GL9JrfY" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CCIQ_t4KGAgiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIhhc_fQHRU7wQIqP-3AwfyIgSLd0z_LW6Xywoaza8c_Ek1bBwroDDAdxMNlzIorItZ3fFVBUq2rfyHo38OLySbyUeGHHWa94HikQg3btk2yhbDl6Swa3Da_5Qr2eLgM2oi3iAb" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CCIQ_t4KGAgiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + } + ], + "trackingParams": "CCEQpzsiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CB8QoLMCGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CB8QoLMCGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + }, + "text": "dArtagnan" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Felsenfest" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Felsenfest" + } + }, + "activeBackgroundColor": 4278190080, + "activeScaleFactor": 1.2, + "backgroundColor": 2566914048, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "iconColor": 4294967295, + "iconLoadingColor": 1308622847, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CCAQyN4CIhMIubOZqbPDigMV5joGAB2lkAr9", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lGpbHrSuBBr-NERQUiTdSt6gsGzbPSN-w" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CCAQyN4CIhMIubOZqbPDigMV5joGAB2lkAr9" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 226, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CC0QhL8CIhMIubOZqbPDigMV5joGAB2lkAr9" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CB8QoLMCGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + }, + "text": "Felsenfest" + } + ] + }, + "trackingParams": "CB8QoLMCGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "musicTwoRowItemRenderer": { + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CB0QmvMFGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_kNiuS8m9gEwAoTTt62VFPFwPFMdqDC8Oo" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CB0QmvMFGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBwQm_MFGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_kNiuS8m9gEwAoTTt62VFPFwPFMdqDC8Oo" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CBwQm_MFGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBoQvu4FGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CBsQyscDIhMIubOZqbPDigMV5joGAB2lkAr9" + } + } + }, + "clickTrackingParams": "CBoQvu4FGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CBoQvu4FGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "watchEndpoint": { + "playlistId": "OLAK5uy_kNiuS8m9gEwAoTTt62VFPFwPFMdqDC8Oo" + } + }, + "playlistId": "OLAK5uy_kNiuS8m9gEwAoTTt62VFPFwPFMdqDC8Oo" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CBoQvu4FGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBgQ--8FGAMiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CBkQyscDIhMIubOZqbPDigMV5joGAB2lkAr9" + } + } + }, + "clickTrackingParams": "CBgQ--8FGAMiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CBgQ--8FGAMiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "watchEndpoint": { + "playlistId": "OLAK5uy_kNiuS8m9gEwAoTTt62VFPFwPFMdqDC8Oo" + } + }, + "playlistId": "OLAK5uy_kNiuS8m9gEwAoTTt62VFPFwPFMdqDC8Oo" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CBgQ--8FGAMiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_SAVED" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CBcQhP8FGAQiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "likeEndpoint": { + "actions": [ + { + "clickTrackingParams": "CBcQhP8FGAQiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "hideEnclosingAction": { + "hack": true + } + } + ], + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kNiuS8m9gEwAoTTt62VFPFwPFMdqDC8Oo" + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_ADD" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CBcQhP8FGAQiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "playlistId": "OLAK5uy_kNiuS8m9gEwAoTTt62VFPFwPFMdqDC8Oo" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "trackingParams": "CBcQhP8FGAQiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "playlistId": "OLAK5uy_kNiuS8m9gEwAoTTt62VFPFwPFMdqDC8Oo" + }, + "clickTrackingParams": "CBYQw5QGGAUiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CBYQw5QGGAUiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCRw0x9_EfawqmgDI2IgQLLg" + }, + "clickTrackingParams": "CBUQkPsFGAYiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CBUQkPsFGAYiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBQQkfsFGAciEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2tOaXVTOG05Z0V3QW9UVHQ2MlZGUEZ3UEZNZHFEQzhPbw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CBQQkfsFGAciEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CBMQ_t4KGAgiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJexzFMveopusZlQn5Rwi-HpJvrisEEem97gp-Y_YXw3W7tICIRKaETuPXCOZJN1YV93RzwJRAKGUQxw5dXM2MVJsdNPCk7Kb9GVgd0aEGAOdmxk0xD89eHBlE8dW4ccvMvJO58" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CBMQ_t4KGAgiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJ9HdPtbAkp4EDXKLNv5fYG4gWJ_XrWr35Kbi8ScGi5k7J3sCNtoKwo12O-8jFAzGakC_2mTkW7CQ_vNeLE1nf_HpYZToD39VZBxw2GKNx8Nhu3jpkXD258QljVtWHAw9S1Ay-T" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CBMQ_t4KGAgiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + } + ], + "trackingParams": "CBIQpzsiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_IRSjexVmMMl" + }, + "clickTrackingParams": "CBAQoLMCGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCRw0x9_EfawqmgDI2IgQLLg" + }, + "clickTrackingParams": "CBAQoLMCGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + }, + "text": "Adele" + }, + { + "text": " • " + }, + { + "text": "2011" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 21" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 21" + } + }, + "activeBackgroundColor": 4278190080, + "activeScaleFactor": 1.2, + "backgroundColor": 2566914048, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "iconColor": 4294967295, + "iconLoadingColor": 1308622847, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CBEQyN4CIhMIubOZqbPDigMV5joGAB2lkAr9", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kNiuS8m9gEwAoTTt62VFPFwPFMdqDC8Oo" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CBEQyN4CIhMIubOZqbPDigMV5joGAB2lkAr9" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 226, + "url": "https://lh3.googleusercontent.com/y6b4yT6dCKEVmzBvATUWodOFLYc81vwxuK0nTgE-scZ3BvyuY9639NL_UyGc6zc_ASoELG67fDUNta0=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/y6b4yT6dCKEVmzBvATUWodOFLYc81vwxuK0nTgE-scZ3BvyuY9639NL_UyGc6zc_ASoELG67fDUNta0=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CB4QhL8CIhMIubOZqbPDigMV5joGAB2lkAr9" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_IRSjexVmMMl" + }, + "clickTrackingParams": "CBAQoLMCGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + }, + "text": "21" + } + ] + }, + "trackingParams": "CBAQoLMCGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + } + ], + "trackingParams": "CA8Q6IsCGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + } + ], + "continuations": [ + { + "reloadContinuationData": { + "clickTrackingParams": "CA4QxqYCIhMIubOZqbPDigMV5joGAB2lkAr9", + "continuation": "4qmFsgIoEhRGRW11c2ljX2xpa2VkX2FsYnVtcxoQZ2dNR0tnUUlBQkFCb0FZQg%3D%3D" + } + } + ], + "header": { + "musicSideAlignedItemRenderer": { + "endItems": [ + { + "musicSortFilterButtonRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Sort by - Recently saved selected" + } + }, + "icon": { + "iconType": "ARROW_DROP_DOWN" + }, + "menu": { + "musicMultiSelectMenuRenderer": { + "formEntityKey": "EkVQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UgkAEoAQ%3D%3D", + "options": [ + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "Recently saved" + } + }, + "formItemEntityKey": "En1QQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "selectedAccessibility": { + "accessibilityData": { + "label": "Recently saved selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAkQk5QFGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAkQk5QFGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnlQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAkQk5QFGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "En1QQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "newCheckedState": true + } + }, + { + "clickTrackingParams": "CAkQk5QFGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnhQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAoQxqYCIhMIubOZqbPDigMV5joGAB2lkAr9", + "continuation": "4qmFsgIoEhRGRW11c2ljX2xpa2VkX2FsYnVtcxoQZ2dNR0tnUUlBQkFCb0FZQg%3D%3D", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAkQk5QFGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "Recently saved" + } + ] + }, + "trackingParams": "CAkQk5QFGAAiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "A to Z" + } + }, + "formItemEntityKey": "EnhQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "selectedAccessibility": { + "accessibilityData": { + "label": "A to Z selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAcQk5QFGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAcQk5QFGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnlQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAcQk5QFGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "En1QQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAcQk5QFGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnhQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": true + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAgQxqYCIhMIubOZqbPDigMV5joGAB2lkAr9", + "continuation": "4qmFsgIoEhRGRW11c2ljX2xpa2VkX2FsYnVtcxoQZ2dNR0tnUUlBUkFBb0FZQg%3D%3D", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAcQk5QFGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "A to Z" + } + ] + }, + "trackingParams": "CAcQk5QFGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "Z to A" + } + }, + "formItemEntityKey": "EnlQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D", + "selectedAccessibility": { + "accessibilityData": { + "label": "Z to A selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAUQk5QFGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAUQk5QFGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnhQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAUQk5QFGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "En1QQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAUQk5QFGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnlQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D", + "newCheckedState": true + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAYQxqYCIhMIubOZqbPDigMV5joGAB2lkAr9", + "continuation": "4qmFsgIoEhRGRW11c2ljX2xpa2VkX2FsYnVtcxoQZ2dNR0tnUUlBUkFCb0FZQg%3D%3D", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAUQk5QFGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "Z to A" + } + ] + }, + "trackingParams": "CAUQk5QFGAIiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + } + ], + "title": { + "musicMenuTitleRenderer": { + "primaryText": { + "runs": [ + { + "text": "Sort by" + } + ] + } + } + }, + "trackingParams": "CAQQkpQFIhMIubOZqbPDigMV5joGAB2lkAr9" + } + }, + "title": { + "runs": [ + { + "text": "Recently saved" + } + ] + }, + "trackingParams": "CAMQkZQFGAEiEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + } + ], + "startItems": [ + { + "chipCloudRenderer": { + "chips": [ + { + "chipCloudChipRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Clear filters" + } + }, + "icon": { + "iconType": "CLOSE" + }, + "isSelected": true, + "navigationEndpoint": { + "clickTrackingParams": "CA0Q_V0YACITCLmzmamzw4oDFeY6BgAdpZAK_Q==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YACITCLmzmamzw4oDFeY6BgAdpZAK_Q==" + }, + { + "clickTrackingParams": "CA0Q_V0YACITCLmzmamzw4oDFeY6BgAdpZAK_Q==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YACITCLmzmamzw4oDFeY6BgAdpZAK_Q==" + } + } + } + ] + } + }, + "onDeselectedCommand": { + "clickTrackingParams": "CA0Q_V0YACITCLmzmamzw4oDFeY6BgAdpZAK_Q==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YACITCLmzmamzw4oDFeY6BgAdpZAK_Q==" + }, + { + "clickTrackingParams": "CA0Q_V0YACITCLmzmamzw4oDFeY6BgAdpZAK_Q==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YACITCLmzmamzw4oDFeY6BgAdpZAK_Q==" + } + } + } + ] + } + }, + "trackingParams": "CA0Q_V0YACITCLmzmamzw4oDFeY6BgAdpZAK_Q==" + } + }, + { + "chipCloudChipRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Show albums" + } + }, + "isSelected": true, + "navigationEndpoint": { + "clickTrackingParams": "CAwQ_V0YASITCLmzmamzw4oDFeY6BgAdpZAK_Q==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_liked_albums" + }, + "clickTrackingParams": "CAwQ_V0YASITCLmzmamzw4oDFeY6BgAdpZAK_Q==" + }, + { + "clickTrackingParams": "CAwQ_V0YASITCLmzmamzw4oDFeY6BgAdpZAK_Q==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_liked_albums" + }, + "clickTrackingParams": "CAwQ_V0YASITCLmzmamzw4oDFeY6BgAdpZAK_Q==" + } + } + } + ] + } + }, + "onDeselectedCommand": { + "clickTrackingParams": "CAwQ_V0YASITCLmzmamzw4oDFeY6BgAdpZAK_Q==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CAwQ_V0YASITCLmzmamzw4oDFeY6BgAdpZAK_Q==" + }, + { + "clickTrackingParams": "CAwQ_V0YASITCLmzmamzw4oDFeY6BgAdpZAK_Q==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CAwQ_V0YASITCLmzmamzw4oDFeY6BgAdpZAK_Q==" + } + } + } + ] + } + }, + "text": { + "runs": [ + { + "text": "Albums" + } + ] + }, + "trackingParams": "CAwQ_V0YASITCLmzmamzw4oDFeY6BgAdpZAK_Q==", + "uniqueId": "Albums" + } + } + ], + "trackingParams": "CAsQ_F0YACITCLmzmamzw4oDFeY6BgAdpZAK_Q==" + } + } + ], + "trackingParams": "CAIQxv4DIhMIubOZqbPDigMV5joGAB2lkAr9" + } + }, + "trackingParams": "CAEQui8iEwi5s5mps8OKAxXmOgYAHaWQCv0=" + } + }, + "frameworkUpdates": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EkVQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UgkAEoAQ%3D%3D", + "payload": { + "musicForm": { + "booleanChoiceEntityKeys": [ + "EnlQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D", + "En1QQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "EnhQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D" + ], + "id": "EkVQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UgkAEoAQ%3D%3D" + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "En1QQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "payload": { + "musicFormBooleanChoice": { + "id": "En1QQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "opaqueToken": "SortSpec_Type_ADDED_TIMESTAMP_SortSpec_Order_DESCENDING", + "parentFormEntityKey": "EkVQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UgkAEoAQ%3D%3D", + "selected": true + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EnhQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "payload": { + "musicFormBooleanChoice": { + "id": "EnhQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "opaqueToken": "SortSpec_Type_ENTITY_NAME_SortSpec_Order_ASCENDING", + "parentFormEntityKey": "EkVQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UgkAEoAQ%3D%3D", + "selected": false + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EnlQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D", + "payload": { + "musicFormBooleanChoice": { + "id": "EnlQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D", + "opaqueToken": "SortSpec_Type_ENTITY_NAME_SortSpec_Order_DESCENDING", + "parentFormEntityKey": "EkVQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1JFTEVBU0VTX1BBR0UgkAEoAQ%3D%3D", + "selected": false + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + } + ], + "timestamp": { + "nanos": 536991105, + "seconds": "1735146204" + } + } + }, + "responseContext": { + "maxAgeSeconds": 0, + "serviceTrackingParams": [ + { + "params": [ + { + "key": "browse_id", + "value": "FEmusic_liked_albums" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "1" + }, + { + "key": "e", + "value": "23804281,23813628,24004644,24077241,24181174,24241378,24299875,24439361,24459436,24548629,24566687,24697013,51009781,51010235,51017346,51020570,51025415,51030101,51037342,51037353,51050361,51053689,51057842,51057853,51063643,51065188,51089007,51098299,51111738,51115184,51124104,51125020,51151423,51152050,51157411,51160545,51169118,51176511,51178314,51178327,51178344,51178351,51178982,51179884,51183909,51204329,51208678,51217504,51222382,51222973,51226938,51227037,51227778,51228850,51230478,51237842,51239093,51241028,51242448,51248255,51248734,51249751,51255676,51255743,51256084,51257943,51260634,51274583,51275785,51276557,51276565,51278183,51281227,51285717,51287196,51289922,51289929,51289938,51289958,51289965,51290036,51290043,51290404,51292055,51294322,51296439,51298020,51299710,51299724,51299973,51299999,51300018,51302680,51303667,51303669,51303789,51304155,51305839,51310742,51311025,51311034,51313109,51313767,51313802,51315910,51315919,51315928,51315931,51315938,51315945,51315956,51315963,51315972,51315979,51316744,51316844,51318845,51321893,51322669,51324941,51326281,51326932,51327144,51327163,51327180,51327613,51327615,51330194,51331485,51331500,51331520,51331535,51331538,51331545,51331552,51331561,51333541,51333878,51334535,51335365,51335392,51335594,51335646,51335928,51336633,51337000,51337139,51337186,51337349,51339007,51340662,51341214,51341226,51341443,51341730,51341974,51342579,51342857,51343368,51343796,51345228,51345295,51345629,51346352,51346795,51346816,51346823,51346836,51346849,51346868,51346879,51346896,51347325,51347576,51348208,51348354,51348672,51349880,51349914,51351446,51353231,51353361,51353393,51354114,51354507,51354569,51355268,51355273,51355291,51355307,51355312,51355337,51355342,51355679,51355825,51357477,51357777,51359172,51360108,51360123,51360140,51360212,51360215,51361727,51361828,51362040,51362071,51362455,51362643,51362674,51362857,51363725,51363734,51363741,51363756,51363761,51363772,51365460,51365716,51365751,51365860,51365987,51366423,51366864,51367318,51367487,51367605,51367993,51368502,51369325,51369559,51369905,51370739,51371001,51371006,51371522,51372699,51374017,51374439,51375168,51375719,51375867,51376050,51376515,51379209" + } + ], + "service": "GFEEDBACK" + }, + { + "params": [ + { + "key": "c", + "value": "WEB_REMIX" + }, + { + "key": "cver", + "value": "1.20241218.01.00" + }, + { + "key": "yt_li", + "value": "1" + }, + { + "key": "GetBrowseCorpusReleasesPage_rid", + "value": "0x2b84c939812fbaa2" + } + ], + "service": "CSI" + }, + { + "params": [ + { + "key": "client.version", + "value": "1.20000101" + }, + { + "key": "client.name", + "value": "WEB_REMIX" + } + ], + "service": "ECATCHER" + } + ], + "visitorData": "CgtrVGR0NXlIdEh5eijh86O7BjIKCgJVUxIEEgAgKQ%3D%3D" + }, + "trackingParams": "CAAQhGciEwi5s5mps8OKAxXmOgYAHaWQCv0=" +} diff --git a/testfiles/music_history/saved_artists.json b/testfiles/music_history/saved_artists.json new file mode 100644 index 0000000..2f99c32 --- /dev/null +++ b/testfiles/music_history/saved_artists.json @@ -0,0 +1,4188 @@ +{ + "continuationContents": { + "sectionListContinuation": { + "contents": [ + { + "musicShelfRenderer": { + "autoReloadWhenEmpty": false, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Tom Twers" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "181K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKYBEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOHEB-C9o2iLeFC03cSEPfKg" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CKYBEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKUBEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMHEB-C9o2iLeFC03cSEPfKg" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CKUBEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKQBEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ2JVRzRic3VhenluaDRjcUdVczRvT0E%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKQBEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + } + ], + "trackingParams": "CKMBEKc7IhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCbUG4bsuazynh4cqGUs4oOA" + }, + "clickTrackingParams": "CKIBEMn0AhgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/BTkzjLKIpmDl6cqtfHtIpJfywBSc7Rl_ttA1Np6gBqnZv1F5wh0bvZ-7DESc55qgBMKX3jjD-SacdMk8xQ=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/BTkzjLKIpmDl6cqtfHtIpJfywBSc7Rl_ttA1Np6gBqnZv1F5wh0bvZ-7DESc55qgBMKX3jjD-SacdMk8xQ=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKcBEIS_AiITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + }, + "trackingParams": "CKIBEMn0AhgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "KATI K" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "72.8K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKABEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOmx6kacajMgySPyzUpMSqhQ" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CKABEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ8BEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMmx6kacajMgySPyzUpMSqhQ" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJ8BEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ4BEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ0FoekllLXBHM1h1WnpHem9GM1gwWUE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJ4BEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + } + ], + "trackingParams": "CJ0BEKc7IhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCAhzIe-pG3XuZzGzoF3X0YA" + }, + "clickTrackingParams": "CJwBEMn0AhgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/a-/ALV-UjWIQp0M5CuQM_KurfNoyLdT20hSRlTnoNs8x-9LRLVQy2TOKRjr=w60-h60-l90-rj-dcpWWY7KUI", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/a-/ALV-UjWIQp0M5CuQM_KurfNoyLdT20hSRlTnoNs8x-9LRLVQy2TOKRjr=w120-h120-l90-rj-dcpWWY7KUI", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKEBEIS_AiITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + }, + "trackingParams": "CJwBEMn0AhgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "TOBIAS" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "541 subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJoBEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOx8lMsFdazbDD9o2r-Ixz0w" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJoBEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJkBEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMx8lMsFdazbDD9o2r-Ixz0w" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJkBEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJgBEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ1hKa3JHUjhQcTJQc3JwQUt6bUduTEE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJgBEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + } + ], + "trackingParams": "CJcBEKc7IhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCXJkrGR8Pq2PsrpAKzmGnLA" + }, + "clickTrackingParams": "CJYBEMn0AhgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/MxIerzIwMIzXl-K6VkcJyeZFFZ9CrJOjOEL5kkQescyaLxIhI2sh44GBhnisDifYzHabuKGtQbmRJOJFlQ=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/MxIerzIwMIzXl-K6VkcJyeZFFZ9CrJOjOEL5kkQescyaLxIhI2sh44GBhnisDifYzHabuKGtQbmRJOJFlQ=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJsBEIS_AiITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + }, + "trackingParams": "CJYBEMn0AhgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "KAYEF" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "580K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJQBEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOKKGLZwMPYXyId7bhZpjtFg" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJQBEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJMBEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMKKGLZwMPYXyId7bhZpjtFg" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJMBEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJIBEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ3AxUnhxMG5JVm9lbGpSZkpuOHlLYmc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJIBEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + } + ], + "trackingParams": "CJEBEKc7IhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCp1Rxq0nIVoeljRfJn8yKbg" + }, + "clickTrackingParams": "CJABEMn0AhgDIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/p_S4WXz6nJaC6yj7GkVHB3jCMV7at_9kfnAYmE3BfHpcmqUfmdYiA9xqs4tmrHfcjplPMWpy4IXvY9Y=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/p_S4WXz6nJaC6yj7GkVHB3jCMV7at_9kfnAYmE3BfHpcmqUfmdYiA9xqs4tmrHfcjplPMWpy4IXvY9Y=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJUBEIS_AiITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + }, + "trackingParams": "CJABEMn0AhgDIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Monet192" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "148K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI4BEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOy1bVHnlSOZGO_Eqt4z8HxA" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CI4BEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI0BEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMy1bVHnlSOZGO_Eqt4z8HxA" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CI0BEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIwBEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQzdlOFlYRmpRTG5LbXhxUkJaN0l3V3c%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIwBEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + } + ], + "trackingParams": "CIsBEKc7IhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UC7e8YXFjQLnKmxqRBZ7IwWw" + }, + "clickTrackingParams": "CIoBEMn0AhgEIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/W1PqoAb7rcFIVlAdFMRV97gQ42yXnvKnO8M4-RKkiI486MPO7Yfrt-SMRDruclBAMpzK35GF6Gk5RaU=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/W1PqoAb7rcFIVlAdFMRV97gQ42yXnvKnO8M4-RKkiI486MPO7Yfrt-SMRDruclBAMpzK35GF6Gk5RaU=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CI8BEIS_AiITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + }, + "trackingParams": "CIoBEMn0AhgEIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Mathea" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "100K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIgBEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOW68iynJoZQrv3-8aetR0bQ" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CIgBEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIcBEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMW68iynJoZQrv3-8aetR0bQ" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CIcBEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIYBEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ0NMT3F1OEg2SGVZM2lTaGNBUG4tcUE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIYBEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + } + ], + "trackingParams": "CIUBEKc7IhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCCLOqu8H6HeY3iShcAPn-qA" + }, + "clickTrackingParams": "CIQBEMn0AhgFIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/yHpC193aCbr41gj0YZXiEjbgqFMuQTByVAORuBHr9bF9SahUy3UlMcIFLUY1Aw2PBCenM2uM50Zqbg=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/yHpC193aCbr41gj0YZXiEjbgqFMuQTByVAORuBHr9bF9SahUy3UlMcIFLUY1Aw2PBCenM2uM50Zqbg=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIkBEIS_AiITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + }, + "trackingParams": "CIQBEMn0AhgFIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Pantha" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "8 subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIIBEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOFHSEXJXJ5MyHSK1NaO8xHA" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CIIBEJrzBRgAIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIEBEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMFHSEXJXJ5MyHSK1NaO8xHA" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CIEBEJvzBRgBIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIABEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ0RDOUEtTkdKd29FTXl6VUxRV2Y0a3c%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIABEJH7BRgCIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + } + ], + "trackingParams": "CH8QpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCDC9A-NGJwoEMyzULQWf4kw" + }, + "clickTrackingParams": "CH4QyfQCGAYiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/SLaGBWrx951kbmc5pPN_Z1x0rjPJP1ViOyMphH0bM1XAXPOBtPAYHnw7qOTThNPy2QL4wWwBGW2Xq2o=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/SLaGBWrx951kbmc5pPN_Z1x0rjPJP1ViOyMphH0bM1XAXPOBtPAYHnw7qOTThNPy2QL4wWwBGW2Xq2o=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIMBEIS_AiITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + }, + "trackingParams": "CH4QyfQCGAYiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Sido" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "1.55M subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHwQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOluG6ELhckpkqp_TXQW7KTA" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CHwQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHsQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMluG6ELhckpkqp_TXQW7KTA" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CHsQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHoQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ2dvc01VNjlNcG9DcWh1UzFKWmo2Q3c%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CHoQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CHkQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCgosMU69MpoCqhuS1JZj6Cw" + }, + "clickTrackingParams": "CHgQyfQCGAciEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/HZpnexwxNS5FkIrpz6hdHZuNhBS-GKjs0C9NU8nDSTmHFlPaviqxV-dDLS_ubSEbpEvu0m2P2WT3kaQ=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/HZpnexwxNS5FkIrpz6hdHZuNhBS-GKjs0C9NU8nDSTmHFlPaviqxV-dDLS_ubSEbpEvu0m2P2WT3kaQ=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CH0QhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CHgQyfQCGAciEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "AnnenMayKantereit" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "2.71M subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHYQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOa2bDs_gt1heLfBtT0nEUCw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CHYQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHUQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMa2bDs_gt1heLfBtT0nEUCw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CHUQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHQQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ0syWkxzWTlNYl9keFppWmZLRTNsR2c%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CHQQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CHMQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCK2ZLsY9Mb_dxZiZfKE3lGg" + }, + "clickTrackingParams": "CHIQyfQCGAgiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/UIiP1HBod3H5OsOTyhPZPdfuU5-eslS9Wr8vy8aBphF1g22bk3QNK7O5vX5wjm3iZXQtZc-sYyw3BbM=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/UIiP1HBod3H5OsOTyhPZPdfuU5-eslS9Wr8vy8aBphF1g22bk3QNK7O5vX5wjm3iZXQtZc-sYyw3BbM=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CHcQhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CHIQyfQCGAgiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "LOTTE" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "86.4K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHAQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOOkvidHu7dHUGyS5nXfZHBg" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CHAQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CG8Qm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMOkvidHu7dHUGyS5nXfZHBg" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CG8Qm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CG4QkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ0EtdUlXR3lFMG45WXZKLXRpdFk4ekE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CG4QkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CG0QpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCA-uIWGyE0n9YvJ-titY8zA" + }, + "clickTrackingParams": "CGwQyfQCGAkiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/l_pq6m1w2cJiBfmK7Vqzv5rYJOrG_4IAaZFmQg4AogonohFXbTVfDTvXcc0h8IBc351ccbZ-QtwDnSU=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/l_pq6m1w2cJiBfmK7Vqzv5rYJOrG_4IAaZFmQg4AogonohFXbTVfDTvXcc0h8IBc351ccbZ-QtwDnSU=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CHEQhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CGwQyfQCGAkiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Revolverheld" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "287K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGoQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOoQOLjxj6dTqUoL0JEjSNxw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CGoQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGkQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMoQOLjxj6dTqUoL0JEjSNxw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CGkQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGgQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ1p3eG9sVVdJZVV0eTlSdTM5cEtOSXc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CGgQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CGcQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCZwxolUWIeUty9Ru39pKNIw" + }, + "clickTrackingParams": "CGYQyfQCGAoiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/cTkCPvR4t9FpuODFJpRYKn1YHq_wfTRIWwRCKZze5snlrC_9DZ6GNFL5P4i4UypIRjFiTqEDiSc3NW0=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/cTkCPvR4t9FpuODFJpRYKn1YHq_wfTRIWwRCKZze5snlrC_9DZ6GNFL5P4i4UypIRjFiTqEDiSc3NW0=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CGsQhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CGYQyfQCGAoiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Civo" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "33.9K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGQQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOCw1OecFuzgN5pyGcJj4lxw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CGQQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGMQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMCw1OecFuzgN5pyGcJj4lxw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CGMQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGIQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ2dNX1hnX0ZtdWQ0OTdNZFRQQTN2VFE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CGIQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CGEQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCgM_Xg_Fmud497MdTPA3vTQ" + }, + "clickTrackingParams": "CGAQyfQCGAsiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/a-/ALV-UjUxmCuTsP_JsJVV9c8lymt9auPNUk0QA1F1uXi7kA41JH4_O2U=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/a-/ALV-UjUxmCuTsP_JsJVV9c8lymt9auPNUk0QA1F1uXi7kA41JH4_O2U=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CGUQhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CGAQyfQCGAsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "ENNIO" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "15.8K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CF4QmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOcT2cyUr2GCCBDze5bfTsDg" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CF4QmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CF0Qm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMcT2cyUr2GCCBDze5bfTsDg" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CF0Qm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFwQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQzQ3eWhCWHJCSU01Z2xaYWhBMm5IcUE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CFwQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CFsQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UC47yhBXrBIM5glZahA2nHqA" + }, + "clickTrackingParams": "CFoQyfQCGAwiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/QXs3QaafSYpgbZtO-HHuiGJUq9Q66l6r3TwrKxantR1JNGV9rLNyoL75D6U7C1ctPHruYrGtOn0AXQzh=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/QXs3QaafSYpgbZtO-HHuiGJUq9Q66l6r3TwrKxantR1JNGV9rLNyoL75D6U7C1ctPHruYrGtOn0AXQzh=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CF8QhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CFoQyfQCGAwiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Esther Graf" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "37.2K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFgQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAORLlJkK2C1hSq-2X8s_8Ong" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CFgQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFcQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMRLlJkK2C1hSq-2X8s_8Ong" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CFcQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFYQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ3RLaldTWVQzSzVLYXBwOGlqZmZkcWc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CFYQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CFUQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCtKjWSYT3K5Kapp8ijffdqg" + }, + "clickTrackingParams": "CFQQyfQCGA0iEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/IJuCGSYAWOqH5n6YnQ3SnyKelJklN3zfowm7Av9tKEXwWuBQ326HPhURvqXO5vDV9dHaWfBu-J_8aZM=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/IJuCGSYAWOqH5n6YnQ3SnyKelJklN3zfowm7Av9tKEXwWuBQ326HPhURvqXO5vDV9dHaWfBu-J_8aZM=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CFkQhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CFQQyfQCGA0iEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "AYLIVA" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "693K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFIQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAO52ExOlj3zIPu7-0i4I8LiQ" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CFIQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFEQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEM52ExOlj3zIPu7-0i4I8LiQ" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CFEQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFAQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQzRPSEZ5ZkZNRmZKQVZEd1BoZ1dQUWc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CFAQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CE8QpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UC4OHFyfFMFfJAVDwPhgWPQg" + }, + "clickTrackingParams": "CE4QyfQCGA4iEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/a-/ALV-UjVX1hMbTYzmBtTWYR728KdQ3H-_Q8FUWFzpW6YT7wajtbyHBz0=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/a-/ALV-UjVX1hMbTYzmBtTWYR728KdQ3H-_Q8FUWFzpW6YT7wajtbyHBz0=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CFMQhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CE4QyfQCGA4iEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "TeeageBeatz" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "70 subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEwQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOXCLBNSmL8tIHdVrOWyW3dA" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CEwQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEsQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMXCLBNSmL8tIHdVrOWyW3dA" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CEsQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEoQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ0t2UW52OWxkTWJzSVFjdjFuRWQ4aHc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CEoQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CEkQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCKvQnv9ldMbsIQcv1nEd8hw" + }, + "clickTrackingParams": "CEgQyfQCGA8iEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/msZATojvcifqpwJYwA3OhiCqGx3bEQ3QT3c22myd8vtCOwNRE3XTc4vhYVaOUA4_E5xL3ZaXCtjDX_4=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/msZATojvcifqpwJYwA3OhiCqGx3bEQ3QT3c22myd8vtCOwNRE3XTc4vhYVaOUA4_E5xL3ZaXCtjDX_4=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CE0QhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CEgQyfQCGA8iEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "H1" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "33.1K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEYQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAO2wcbUoMlClXxD9Z-JhUBig" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CEYQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEUQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEM2wcbUoMlClXxD9Z-JhUBig" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CEUQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEQQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQzZ3LTV6R2ktZjE0bUVxYVoxRUxOU2c%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CEQQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CEMQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UC6w-5zGi-f14mEqaZ1ELNSg" + }, + "clickTrackingParams": "CEIQyfQCGBAiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/zoiAmwuTz4s9G852ylrpFP83yPFvmAM0QkQO1SlvYS4RSBifC2pzSJ6kOomFW6VhgDrbNC3KAEmbH9k=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/zoiAmwuTz4s9G852ylrpFP83yPFvmAM0QkQO1SlvYS4RSBifC2pzSJ6kOomFW6VhgDrbNC3KAEmbH9k=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CEcQhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CEIQyfQCGBAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Emilio" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "105K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEAQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOoNpoTYF3MQdiFd8bo-P8MQ" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CEAQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CD8Qm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMoNpoTYF3MQdiFd8bo-P8MQ" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CD8Qm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CD4QkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ0JOa1FuWUhrQjQ4cklzWWMyRTA1S0E%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CD4QkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CD0QpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCBNkQnYHkB48rIsYc2E05KA" + }, + "clickTrackingParams": "CDwQyfQCGBEiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/aLlAoBcb_LgKaj6FowCIpnAXp6UWtSya1mHNQSBTheXi_yy-TrWi6cULoF5j1yyJfHKDzkpWontLz_bP=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/aLlAoBcb_LgKaj6FowCIpnAXp6UWtSya1mHNQSBTheXi_yy-TrWi6cULoF5j1yyJfHKDzkpWontLz_bP=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CEEQhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CDwQyfQCGBEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Georg Stengel" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "108K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDoQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOmrbtlYY5_twr-LW8rUg5pw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CDoQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDkQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMmrbtlYY5_twr-LW8rUg5pw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CDkQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDgQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ2U4NGgtUDRmUGlmMjFseUs1dkxjd3c%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CDgQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CDcQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCe84h-P4fPif21lyK5vLcww" + }, + "clickTrackingParams": "CDYQyfQCGBIiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/C7QW5VlGgogqLMT2idOC5DG4FVITp9Twfakxp30jw0Q3oFoGMRh-uzvilDy8VwmvSl9YxRIMhwxtrQP8=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/C7QW5VlGgogqLMT2idOC5DG4FVITp9Twfakxp30jw0Q3oFoGMRh-uzvilDy8VwmvSl9YxRIMhwxtrQP8=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CDsQhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CDYQyfQCGBIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Gregor Hägele" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "148K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDQQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOUVTY6c_v5icxMu8VjRRVNA" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CDQQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDMQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMUVTY6c_v5icxMu8VjRRVNA" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CDMQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDIQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQzRvbFJ6V0pqMW8ybWdieVRCbWVhQnc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CDIQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CDEQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UC4olRzWJj1o2mgbyTBmeaBw" + }, + "clickTrackingParams": "CDAQyfQCGBMiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/4srE8F_wmdCpoSLTtp2Tz2uBWA6bEqRwx4aVbbyhMrqJXuU8XD0An1vcntKZT2YvVy1aXU064iqGRZZb=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/4srE8F_wmdCpoSLTtp2Tz2uBWA6bEqRwx4aVbbyhMrqJXuU8XD0An1vcntKZT2YvVy1aXU064iqGRZZb=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CDUQhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CDAQyfQCGBMiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "DUEJA" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "31K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CC4QmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOKc6jsS6lDb1TtcwAVn0jyA" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CC4QmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CC0Qm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMKc6jsS6lDb1TtcwAVn0jyA" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CC0Qm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCwQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ3Z4UERFWl9NbjBVVktnR3JRLTRaRlE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CCwQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CCsQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCvxPDEZ_Mn0UVKgGrQ-4ZFQ" + }, + "clickTrackingParams": "CCoQyfQCGBQiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/ShIWzUmvGOdfHZINYLVaZ0MsGLQJx0BIjVNY7Ao_GQIkYmWmWVlWoxV4MDrFRB-QR3GN7vvDcRC0Ug=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/ShIWzUmvGOdfHZINYLVaZ0MsGLQJx0BIjVNY7Ao_GQIkYmWmWVlWoxV4MDrFRB-QR3GN7vvDcRC0Ug=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CC8QhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CCoQyfQCGBQiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Julia Meladin" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "102K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCgQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOE_FejxR_rMJ6K4z_HZ_2Pg" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CCgQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCcQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEME_FejxR_rMJ6K4z_HZ_2Pg" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CCcQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCYQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ3hPXy1vSzlFUHA0aFhqNDJhWTFhVlE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CCYQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CCUQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCxO_-oK9EPp4hXj42aY1aVQ" + }, + "clickTrackingParams": "CCQQyfQCGBUiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/WXPOsPYwCCFA-sMCmV7gXlJqSUrR70odOeHbYt9ACCLXWsU8lhPcFDRd8qtFnD7rqUZ9x5aHjcfazNQ=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/WXPOsPYwCCFA-sMCmV7gXlJqSUrR70odOeHbYt9ACCLXWsU8lhPcFDRd8qtFnD7rqUZ9x5aHjcfazNQ=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CCkQhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CCQQyfQCGBUiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Alexander Eder" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "306K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCIQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOsD4vRZA12-PmcJpD_deTAA" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CCIQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCEQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMsD4vRZA12-PmcJpD_deTAA" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CCEQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCAQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ2xXWVRBYlROSDlwODBzaFQ4eVBIcWc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CCAQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CB8QpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClWYTAbTNH9p80shT8yPHqg" + }, + "clickTrackingParams": "CB4QyfQCGBYiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/WCv6cD-rwjI2gYRwYjAskLaNK0kVJgzypcLOV-7nSfPwwYCzruldKpcnGDRbz8UQm6XzLx6MZqPor80=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/WCv6cD-rwjI2gYRwYjAskLaNK0kVJgzypcLOV-7nSfPwwYCzruldKpcnGDRbz8UQm6XzLx6MZqPor80=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CCMQhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CB4QyfQCGBYiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Helene Fischer" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "1.09M subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBwQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOWdkULuu9su9qCNSO_vSQZw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CBwQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBsQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMWdkULuu9su9qCNSO_vSQZw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CBsQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBoQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ0U3X3AzbGNYQS1ZWFJacDJQanJnWXc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CBoQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CBkQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCE7_p3lcXA-YXRZp2PjrgYw" + }, + "clickTrackingParams": "CBgQyfQCGBciEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/mwiYuHAa4o3m8FELdQ1PTIXzXo3F34BR5QBIIVdpqbWGjRriygOZ7yTSg5v40W-gZvxLry0nrwmAkw=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/mwiYuHAa4o3m8FELdQ1PTIXzXo3F34BR5QBIIVdpqbWGjRriygOZ7yTSg5v40W-gZvxLry0nrwmAkw=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CB0QhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CBgQyfQCGBciEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Marina Marx" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "14.3K subscribers" + } + ] + } + } + } + ], + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBYQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAO5Yqh2clVvordzUKNHgFm1g" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CBYQmvMFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBUQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEM5Yqh2clVvordzUKNHgFm1g" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CBUQm_MFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBQQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ0xuTWl6SDI4QW1YTjZtcWJBS3dmZ1E%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CBQQkfsFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "trackingParams": "CBMQpzsiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCLnMizH28AmXN6mqbAKwfgQ" + }, + "clickTrackingParams": "CBIQyfQCGBgiEwiQueyos8OKAxWj40kHHRkeCQI=" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/Zbq4nSO176iOzElPCIU3jfjhS5ybKugXrODxWTZIEyzDcLquFUeS-aFDTc_r3xBP1rwYwZbW9-rBJFqv=w60-h60-p-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/Zbq4nSO176iOzElPCIU3jfjhS5ybKugXrODxWTZIEyzDcLquFUeS-aFDTc_r3xBP1rwYwZbW9-rBJFqv=w120-h120-p-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CBcQhL8CIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CBIQyfQCGBgiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "continuations": [ + { + "nextContinuationData": { + "autoloadEnabled": true, + "autoloadImmediately": true, + "clickTrackingParams": "CBEQybcCIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "continuation": "4qmFsgJiEh5GRW11c2ljX2xpYnJhcnlfY29ycHVzX2FydGlzdHMaQENCbDZJME5vWjB0R1FXOUZRMEZCVVVGU1NVMURUM3BHYjNKelIwVk5RMjU2Y1ZWRVIwRkJnZ01HS2dRSUFCQUI%3D" + } + } + ], + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + }, + "trackingParams": "CBAQ-V4YACITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + } + ], + "continuations": [ + { + "reloadContinuationData": { + "clickTrackingParams": "CA8QxqYCIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "continuation": "4qmFsgIyEh5GRW11c2ljX2xpYnJhcnlfY29ycHVzX2FydGlzdHMaEGdnTUdLZ1FJQUJBQm9BWUI%3D" + } + } + ], + "header": { + "musicSideAlignedItemRenderer": { + "endItems": [ + { + "musicSortFilterButtonRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Sort by - Recently saved selected" + } + }, + "icon": { + "iconType": "ARROW_DROP_DOWN" + }, + "menu": { + "musicMultiSelectMenuRenderer": { + "formEntityKey": "EkNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFIJABKAE%3D", + "options": [ + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "Recently saved" + } + }, + "formItemEntityKey": "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "selectedAccessibility": { + "accessibilityData": { + "label": "Recently saved selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAkQk5QFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAkQk5QFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAkQk5QFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": true + } + }, + { + "clickTrackingParams": "CAkQk5QFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D", + "newCheckedState": false + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAoQxqYCIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "continuation": "4qmFsgIyEh5GRW11c2ljX2xpYnJhcnlfY29ycHVzX2FydGlzdHMaEGdnTUdLZ1FJQUJBQm9BWUI%3D", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAkQk5QFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "Recently saved" + } + ] + }, + "trackingParams": "CAkQk5QFGAAiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "A to Z" + } + }, + "formItemEntityKey": "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D", + "selectedAccessibility": { + "accessibilityData": { + "label": "A to Z selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAcQk5QFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAcQk5QFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D", + "newCheckedState": true + } + }, + { + "clickTrackingParams": "CAcQk5QFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAcQk5QFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "newCheckedState": false + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAgQxqYCIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "continuation": "4qmFsgIyEh5GRW11c2ljX2xpYnJhcnlfY29ycHVzX2FydGlzdHMaEGdnTUdLZ1FJQVJBQW9BWUI%3D", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAcQk5QFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "A to Z" + } + ] + }, + "trackingParams": "CAcQk5QFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "Z to A" + } + }, + "formItemEntityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "selectedAccessibility": { + "accessibilityData": { + "label": "Z to A selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAUQk5QFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAUQk5QFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "newCheckedState": true + } + }, + { + "clickTrackingParams": "CAUQk5QFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAUQk5QFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D", + "newCheckedState": false + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAYQxqYCIhMIkLnsqLPDigMVo-NJBx0ZHgkC", + "continuation": "4qmFsgIyEh5GRW11c2ljX2xpYnJhcnlfY29ycHVzX2FydGlzdHMaEGdnTUdLZ1FJQVJBQm9BWUI%3D", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAUQk5QFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "Z to A" + } + ] + }, + "trackingParams": "CAUQk5QFGAIiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "title": { + "musicMenuTitleRenderer": { + "primaryText": { + "runs": [ + { + "text": "Sort by" + } + ] + } + } + }, + "trackingParams": "CAQQkpQFIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "title": { + "runs": [ + { + "text": "Recently saved" + } + ] + }, + "trackingParams": "CAMQkZQFGAEiEwiQueyos8OKAxWj40kHHRkeCQI=" + } + } + ], + "startItems": [ + { + "chipCloudRenderer": { + "chips": [ + { + "chipCloudChipRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Clear filters" + } + }, + "icon": { + "iconType": "CLOSE" + }, + "isSelected": true, + "navigationEndpoint": { + "clickTrackingParams": "CA4Q_V0YACITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA4Q_V0YACITCJC57Kizw4oDFaPjSQcdGR4JAg==" + }, + { + "clickTrackingParams": "CA4Q_V0YACITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA4Q_V0YACITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + } + } + ] + } + }, + "onDeselectedCommand": { + "clickTrackingParams": "CA4Q_V0YACITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA4Q_V0YACITCJC57Kizw4oDFaPjSQcdGR4JAg==" + }, + { + "clickTrackingParams": "CA4Q_V0YACITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA4Q_V0YACITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + } + } + ] + } + }, + "trackingParams": "CA4Q_V0YACITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + }, + { + "chipCloudChipRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Show artists" + } + }, + "isSelected": true, + "navigationEndpoint": { + "clickTrackingParams": "CA0Q_V0YASITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_corpus_track_artists" + }, + "clickTrackingParams": "CA0Q_V0YASITCJC57Kizw4oDFaPjSQcdGR4JAg==" + }, + { + "clickTrackingParams": "CA0Q_V0YASITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_corpus_track_artists" + }, + "clickTrackingParams": "CA0Q_V0YASITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + } + } + ] + } + }, + "onDeselectedCommand": { + "clickTrackingParams": "CA0Q_V0YASITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YASITCJC57Kizw4oDFaPjSQcdGR4JAg==" + }, + { + "clickTrackingParams": "CA0Q_V0YASITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YASITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + } + } + ] + } + }, + "text": { + "runs": [ + { + "text": "Artists" + } + ] + }, + "trackingParams": "CA0Q_V0YASITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "uniqueId": "Artists" + } + }, + { + "chipCloudChipRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Show subscribed artists" + } + }, + "isSelected": true, + "navigationEndpoint": { + "clickTrackingParams": "CAwQ_V0YAiITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_corpus_artists", + "params": "ggMCCAU%3D" + }, + "clickTrackingParams": "CAwQ_V0YAiITCJC57Kizw4oDFaPjSQcdGR4JAg==" + }, + { + "clickTrackingParams": "CAwQ_V0YAiITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_corpus_artists", + "params": "ggMCCAU%3D" + }, + "clickTrackingParams": "CAwQ_V0YAiITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + } + } + ] + } + }, + "onDeselectedCommand": { + "clickTrackingParams": "CAwQ_V0YAiITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_corpus_track_artists" + }, + "clickTrackingParams": "CAwQ_V0YAiITCJC57Kizw4oDFaPjSQcdGR4JAg==" + }, + { + "clickTrackingParams": "CAwQ_V0YAiITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_corpus_track_artists" + }, + "clickTrackingParams": "CAwQ_V0YAiITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + } + } + ] + } + }, + "text": { + "runs": [ + { + "text": "Subscriptions" + } + ] + }, + "trackingParams": "CAwQ_V0YAiITCJC57Kizw4oDFaPjSQcdGR4JAg==", + "uniqueId": "Subscriptions" + } + } + ], + "trackingParams": "CAsQ_F0YACITCJC57Kizw4oDFaPjSQcdGR4JAg==" + } + } + ], + "trackingParams": "CAIQxv4DIhMIkLnsqLPDigMVo-NJBx0ZHgkC" + } + }, + "trackingParams": "CAEQui8iEwiQueyos8OKAxWj40kHHRkeCQI=" + } + }, + "frameworkUpdates": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EkNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFIJABKAE%3D", + "payload": { + "musicForm": { + "booleanChoiceEntityKeys": [ + "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D" + ], + "id": "EkNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFIJABKAE%3D" + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "payload": { + "musicFormBooleanChoice": { + "id": "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "opaqueToken": "SortSpec_Type_ADDED_TIMESTAMP_SortSpec_Order_DESCENDING", + "parentFormEntityKey": "EkNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFIJABKAE%3D", + "selected": true + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D", + "payload": { + "musicFormBooleanChoice": { + "id": "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D", + "opaqueToken": "SortSpec_Type_ENTITY_NAME_SortSpec_Order_ASCENDING", + "parentFormEntityKey": "EkNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFIJABKAE%3D", + "selected": false + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "payload": { + "musicFormBooleanChoice": { + "id": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "opaqueToken": "SortSpec_Type_ENTITY_NAME_SortSpec_Order_DESCENDING", + "parentFormEntityKey": "EkNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfU1VCU0NSSVBUSU9OU19QQUdFIJABKAE%3D", + "selected": false + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + } + ], + "timestamp": { + "nanos": 930475856, + "seconds": "1735146203" + } + } + }, + "responseContext": { + "maxAgeSeconds": 0, + "serviceTrackingParams": [ + { + "params": [ + { + "key": "browse_id", + "value": "FEmusic_library_corpus_artists" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "1" + }, + { + "key": "e", + "value": "9453586,9453587,23804281,23813628,24004644,24077241,24181174,24241378,24299875,24439361,24459436,24548629,24566687,24697013,51009781,51010235,51017346,51020570,51025415,51030101,51037342,51037353,51050361,51053689,51057842,51057853,51063643,51065188,51089007,51098299,51111738,51115184,51124104,51125020,51151423,51152050,51157411,51160545,51169118,51176511,51178314,51178327,51178344,51178351,51178982,51179884,51183909,51204329,51208678,51217504,51222382,51222973,51226938,51227037,51227778,51228850,51230478,51237842,51239093,51241028,51242448,51248255,51248734,51249751,51255676,51255743,51256084,51257943,51260634,51274583,51275785,51276557,51276565,51278183,51281227,51285717,51287196,51289922,51289929,51289938,51289958,51289965,51290036,51290043,51290404,51292055,51294322,51296439,51298020,51299710,51299724,51299973,51299999,51300018,51302680,51303667,51303669,51303789,51304155,51305839,51310742,51311025,51311034,51313109,51313767,51313802,51315910,51315919,51315928,51315931,51315938,51315945,51315956,51315963,51315972,51315979,51316744,51316844,51318845,51321893,51322669,51324941,51326281,51326932,51327144,51327163,51327180,51327613,51327615,51330194,51331485,51331500,51331520,51331535,51331538,51331545,51331552,51331561,51333541,51333878,51334535,51335365,51335392,51335594,51335646,51335928,51336633,51337000,51337139,51337186,51337349,51339007,51340662,51341214,51341226,51341443,51341730,51341974,51342579,51342857,51343368,51343796,51345228,51345295,51345629,51346352,51346795,51346816,51346823,51346836,51346849,51346868,51346879,51346896,51347325,51347576,51348208,51348354,51348672,51349880,51349914,51351446,51353231,51353361,51353393,51354114,51354507,51354569,51355268,51355273,51355291,51355307,51355312,51355337,51355342,51355679,51355825,51357477,51357777,51359172,51360108,51360123,51360140,51360212,51360215,51361727,51361828,51362040,51362071,51362455,51362643,51362674,51362857,51363725,51363734,51363741,51363756,51363761,51363772,51365460,51365716,51365751,51365860,51365987,51366423,51366864,51367318,51367487,51367605,51367993,51368502,51369325,51369559,51369905,51370739,51371001,51371006,51371522,51372699,51374017,51374439,51375168,51375719,51375867,51376050,51376515,51379209" + } + ], + "service": "GFEEDBACK" + }, + { + "params": [ + { + "key": "c", + "value": "WEB_REMIX" + }, + { + "key": "cver", + "value": "1.20241218.01.00" + }, + { + "key": "yt_li", + "value": "1" + }, + { + "key": "GetBrowseSubscriptionsPage_rid", + "value": "0xdfe28efda9666450" + } + ], + "service": "CSI" + }, + { + "params": [ + { + "key": "client.version", + "value": "1.20000101" + }, + { + "key": "client.name", + "value": "WEB_REMIX" + } + ], + "service": "ECATCHER" + } + ], + "visitorData": "CgtyU0NQZWpjMDNvSyj8oq27BjIKCgJVUxIEEgAgTA%3D%3D" + }, + "trackingParams": "CAAQhGciEwiQueyos8OKAxWj40kHHRkeCQI=" +} diff --git a/testfiles/music_history/saved_playlists.json b/testfiles/music_history/saved_playlists.json new file mode 100644 index 0000000..935d581 --- /dev/null +++ b/testfiles/music_history/saved_playlists.json @@ -0,0 +1,1723 @@ +{ + "continuationContents": { + "sectionListContinuation": { + "contents": [ + { + "gridRenderer": { + "itemSize": "COLLECTION_STYLE_ITEM_SIZE_SMALL", + "items": [ + { + "musicTwoRowItemRenderer": { + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "navigationEndpoint": { + "clickTrackingParams": "CC8QoLMCGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "createPlaylistEndpoint": { + "createPlaylistDialog": { + "createPlaylistDialogRenderer": { + "cancelButton": { + "buttonRenderer": { + "isDisabled": false, + "style": "STYLE_LIGHT_TEXT", + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "trackingParams": "CDEQ8FsiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + "createButton": { + "buttonRenderer": { + "isDisabled": false, + "style": "STYLE_PRIMARY", + "text": { + "runs": [ + { + "text": "Create" + } + ] + }, + "trackingParams": "CDAQ8FsiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + "dialogTitle": { + "runs": [ + { + "text": "New playlist" + } + ] + }, + "privacyOption": { + "dropdownRenderer": { + "accessibility": { + "label": "Privacy" + }, + "entries": [ + { + "dropdownItemRenderer": { + "accessibility": { + "label": "Public" + }, + "descriptionText": { + "runs": [ + { + "text": "YouTube channel required" + } + ] + }, + "icon": { + "iconType": "PRIVACY_PUBLIC" + }, + "int32Value": 1, + "isSelected": true, + "label": { + "runs": [ + { + "text": "Public" + } + ] + } + } + }, + { + "dropdownItemRenderer": { + "accessibility": { + "label": "Unlisted" + }, + "descriptionText": { + "runs": [ + { + "text": "YouTube channel required" + } + ] + }, + "icon": { + "iconType": "LINK" + }, + "int32Value": 2, + "isSelected": false, + "label": { + "runs": [ + { + "text": "Unlisted" + } + ] + } + } + }, + { + "dropdownItemRenderer": { + "accessibility": { + "label": "Private" + }, + "descriptionText": { + "runs": [ + { + "text": "Only you can view" + } + ] + }, + "icon": { + "iconType": "LOCK" + }, + "int32Value": 0, + "isSelected": false, + "label": { + "runs": [ + { + "text": "Private" + } + ] + } + } + } + ], + "label": "Privacy" + } + }, + "titlePlaceholder": "Title" + } + }, + "params": "CAI%3D" + } + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 210, + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/create-playlist-@210.png", + "width": 210 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CDQQhL8CIhMIh_2lqrPDigMVxu1JBx3FOC8-" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CC8QoLMCGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "createPlaylistEndpoint": { + "createPlaylistDialog": { + "createPlaylistDialogRenderer": { + "cancelButton": { + "buttonRenderer": { + "isDisabled": false, + "style": "STYLE_LIGHT_TEXT", + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "trackingParams": "CDMQ8FsiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + "createButton": { + "buttonRenderer": { + "isDisabled": false, + "style": "STYLE_PRIMARY", + "text": { + "runs": [ + { + "text": "Create" + } + ] + }, + "trackingParams": "CDIQ8FsiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + "dialogTitle": { + "runs": [ + { + "text": "New playlist" + } + ] + }, + "privacyOption": { + "dropdownRenderer": { + "accessibility": { + "label": "Privacy" + }, + "entries": [ + { + "dropdownItemRenderer": { + "accessibility": { + "label": "Public" + }, + "descriptionText": { + "runs": [ + { + "text": "YouTube channel required" + } + ] + }, + "icon": { + "iconType": "PRIVACY_PUBLIC" + }, + "int32Value": 1, + "isSelected": true, + "label": { + "runs": [ + { + "text": "Public" + } + ] + } + } + }, + { + "dropdownItemRenderer": { + "accessibility": { + "label": "Unlisted" + }, + "descriptionText": { + "runs": [ + { + "text": "YouTube channel required" + } + ] + }, + "icon": { + "iconType": "LINK" + }, + "int32Value": 2, + "isSelected": false, + "label": { + "runs": [ + { + "text": "Unlisted" + } + ] + } + } + }, + { + "dropdownItemRenderer": { + "accessibility": { + "label": "Private" + }, + "descriptionText": { + "runs": [ + { + "text": "Only you can view" + } + ] + }, + "icon": { + "iconType": "LOCK" + }, + "int32Value": 0, + "isSelected": false, + "label": { + "runs": [ + { + "text": "Private" + } + ] + } + } + } + ], + "label": "Privacy" + } + }, + "titlePlaceholder": "Title" + } + }, + "params": "CAI%3D" + } + }, + "text": "New playlist" + } + ] + }, + "trackingParams": "CC8QoLMCGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "musicTwoRowItemRenderer": { + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CC0QmvMFGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "LM" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CC0QmvMFGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCwQm_MFGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLLM" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CCwQm_MFGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCoQvu4FGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CCsQyscDIhMIh_2lqrPDigMVxu1JBx3FOC8-" + } + } + }, + "clickTrackingParams": "CCoQvu4FGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CCoQvu4FGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "watchEndpoint": { + "playlistId": "LM" + } + }, + "playlistId": "LM" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CCoQvu4FGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCgQ--8FGAMiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CCkQyscDIhMIh_2lqrPDigMVxu1JBx3FOC8-" + } + } + }, + "clickTrackingParams": "CCgQ--8FGAMiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CCgQ--8FGAMiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "watchEndpoint": { + "playlistId": "LM" + } + }, + "playlistId": "LM" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCgQ--8FGAMiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CCcQ_t4KGAQiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLo0-SqCJtLRicTHusFLlug5TxqKf0ryDcRHYWCmeFJN9s2u02j_fCdDcyxNqoyEYMK4__WP0UyrjOk5gAYRVH7oRAwtA" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CCcQ_t4KGAQiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKiTSorL9CiH_a2tE4uQGjygx8C_nFYY3MpmPCAryxIAf-Ot7T0Gqx3MgtcUHYZpBOihdE_Bb4Smc8M-lgoBznyAkzXEw" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CCcQ_t4KGAQiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + } + ], + "trackingParams": "CCYQpzsiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLLM" + }, + "clickTrackingParams": "CCMQoLMCGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + }, + "subtitle": { + "runs": [ + { + "text": "Auto playlist" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Pinned" + } + }, + "icon": { + "iconType": "KEEP" + }, + "trackingParams": "CCQQoe0CGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Liked Music" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Liked Music" + } + }, + "activeBackgroundColor": 4278190080, + "activeScaleFactor": 1.2, + "backgroundColor": 2566914048, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "iconColor": 4294967295, + "iconLoadingColor": 1308622847, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CCUQyN4CIhMIh_2lqrPDigMVxu1JBx3FOC8-", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "LM" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CCUQyN4CIhMIh_2lqrPDigMVxu1JBx3FOC8-" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 192, + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/liked-music-@192.png", + "width": 192 + }, + { + "height": 576, + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/liked-music-@576.png", + "width": 576 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CC4QhL8CIhMIh_2lqrPDigMVxu1JBx3FOC8-" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLLM" + }, + "clickTrackingParams": "CCMQoLMCGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + }, + "text": "Liked Music" + } + ] + }, + "trackingParams": "CCMQoLMCGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "musicTwoRowItemRenderer": { + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCEQmvMFGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDCLAK5uy_k8X5cgTG2AnXbnkwEV7uQFptEKvSRmkjU" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CCEQmvMFGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCAQm_MFGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLRDCLAK5uy_k8X5cgTG2AnXbnkwEV7uQFptEKvSRmkjU" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CCAQm_MFGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CB4Qvu4FGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CB8QyscDIhMIh_2lqrPDigMVxu1JBx3FOC8-" + } + } + }, + "clickTrackingParams": "CB4Qvu4FGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CB4Qvu4FGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_k8X5cgTG2AnXbnkwEV7uQFptEKvSRmkjU" + } + }, + "playlistId": "RDCLAK5uy_k8X5cgTG2AnXbnkwEV7uQFptEKvSRmkjU" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CB4Qvu4FGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBwQ--8FGAMiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CB0QyscDIhMIh_2lqrPDigMVxu1JBx3FOC8-" + } + } + }, + "clickTrackingParams": "CBwQ--8FGAMiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CBwQ--8FGAMiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_k8X5cgTG2AnXbnkwEV7uQFptEKvSRmkjU" + } + }, + "playlistId": "RDCLAK5uy_k8X5cgTG2AnXbnkwEV7uQFptEKvSRmkjU" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CBwQ--8FGAMiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_SAVED" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CBsQhP8FGAQiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "likeEndpoint": { + "actions": [ + { + "clickTrackingParams": "CBsQhP8FGAQiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "hideEnclosingAction": { + "hack": true + } + } + ], + "status": "INDIFFERENT", + "target": { + "playlistId": "RDCLAK5uy_k8X5cgTG2AnXbnkwEV7uQFptEKvSRmkjU" + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_ADD" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CBsQhP8FGAQiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "playlistId": "RDCLAK5uy_k8X5cgTG2AnXbnkwEV7uQFptEKvSRmkjU" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Save playlist to library" + } + ] + }, + "trackingParams": "CBsQhP8FGAQiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "playlistId": "RDCLAK5uy_k8X5cgTG2AnXbnkwEV7uQFptEKvSRmkjU" + }, + "clickTrackingParams": "CBoQw5QGGAUiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CBoQw5QGGAUiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBkQkfsFGAYiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "shareEntityEndpoint": { + "serializedShareEntity": "EitSRENMQUs1dXlfazhYNWNnVEcyQW5YYm5rd0VWN3VRRnB0RUt2U1Jta2pV", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CBkQkfsFGAYiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CBgQ_t4KGAciEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJGhklIOe0ItTtJr2zs6LkqfAvebEd8vdOWjbI0oQt83RWaGCoCOc6wYc0P6wwUqD1dUQ1OfCUpUB-Y3vi94fdr0KR0xMVb3DQQ0FmmcNlklRpum96pzSPsq4L70D7hI52C4fn2yEI6OhI5d3J_s73ZFwG7ng" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CBgQ_t4KGAciEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKWeGocS749lFDVEjevH2MELhjHs9CQ8Zvyf0EJJgN9yOhhvQJ8buz070vigycKJ4B-UqQ0B6lUtrAk-Z9tt3uFK67ObTVjph3Orj9gX4bUPAeXtzKUmK466sicbrukYD15kOO9hfGtAIXZoqmnGXL82J54BA" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CBgQ_t4KGAciEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + } + ], + "trackingParams": "CBcQpzsiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLRDCLAK5uy_k8X5cgTG2AnXbnkwEV7uQFptEKvSRmkjU" + }, + "clickTrackingParams": "CBUQoLMCGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + }, + "subtitle": { + "runs": [ + { + "text": "YouTube Music" + }, + { + "text": " • " + }, + { + "text": "62 songs" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Lautstark: German Indie & Rock Hits" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Lautstark: German Indie & Rock Hits" + } + }, + "activeBackgroundColor": 4278190080, + "activeScaleFactor": 1.2, + "backgroundColor": 2566914048, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "iconColor": 4294967295, + "iconLoadingColor": 1308622847, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CBYQyN4CIhMIh_2lqrPDigMVxu1JBx3FOC8-", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDCLAK5uy_k8X5cgTG2AnXbnkwEV7uQFptEKvSRmkjU" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CBYQyN4CIhMIh_2lqrPDigMVxu1JBx3FOC8-" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 226, + "url": "https://lh3.googleusercontent.com/NTyTuhySZTQhdmlh19HQBI7hg_PtS1bLATodAepPXjyF1et8SXiqLtJxmVRszGdpXOwkQSIUsMOWgSo=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/NTyTuhySZTQhdmlh19HQBI7hg_PtS1bLATodAepPXjyF1et8SXiqLtJxmVRszGdpXOwkQSIUsMOWgSo=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CCIQhL8CIhMIh_2lqrPDigMVxu1JBx3FOC8-" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLRDCLAK5uy_k8X5cgTG2AnXbnkwEV7uQFptEKvSRmkjU" + }, + "clickTrackingParams": "CBUQoLMCGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + }, + "text": "Lautstark: German Indie & Rock Hits" + } + ] + }, + "trackingParams": "CBUQoLMCGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "musicTwoRowItemRenderer": { + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CBMQ_t4KGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJu18nb4vpdontD5uZ5vNFtqsu0_inMc2HfmLxGlc20AbMvfKCaaBrMV0Ig_DQyTyeP1AKsgMzXP2AGd87La8J47ON4UA" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CBMQ_t4KGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJWwCxEwR40Dj8UeE7JcNVbgq9XCk8PfiL2bGxGshwOrDcW2LTrAZI3LEkXURL_2QUmcgGeBxD4sP3WMyRahB_6NL9Zlw" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CBMQ_t4KGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + } + ], + "trackingParams": "CBIQpzsiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLSE" + }, + "clickTrackingParams": "CBAQoLMCGAMiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + }, + "subtitle": { + "runs": [ + { + "text": "Episodes you save for later" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Episodes for Later" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Episodes for Later" + } + }, + "activeBackgroundColor": 4278190080, + "activeScaleFactor": 1.2, + "backgroundColor": 2566914048, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "iconColor": 4294967295, + "iconLoadingColor": 1308622847, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CBEQyN4CIhMIh_2lqrPDigMVxu1JBx3FOC8-", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "SE" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CBEQyN4CIhMIh_2lqrPDigMVxu1JBx3FOC8-" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 192, + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/saved-episodes-@192.png", + "width": 192 + }, + { + "height": 576, + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/saved-episodes-@576.png", + "width": 576 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CBQQhL8CIhMIh_2lqrPDigMVxu1JBx3FOC8-" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLSE" + }, + "clickTrackingParams": "CBAQoLMCGAMiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + }, + "text": "Episodes for Later" + } + ] + }, + "trackingParams": "CBAQoLMCGAMiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + } + ], + "trackingParams": "CA8Q6IsCGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + } + ], + "continuations": [ + { + "reloadContinuationData": { + "clickTrackingParams": "CA4QxqYCIhMIh_2lqrPDigMVxu1JBx3FOC8-", + "continuation": "4qmFsgIrEhdGRW11c2ljX2xpa2VkX3BsYXlsaXN0cxoQZ2dNR0tnUUlBQkFCb0FZQg%3D%3D" + } + } + ], + "header": { + "musicSideAlignedItemRenderer": { + "endItems": [ + { + "musicSortFilterButtonRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Sort by - Recently saved selected" + } + }, + "icon": { + "iconType": "ARROW_DROP_DOWN" + }, + "menu": { + "musicMultiSelectMenuRenderer": { + "formEntityKey": "Ej9QQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UgkAEoAQ%3D%3D", + "options": [ + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "Recently saved" + } + }, + "formItemEntityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "selectedAccessibility": { + "accessibilityData": { + "label": "Recently saved selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAkQk5QFGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAkQk5QFGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnJQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAkQk5QFGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "newCheckedState": true + } + }, + { + "clickTrackingParams": "CAkQk5QFGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D", + "newCheckedState": false + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAoQxqYCIhMIh_2lqrPDigMVxu1JBx3FOC8-", + "continuation": "4qmFsgIrEhdGRW11c2ljX2xpa2VkX3BsYXlsaXN0cxoQZ2dNR0tnUUlBQkFCb0FZQg%3D%3D", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAkQk5QFGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "Recently saved" + } + ] + }, + "trackingParams": "CAkQk5QFGAAiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "A to Z" + } + }, + "formItemEntityKey": "EnJQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "selectedAccessibility": { + "accessibilityData": { + "label": "A to Z selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAcQk5QFGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAcQk5QFGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnJQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": true + } + }, + { + "clickTrackingParams": "CAcQk5QFGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAcQk5QFGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D", + "newCheckedState": false + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAgQxqYCIhMIh_2lqrPDigMVxu1JBx3FOC8-", + "continuation": "4qmFsgIrEhdGRW11c2ljX2xpa2VkX3BsYXlsaXN0cxoQZ2dNR0tnUUlBUkFBb0FZQg%3D%3D", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAcQk5QFGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "A to Z" + } + ] + }, + "trackingParams": "CAcQk5QFGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "Z to A" + } + }, + "formItemEntityKey": "EnNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D", + "selectedAccessibility": { + "accessibilityData": { + "label": "Z to A selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAUQk5QFGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAUQk5QFGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnJQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAUQk5QFGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAUQk5QFGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D", + "newCheckedState": true + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAYQxqYCIhMIh_2lqrPDigMVxu1JBx3FOC8-", + "continuation": "4qmFsgIrEhdGRW11c2ljX2xpa2VkX3BsYXlsaXN0cxoQZ2dNR0tnUUlBUkFCb0FZQg%3D%3D", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAUQk5QFGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "Z to A" + } + ] + }, + "trackingParams": "CAUQk5QFGAIiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + } + ], + "title": { + "musicMenuTitleRenderer": { + "primaryText": { + "runs": [ + { + "text": "Sort by" + } + ] + } + } + }, + "trackingParams": "CAQQkpQFIhMIh_2lqrPDigMVxu1JBx3FOC8-" + } + }, + "title": { + "runs": [ + { + "text": "Recently saved" + } + ] + }, + "trackingParams": "CAMQkZQFGAEiEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + } + ], + "startItems": [ + { + "chipCloudRenderer": { + "chips": [ + { + "chipCloudChipRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Clear filters" + } + }, + "icon": { + "iconType": "CLOSE" + }, + "isSelected": true, + "navigationEndpoint": { + "clickTrackingParams": "CA0Q_V0YACITCIf9paqzw4oDFcbtSQcdxTgvPg==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YACITCIf9paqzw4oDFcbtSQcdxTgvPg==" + }, + { + "clickTrackingParams": "CA0Q_V0YACITCIf9paqzw4oDFcbtSQcdxTgvPg==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YACITCIf9paqzw4oDFcbtSQcdxTgvPg==" + } + } + } + ] + } + }, + "onDeselectedCommand": { + "clickTrackingParams": "CA0Q_V0YACITCIf9paqzw4oDFcbtSQcdxTgvPg==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YACITCIf9paqzw4oDFcbtSQcdxTgvPg==" + }, + { + "clickTrackingParams": "CA0Q_V0YACITCIf9paqzw4oDFcbtSQcdxTgvPg==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YACITCIf9paqzw4oDFcbtSQcdxTgvPg==" + } + } + } + ] + } + }, + "trackingParams": "CA0Q_V0YACITCIf9paqzw4oDFcbtSQcdxTgvPg==" + } + }, + { + "chipCloudChipRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Show playlists" + } + }, + "isSelected": true, + "navigationEndpoint": { + "clickTrackingParams": "CAwQ_V0YASITCIf9paqzw4oDFcbtSQcdxTgvPg==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_liked_playlists" + }, + "clickTrackingParams": "CAwQ_V0YASITCIf9paqzw4oDFcbtSQcdxTgvPg==" + }, + { + "clickTrackingParams": "CAwQ_V0YASITCIf9paqzw4oDFcbtSQcdxTgvPg==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_liked_playlists" + }, + "clickTrackingParams": "CAwQ_V0YASITCIf9paqzw4oDFcbtSQcdxTgvPg==" + } + } + } + ] + } + }, + "onDeselectedCommand": { + "clickTrackingParams": "CAwQ_V0YASITCIf9paqzw4oDFcbtSQcdxTgvPg==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CAwQ_V0YASITCIf9paqzw4oDFcbtSQcdxTgvPg==" + }, + { + "clickTrackingParams": "CAwQ_V0YASITCIf9paqzw4oDFcbtSQcdxTgvPg==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CAwQ_V0YASITCIf9paqzw4oDFcbtSQcdxTgvPg==" + } + } + } + ] + } + }, + "text": { + "runs": [ + { + "text": "Playlists" + } + ] + }, + "trackingParams": "CAwQ_V0YASITCIf9paqzw4oDFcbtSQcdxTgvPg==", + "uniqueId": "Playlists" + } + } + ], + "trackingParams": "CAsQ_F0YACITCIf9paqzw4oDFcbtSQcdxTgvPg==" + } + } + ], + "trackingParams": "CAIQxv4DIhMIh_2lqrPDigMVxu1JBx3FOC8-" + } + }, + "trackingParams": "CAEQui8iEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" + } + }, + "frameworkUpdates": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "Ej9QQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UgkAEoAQ%3D%3D", + "payload": { + "musicForm": { + "booleanChoiceEntityKeys": [ + "EnJQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "EnNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D" + ], + "id": "Ej9QQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UgkAEoAQ%3D%3D" + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "payload": { + "musicFormBooleanChoice": { + "id": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9BRERFRF9USU1FU1RBTVBfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "opaqueToken": "SortSpec_Type_ADDED_TIMESTAMP_SortSpec_Order_DESCENDING", + "parentFormEntityKey": "Ej9QQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UgkAEoAQ%3D%3D", + "selected": true + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EnJQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "payload": { + "musicFormBooleanChoice": { + "id": "EnJQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "opaqueToken": "SortSpec_Type_ENTITY_NAME_SortSpec_Order_ASCENDING", + "parentFormEntityKey": "Ej9QQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UgkAEoAQ%3D%3D", + "selected": false + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EnNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D", + "payload": { + "musicFormBooleanChoice": { + "id": "EnNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UtU29ydFNwZWNfVHlwZV9FTlRJVFlfTkFNRV9Tb3J0U3BlY19PcmRlcl9ERVNDRU5ESU5HIJEBKAE%3D", + "opaqueToken": "SortSpec_Type_ENTITY_NAME_SortSpec_Order_DESCENDING", + "parentFormEntityKey": "Ej9QQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfUExBWUxJU1RTX1BBR0UgkAEoAQ%3D%3D", + "selected": false + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + } + ], + "timestamp": { + "nanos": 886038475, + "seconds": "1735146206" + } + } + }, + "responseContext": { + "maxAgeSeconds": 0, + "serviceTrackingParams": [ + { + "params": [ + { + "key": "browse_id", + "value": "FEmusic_liked_playlists" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "1" + }, + { + "key": "e", + "value": "23804281,23813628,24004644,24077241,24181174,24241378,24299875,24439361,24459436,24548629,24566687,24697013,51009781,51010235,51017346,51020570,51025415,51030101,51037342,51037353,51050361,51053689,51057842,51057853,51063643,51065188,51089007,51098299,51111738,51115184,51124104,51125020,51151423,51152050,51157411,51160545,51169118,51176511,51178314,51178327,51178344,51178351,51178982,51179884,51183909,51204329,51208678,51217504,51222382,51222973,51226938,51227037,51227778,51228850,51230478,51237842,51239093,51241028,51242448,51248255,51248734,51249751,51255676,51255743,51256084,51257943,51260634,51274583,51275785,51276557,51276565,51278183,51281227,51285717,51287196,51289922,51289929,51289938,51289958,51289965,51290036,51290043,51290404,51292055,51294322,51296439,51298020,51299710,51299724,51299973,51299999,51300018,51302680,51303667,51303669,51303789,51304155,51305839,51310742,51311025,51311034,51313109,51313767,51313802,51315910,51315919,51315928,51315931,51315938,51315945,51315956,51315963,51315972,51315979,51316744,51316844,51318845,51321893,51322669,51324941,51326281,51326932,51327144,51327163,51327180,51327613,51327615,51330194,51331485,51331500,51331520,51331535,51331538,51331545,51331552,51331561,51333541,51333878,51334535,51335365,51335392,51335594,51335646,51335928,51336633,51337000,51337139,51337186,51337349,51339007,51340662,51341214,51341226,51341443,51341730,51341974,51342579,51342857,51343368,51343796,51345228,51345295,51345629,51346352,51346795,51346816,51346823,51346836,51346849,51346868,51346879,51346896,51347325,51347576,51348208,51348354,51348672,51349880,51349914,51351446,51353231,51353361,51353393,51354114,51354507,51354569,51355268,51355273,51355291,51355307,51355312,51355337,51355342,51355679,51355825,51357477,51357777,51359172,51360108,51360123,51360140,51360212,51360215,51361727,51361828,51362040,51362071,51362455,51362643,51362674,51362857,51363725,51363734,51363741,51363756,51363761,51363772,51365460,51365716,51365751,51365860,51365987,51366423,51366864,51367318,51367487,51367605,51367993,51368502,51369325,51369559,51369905,51370739,51371001,51371006,51371522,51372699,51374017,51374439,51375168,51375719,51375867,51376050,51376515,51379209" + } + ], + "service": "GFEEDBACK" + }, + { + "params": [ + { + "key": "c", + "value": "WEB_REMIX" + }, + { + "key": "cver", + "value": "1.20241218.01.00" + }, + { + "key": "yt_li", + "value": "1" + }, + { + "key": "GetBrowsePlaylistsPage_rid", + "value": "0xe9387fadce0c4a9c" + } + ], + "service": "CSI" + }, + { + "params": [ + { + "key": "client.version", + "value": "1.20000101" + }, + { + "key": "client.name", + "value": "WEB_REMIX" + } + ], + "service": "ECATCHER" + } + ], + "visitorData": "CgttTW53TWF4bDM4aije9bC7BjIKCgJVUxIEEgAgFg%3D%3D" + }, + "trackingParams": "CAAQhGciEwiH_aWqs8OKAxXG7UkHHcU4Lz4=" +} diff --git a/testfiles/music_history/saved_tracks.json b/testfiles/music_history/saved_tracks.json new file mode 100644 index 0000000..e97886f --- /dev/null +++ b/testfiles/music_history/saved_tracks.json @@ -0,0 +1,14230 @@ +{ + "continuationContents": { + "sectionListContinuation": { + "contents": [ + { + "musicShelfRenderer": { + "autoReloadWhenEmpty": false, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "Shuffle all" + } + ] + } + } + } + ], + "navigationEndpoint": { + "clickTrackingParams": "CLoDEMn0AhgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "MLCT" + } + }, + "thumbnail": { + "musicIconBadgeRenderer": { + "backgroundColor": 4280098077, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "trackingParams": "CLsDEN_qAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CLoDEMn0AhgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 28 seconds" + } + }, + "runs": [ + { + "text": "2:28" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CKkDEMn0AhgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "02UC3iagcJQ", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Brüder, lasst uns gehen (Instrumental)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CKkDEMn0AhgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CKkDEMn0AhgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLcDEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0wMlVDM2lhZ2NKUQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVM02UC3iagcJQ", + "videoId": "02UC3iagcJQ", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CLcDEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLUDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CLYDEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CLUDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLUDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "02UC3iagcJQ" + } + }, + "videoId": "02UC3iagcJQ" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CLUDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLMDEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CLQDEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CLMDEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLMDEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "02UC3iagcJQ" + } + }, + "videoId": "02UC3iagcJQ" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLMDEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "02UC3iagcJQ" + }, + "clickTrackingParams": "CLIDEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLIDEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CLEDEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CLEDEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CLADEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CLADEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTC02UC3iagcJQ" + }, + "clickTrackingParams": "CK8DEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CK8DEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CK4DEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgswMlVDM2lhZ2NKUQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CK4DEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CK0DEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK5R4na0DQlg0Siqf-y-Dx67cP6s2pGXPpUydfpwvFihhMAVLlXAR3uXMyV2E-8MxLNjWBSqyXQJR1SijuJSHvTgkyaGDtYJwxmXv0wh-DAVMWIBMY" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CK0DEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLZ4MUu_tp_EeshQEJO2FeMeiilaVpIIXVBsMlNId9li9lRnp619Arn7dbBFCzFbaQqMI_j9THWIFe1w9Z0R53QiJyeggcztutQA45Fj63na2yGbTM" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CK0DEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CKwDEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "02UC3iagcJQ" + } + } + }, + { + "clickTrackingParams": "CKwDEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "02UC3iagcJQ" + } + } + }, + { + "clickTrackingParams": "CKwDEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "02UC3iagcJQ" + } + } + } + ], + "target": { + "videoId": "02UC3iagcJQ" + }, + "trackingParams": "CKwDEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CKsDEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CKoDEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KCzAyVUMzaWFnY0pREgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CKoDEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Brüder, lasst uns gehen (Instrumental) - dArtagnan - 2 minutes, 28 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Brüder, lasst uns gehen (Instrumental) - dArtagnan - 2 minutes, 28 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CLgDEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 1, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "02UC3iagcJQ", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CLgDEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "02UC3iagcJQ" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CLkDEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CKkDEMn0AhgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 8 seconds" + } + }, + "runs": [ + { + "text": "3:08" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CJgDEMn0AhgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "0uSu-jHdDd4", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Westwind" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CJgDEMn0AhgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CJgDEMn0AhgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKYDEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0wdVN1LWpIZERkNA%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVM0uSu-jHdDd4", + "videoId": "0uSu-jHdDd4", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CKYDEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKQDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CKUDEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CKQDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKQDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "0uSu-jHdDd4" + } + }, + "videoId": "0uSu-jHdDd4" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CKQDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKIDEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CKMDEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CKIDEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKIDEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "0uSu-jHdDd4" + } + }, + "videoId": "0uSu-jHdDd4" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKIDEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "0uSu-jHdDd4" + }, + "clickTrackingParams": "CKEDEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKEDEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CKADEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CKADEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CJ8DEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CJ8DEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTC0uSu-jHdDd4" + }, + "clickTrackingParams": "CJ4DEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CJ4DEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ0DEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgswdVN1LWpIZERkNA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJ0DEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJwDEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI64McID4iXP6T3QIxzPdbtL2f0bnRlqErsMg-6pk0pDScJeCGA7MXoNYhqu4ysX1QlyMEGwis2hOOAEPKDTGXs3s3zE5bTF230Pcg2CZYUzGvKbsY" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJwDEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJuzS4_n6B9IzxH1gqpRzqwtaQ_kj9gKYh55EuWLZzRkXO-jurw3RNCD9ad3iKU4h6EvexyNEViK5bQSpVVDzh3rO_fmvhPrMhCc3HoZqNqrS4o4ck" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CJwDEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CJsDEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "0uSu-jHdDd4" + } + } + }, + { + "clickTrackingParams": "CJsDEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "0uSu-jHdDd4" + } + } + }, + { + "clickTrackingParams": "CJsDEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "0uSu-jHdDd4" + } + } + } + ], + "target": { + "videoId": "0uSu-jHdDd4" + }, + "trackingParams": "CJsDEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CJoDEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CJkDEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KCzB1U3UtakhkRGQ0EgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CJkDEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Westwind - dArtagnan - 3 minutes, 8 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Westwind - dArtagnan - 3 minutes, 8 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CKcDEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 2, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "0uSu-jHdDd4", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CKcDEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "0uSu-jHdDd4" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKgDEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CJgDEMn0AhgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 53 seconds" + } + }, + "runs": [ + { + "text": "2:53" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CIcDEMn0AhgDIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "11pkE_azpBQ", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Leave her, Johnny (feat. The O'Reillys and the Paddyhats)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CIcDEMn0AhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CIcDEMn0AhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJUDEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0xMXBrRV9henBCUQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVM11pkE_azpBQ", + "videoId": "11pkE_azpBQ", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJUDEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJMDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CJQDEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CJMDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJMDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "11pkE_azpBQ" + } + }, + "videoId": "11pkE_azpBQ" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJMDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJEDEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CJIDEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CJEDEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJEDEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "11pkE_azpBQ" + } + }, + "videoId": "11pkE_azpBQ" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJEDEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "11pkE_azpBQ" + }, + "clickTrackingParams": "CJADEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJADEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CI8DEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CI8DEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CI4DEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CI4DEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTC11pkE_azpBQ" + }, + "clickTrackingParams": "CI0DEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CI0DEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIwDEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgsxMXBrRV9henBCUQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIwDEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIsDEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJvHFEISo3Vf3X-J3WyhRK98kMwWNyuskZaWdGgvCRLuhZO8GA_Y0nwa4d33uIiWHIM7s4X-_84QtwZZFnhGDyCPXy3WINtmSGMCwNYJJqa3w7hK84" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIsDEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLGhneocbcK1IVRIPG3sDCUwkJRcaW3Q-IT49wiQ_iszGZ4a8ESbrs-A6L-E0UOJshD6yCjYlXzKrzHuow1BTFXbnjEo0RtALm4CGA9-MrRwReYZQY" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CIsDEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CIoDEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "11pkE_azpBQ" + } + } + }, + { + "clickTrackingParams": "CIoDEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "11pkE_azpBQ" + } + } + }, + { + "clickTrackingParams": "CIoDEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "11pkE_azpBQ" + } + } + } + ], + "target": { + "videoId": "11pkE_azpBQ" + }, + "trackingParams": "CIoDEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CIkDEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CIgDEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KCzExcGtFX2F6cEJREgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CIgDEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Leave her, Johnny - dArtagnan - 2 minutes, 53 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Leave her, Johnny - dArtagnan - 2 minutes, 53 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CJYDEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 3, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "11pkE_azpBQ", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJYDEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "11pkE_azpBQ" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJcDEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CIcDEMn0AhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes" + } + }, + "runs": [ + { + "text": "3:00" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CPYCEMn0AhgEIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "1tJPy7XlfCQ", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Felsenfest" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CPYCEMn0AhgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CPYCEMn0AhgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIQDEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0xdEpQeTdYbGZDUQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVM1tJPy7XlfCQ", + "videoId": "1tJPy7XlfCQ", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CIQDEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIIDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CIMDEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CIIDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIIDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "1tJPy7XlfCQ" + } + }, + "videoId": "1tJPy7XlfCQ" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIIDEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIADEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CIEDEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CIADEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIADEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "1tJPy7XlfCQ" + } + }, + "videoId": "1tJPy7XlfCQ" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIADEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "1tJPy7XlfCQ" + }, + "clickTrackingParams": "CP8CEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CP8CEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CP4CEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CP4CEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CP0CEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CP0CEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTC1tJPy7XlfCQ" + }, + "clickTrackingParams": "CPwCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CPwCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPsCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgsxdEpQeTdYbGZDUQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPsCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPoCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJcQUbCRbklFtmd-4S34h0KX2THaCPkGVXtQzigWDnN9-VauyE19km47Dkvv5FZ2Nuuk3Ox5U5JLGW-cN_tK74v3U6ks45T0ZwA5Kt67U-gcFF3JEM" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPoCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLQAbTE-eivTuKn2Y3Usd3vPrNhL6DHyODxl905JGL6C5VyDWhYR37QfZoub2YzZEcevDXwozrtrnGBcmy3Hj6bs_qrlZri_US4zwvhLJ0_veYZEBE" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CPoCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CPkCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "1tJPy7XlfCQ" + } + } + }, + { + "clickTrackingParams": "CPkCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "1tJPy7XlfCQ" + } + } + }, + { + "clickTrackingParams": "CPkCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "1tJPy7XlfCQ" + } + } + } + ], + "target": { + "videoId": "1tJPy7XlfCQ" + }, + "trackingParams": "CPkCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CPgCEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CPcCEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KCzF0SlB5N1hsZkNREgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CPcCEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Felsenfest - dArtagnan - 3 minutes" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Felsenfest - dArtagnan - 3 minutes" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CIUDEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 4, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "1tJPy7XlfCQ", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CIUDEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "1tJPy7XlfCQ" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIYDEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CPYCEMn0AhgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 58 seconds" + } + }, + "runs": [ + { + "text": "2:58" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "COUCEMn0AhgFIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "2JpUBTLjfPA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Dreht sich der Wind (Instrumental)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "COUCEMn0AhgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "COUCEMn0AhgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPMCEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0ySnBVQlRMamZQQQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVM2JpUBTLjfPA", + "videoId": "2JpUBTLjfPA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CPMCEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPECEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CPICEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CPECEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPECEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "2JpUBTLjfPA" + } + }, + "videoId": "2JpUBTLjfPA" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CPECEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO8CEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CPACEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CO8CEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CO8CEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "2JpUBTLjfPA" + } + }, + "videoId": "2JpUBTLjfPA" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CO8CEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "2JpUBTLjfPA" + }, + "clickTrackingParams": "CO4CEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CO4CEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CO0CEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CO0CEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "COwCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "COwCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTC2JpUBTLjfPA" + }, + "clickTrackingParams": "COsCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "COsCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COoCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgsySnBVQlRMamZQQQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COoCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COkCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJqB-jMXrbc_ladHWcaEtl9idRo5zXv_1Axc9sUwDYQbDssaMXFT2ANP9BnrcINMxzU7A4oCA8MCemm-nbeczu3MzRT1FDiREkjAYEQ9T7FVzFakeo" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COkCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIfJ4fIySDpA9oM5eCziU6vYhHxknv2C8Sk8ko-KhQ0IJtKbgVIf26EXftKNjxry7nUxhU9IC694xQ-eIWnxGMndjqBT5r48zao-onI8O7LvD--4ws" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "COkCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "COgCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "2JpUBTLjfPA" + } + } + }, + { + "clickTrackingParams": "COgCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "2JpUBTLjfPA" + } + } + }, + { + "clickTrackingParams": "COgCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "2JpUBTLjfPA" + } + } + } + ], + "target": { + "videoId": "2JpUBTLjfPA" + }, + "trackingParams": "COgCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "COcCEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "COYCEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KCzJKcFVCVExqZlBBEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "COYCEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Dreht sich der Wind (Instrumental) - dArtagnan - 2 minutes, 58 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Dreht sich der Wind (Instrumental) - dArtagnan - 2 minutes, 58 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CPQCEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 5, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "2JpUBTLjfPA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CPQCEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "2JpUBTLjfPA" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CPUCEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "COUCEMn0AhgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 9 seconds" + } + }, + "runs": [ + { + "text": "3:09" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CNQCEMn0AhgGIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "6WiuMIp9B6Y", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Westwind (Instrumental)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CNQCEMn0AhgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CNQCEMn0AhgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "COICEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk02V2l1TUlwOUI2WQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVM6WiuMIp9B6Y", + "videoId": "6WiuMIp9B6Y", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "COICEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COACEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "COECEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "COACEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COACEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "6WiuMIp9B6Y" + } + }, + "videoId": "6WiuMIp9B6Y" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "COACEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN4CEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CN8CEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CN4CEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CN4CEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "6WiuMIp9B6Y" + } + }, + "videoId": "6WiuMIp9B6Y" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CN4CEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "6WiuMIp9B6Y" + }, + "clickTrackingParams": "CN0CEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CN0CEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CNwCEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CNwCEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CNsCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CNsCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTC6WiuMIp9B6Y" + }, + "clickTrackingParams": "CNoCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CNoCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNkCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgs2V2l1TUlwOUI2WQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNkCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNgCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKzG9xJIXNZemK3vRpI2VSaDR_1PjmZbUbL1yI9uRPnp2Wl8y9yC14Qkh_utghbDZbmsqPBWZ7yWvFad84o-fwwIOzJhZepaaZnpgUt6-ZHnAEcuLg" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNgCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJ15uXF2o_WcYb-oMP1WuYBpPpgPesJ2CgAU2fW2oTV7I7FUEGv8KFh8FXHBZm5S1DUj2sikndcrHbZHPOUQYUT2H5ehSIrwyhIxJC0JRR2UDK_xyU" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CNgCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CNcCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "6WiuMIp9B6Y" + } + } + }, + { + "clickTrackingParams": "CNcCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "6WiuMIp9B6Y" + } + } + }, + { + "clickTrackingParams": "CNcCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "6WiuMIp9B6Y" + } + } + } + ], + "target": { + "videoId": "6WiuMIp9B6Y" + }, + "trackingParams": "CNcCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CNYCEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CNUCEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KCzZXaXVNSXA5QjZZEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CNUCEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Westwind (Instrumental) - dArtagnan - 3 minutes, 9 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Westwind (Instrumental) - dArtagnan - 3 minutes, 9 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "COMCEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 6, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "6WiuMIp9B6Y", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "COMCEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "6WiuMIp9B6Y" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "COQCEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CNQCEMn0AhgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 15 seconds" + } + }, + "runs": [ + { + "text": "3:15" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CMMCEMn0AhgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "8nfNNAlsTTA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "My Love's in Germany (Instrumental)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CMMCEMn0AhgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CMMCEMn0AhgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNECEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk04bmZOTkFsc1RUQQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVM8nfNNAlsTTA", + "videoId": "8nfNNAlsTTA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CNECEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8CEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CNACEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CM8CEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CM8CEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "8nfNNAlsTTA" + } + }, + "videoId": "8nfNNAlsTTA" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CM8CEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0CEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CM4CEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CM0CEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CM0CEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "8nfNNAlsTTA" + } + }, + "videoId": "8nfNNAlsTTA" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CM0CEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "8nfNNAlsTTA" + }, + "clickTrackingParams": "CMwCEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMwCEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CMsCEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CMsCEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CMoCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CMoCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTC8nfNNAlsTTA" + }, + "clickTrackingParams": "CMkCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CMkCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMgCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgs4bmZOTkFsc1RUQQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMgCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMcCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJICLC0BIZEvcckesKp2PC-BAFSb5lcPwMWDLfRaQRGMHFV2phKzdpUkmWnQ77cszaguTG-l6TKVzhA0uFFAi6I-vkw1bhnXb6ea6CELVSDTfmxooU" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMcCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLdjRYhkEwqNKYZUXvvun91B418KKdMwyOTBMubo6wgzmXd_wANj1xs3sc0zfW-M0NVLdSgzwh-HvSAb__WKBOisr2QAxeBA2vD7naGrK80O6WQC5E" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CMcCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CMYCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "8nfNNAlsTTA" + } + } + }, + { + "clickTrackingParams": "CMYCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "8nfNNAlsTTA" + } + } + }, + { + "clickTrackingParams": "CMYCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "8nfNNAlsTTA" + } + } + } + ], + "target": { + "videoId": "8nfNNAlsTTA" + }, + "trackingParams": "CMYCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CMUCEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CMQCEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KCzhuZk5OQWxzVFRBEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CMQCEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause My Love's in Germany (Instrumental) - dArtagnan - 3 minutes, 15 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play My Love's in Germany (Instrumental) - dArtagnan - 3 minutes, 15 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CNICEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 7, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "8nfNNAlsTTA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CNICEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "8nfNNAlsTTA" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CNMCEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CMMCEMn0AhgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 10 seconds" + } + }, + "runs": [ + { + "text": "3:10" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CLICEMn0AhgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "C1U6oXpz4As", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Wein & Wahrheit" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CLICEMn0AhgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CLICEMn0AhgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMACEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1DMVU2b1hwejRBcw%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMC1U6oXpz4As", + "videoId": "C1U6oXpz4As", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CMACEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL4CEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CL8CEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CL4CEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CL4CEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "C1U6oXpz4As" + } + }, + "videoId": "C1U6oXpz4As" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CL4CEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLwCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CL0CEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CLwCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLwCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "C1U6oXpz4As" + } + }, + "videoId": "C1U6oXpz4As" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLwCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "C1U6oXpz4As" + }, + "clickTrackingParams": "CLsCEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLsCEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CLoCEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CLoCEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CLkCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CLkCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCC1U6oXpz4As" + }, + "clickTrackingParams": "CLgCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CLgCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLcCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtDMVU2b1hwejRBcw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLcCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLYCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJYGfgmcYiW0yt9vQy7-Lopp39oBzFMfg4F8xf0W5RvPRLHIZmZDAne0FGmLoxxELNhFQ2MAfpSsviNQLn25ZRL7dIKGsgv5U_tPUzQkkoXl1UsUcc" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLYCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIrWaZRrkfWOEQlWjrkCyAV_V4Xz5fR_DktoIRGeTPnjtHj-YtqISaZbyxDIkbUwJqiL2GWiB00W4Owe5wdMtJPKxe41Dqs5968qD5ZoHcBnERhbDY" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CLYCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CLUCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "C1U6oXpz4As" + } + } + }, + { + "clickTrackingParams": "CLUCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "C1U6oXpz4As" + } + } + }, + { + "clickTrackingParams": "CLUCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "C1U6oXpz4As" + } + } + } + ], + "target": { + "videoId": "C1U6oXpz4As" + }, + "trackingParams": "CLUCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CLQCEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CLMCEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC0MxVTZvWHB6NEFzEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CLMCEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Wein & Wahrheit - dArtagnan - 3 minutes, 10 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Wein & Wahrheit - dArtagnan - 3 minutes, 10 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CMECEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 8, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "C1U6oXpz4As", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CMECEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "C1U6oXpz4As" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CMICEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CLICEMn0AhgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 26 seconds" + } + }, + "runs": [ + { + "text": "3:26" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CKECEMn0AhgJIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "DvKw0jTUN-s", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Teufelsgeiger" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CKECEMn0AhgJIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CKECEMn0AhgJIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CK8CEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1Edkt3MGpUVU4tcw%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMDvKw0jTUN-s", + "videoId": "DvKw0jTUN-s", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CK8CEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0CEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CK4CEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CK0CEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CK0CEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "DvKw0jTUN-s" + } + }, + "videoId": "DvKw0jTUN-s" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CK0CEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKsCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CKwCEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CKsCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKsCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "DvKw0jTUN-s" + } + }, + "videoId": "DvKw0jTUN-s" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKsCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "DvKw0jTUN-s" + }, + "clickTrackingParams": "CKoCEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKoCEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CKkCEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CKkCEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CKgCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CKgCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCDvKw0jTUN-s" + }, + "clickTrackingParams": "CKcCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CKcCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKYCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtEdkt3MGpUVU4tcw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKYCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKUCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJsugs8lOwKzGRhJnbKVv2RRYTd3zyzvNxM7kVCdd5IDhVueWHBgYWlZcGaEptpQZAXLE8UeU6qvStdThkROchSo1fKtS38y6P64K3ZO3CwkVhAPLI" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKUCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKs-nzyQZHphpjC58yCzPF3ObFBdvlVPzMu6cALyO4mxBXy3jXyv9wolWk2kqgIP0iLKQEyn8hroIYdMFCuoz_NPZ58azvgbaBM0yjD5DmkCZ-P-ck" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CKUCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CKQCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "DvKw0jTUN-s" + } + } + }, + { + "clickTrackingParams": "CKQCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "DvKw0jTUN-s" + } + } + }, + { + "clickTrackingParams": "CKQCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "DvKw0jTUN-s" + } + } + } + ], + "target": { + "videoId": "DvKw0jTUN-s" + }, + "trackingParams": "CKQCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CKMCEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CKICEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC0R2S3cwalRVTi1zEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CKICEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Teufelsgeiger - dArtagnan - 3 minutes, 26 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Teufelsgeiger - dArtagnan - 3 minutes, 26 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CLACEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 9, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "DvKw0jTUN-s", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CLACEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "DvKw0jTUN-s" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CLECEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CKECEMn0AhgJIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 54 seconds" + } + }, + "runs": [ + { + "text": "2:54" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CJACEMn0AhgKIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "GDSVX--bsRU", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Korobeiniki      " + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CJACEMn0AhgKIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CJACEMn0AhgKIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ4CEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1HRFNWWC0tYnNSVQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMGDSVX--bsRU", + "videoId": "GDSVX--bsRU", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJ4CEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwCEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CJ0CEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CJwCEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJwCEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "GDSVX--bsRU" + } + }, + "videoId": "GDSVX--bsRU" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJwCEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJoCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CJsCEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CJoCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJoCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "GDSVX--bsRU" + } + }, + "videoId": "GDSVX--bsRU" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJoCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "GDSVX--bsRU" + }, + "clickTrackingParams": "CJkCEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJkCEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CJgCEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CJgCEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CJcCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CJcCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCGDSVX--bsRU" + }, + "clickTrackingParams": "CJYCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CJYCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJUCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtHRFNWWC0tYnNSVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJUCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJQCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIHX3gfsbs4EjcIOM8t4i4OGOIqPS63mKXh3-yNwUe4w_0KxmEKnglaA54LcGZGtYGCWT_bgZNZNrs6hmKkrqd7TPwz6Yj8Yw-5Sn-9pwQZLSvnFeU" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJQCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKuCNfhzwcmZXS8DiiCtfudy342pt35equkLUJbaB0-1eUarMwLG_S58eWmYW21LWvWfzejpMTiUZWlPQrgMO3w0fZEzu5zst-4TdDUYJvuCotIhPA" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CJQCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CJMCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "GDSVX--bsRU" + } + } + }, + { + "clickTrackingParams": "CJMCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "GDSVX--bsRU" + } + } + }, + { + "clickTrackingParams": "CJMCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "GDSVX--bsRU" + } + } + } + ], + "target": { + "videoId": "GDSVX--bsRU" + }, + "trackingParams": "CJMCEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CJICEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CJECEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC0dEU1ZYLS1ic1JVEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CJECEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Korobeiniki       - dArtagnan - 2 minutes, 54 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Korobeiniki       - dArtagnan - 2 minutes, 54 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CJ8CEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 10, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "GDSVX--bsRU", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJ8CEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "GDSVX--bsRU" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKACEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CJACEMn0AhgKIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 45 seconds" + } + }, + "runs": [ + { + "text": "3:45" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CP8BEMn0AhgLIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "I-ArzgPbNx8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Merseburger Zauberspruch (feat. Luc Arbogast)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CP8BEMn0AhgLIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CP8BEMn0AhgLIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI0CEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1JLUFyemdQYk54OA%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMI-ArzgPbNx8", + "videoId": "I-ArzgPbNx8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CI0CEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIsCEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CIwCEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CIsCEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIsCEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "I-ArzgPbNx8" + } + }, + "videoId": "I-ArzgPbNx8" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIsCEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CIoCEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CIkCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIkCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "I-ArzgPbNx8" + } + }, + "videoId": "I-ArzgPbNx8" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIkCEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "I-ArzgPbNx8" + }, + "clickTrackingParams": "CIgCEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CIgCEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CIcCEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CIcCEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CIYCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CIYCEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCI-ArzgPbNx8" + }, + "clickTrackingParams": "CIUCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CIUCEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIQCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtJLUFyemdQYk54OA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIQCEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIMCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL6Kfb5EUPzvCDm7V3uPZw-WMNaxcRBVD5Hk522uAfm_BWRJ8CwOOTpT8FN4VfN9drUuYtzj0uuQkJWt-b9u4aNdSsQZrv985H4BS6lpnnEiOMt2A8" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIMCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKFquvyOl0OBrkMGzLe8-UE7WRTByfEMH0bVRWBRKi_bwMOCA5B9nOn5qJ9UZkWj2gPpuWdvAdnHvg8yx1WlKxFXHODm0ib2i3hMKkMSOILMd017rw" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CIMCEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CIICEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "I-ArzgPbNx8" + } + } + }, + { + "clickTrackingParams": "CIICEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "I-ArzgPbNx8" + } + } + }, + { + "clickTrackingParams": "CIICEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "I-ArzgPbNx8" + } + } + } + ], + "target": { + "videoId": "I-ArzgPbNx8" + }, + "trackingParams": "CIICEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CIECEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CIACEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC0ktQXJ6Z1BiTng4EgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CIACEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Merseburger Zauberspruch - dArtagnan - 3 minutes, 45 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Merseburger Zauberspruch - dArtagnan - 3 minutes, 45 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CI4CEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 11, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "I-ArzgPbNx8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CI4CEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "I-ArzgPbNx8" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CI8CEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CP8BEMn0AhgLIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 52 seconds" + } + }, + "runs": [ + { + "text": "2:52" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CO4BEMn0AhgMIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "OElgvIuT8TY", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Trink mein Freund" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CO4BEMn0AhgMIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CO4BEMn0AhgMIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPwBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1PRWxndkl1VDhUWQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMOElgvIuT8TY", + "videoId": "OElgvIuT8TY", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CPwBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPoBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CPsBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CPoBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPoBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "OElgvIuT8TY" + } + }, + "videoId": "OElgvIuT8TY" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CPoBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPgBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CPkBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CPgBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPgBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "OElgvIuT8TY" + } + }, + "videoId": "OElgvIuT8TY" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPgBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "OElgvIuT8TY" + }, + "clickTrackingParams": "CPcBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CPcBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CPYBEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CPYBEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CPUBEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CPUBEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCOElgvIuT8TY" + }, + "clickTrackingParams": "CPQBEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CPQBEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPMBEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtPRWxndkl1VDhUWQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPMBEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPIBEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKTjM9ju3eZ--ofd4imloF8_WmcBb03wMm9XDwiuSq_U-HwuLoW-v46cCLAnx1b4aLk2ABqP-TI6ulLi301RIW2v0zQMWdvxdkSG15yIRS78GJ99Xo" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPIBEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKphncgVa9p9W9b7maDJ3scL-XVsi8Xa7_PoOpfgANAO6KHpGuRt3VDkm269J4wQi-kvthRMim5LBU_s1n-JpP2yyD7jRZk4-NiROV7w3iaX6_vWs4" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CPIBEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CPEBEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "OElgvIuT8TY" + } + } + }, + { + "clickTrackingParams": "CPEBEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "OElgvIuT8TY" + } + } + }, + { + "clickTrackingParams": "CPEBEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "OElgvIuT8TY" + } + } + } + ], + "target": { + "videoId": "OElgvIuT8TY" + }, + "trackingParams": "CPEBEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CPABEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CO8BEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC09FbGd2SXVUOFRZEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CO8BEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Trink mein Freund - dArtagnan - 2 minutes, 52 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Trink mein Freund - dArtagnan - 2 minutes, 52 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CP0BEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 12, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "OElgvIuT8TY", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CP0BEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "OElgvIuT8TY" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CP4BEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CO4BEMn0AhgMIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 9 seconds" + } + }, + "runs": [ + { + "text": "3:09" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CN0BEMn0AhgNIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "RGlOEBJyhrc", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Drei schwarze Reiter (Instrumental)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CN0BEMn0AhgNIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CN0BEMn0AhgNIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "COsBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1SR2xPRUJKeWhyYw%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMRGlOEBJyhrc", + "videoId": "RGlOEBJyhrc", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "COsBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "COoBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "COkBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COkBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "RGlOEBJyhrc" + } + }, + "videoId": "RGlOEBJyhrc" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "COkBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COcBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "COgBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "COcBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COcBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "RGlOEBJyhrc" + } + }, + "videoId": "RGlOEBJyhrc" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COcBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "RGlOEBJyhrc" + }, + "clickTrackingParams": "COYBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "COYBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "COUBEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "COUBEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "COQBEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "COQBEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCRGlOEBJyhrc" + }, + "clickTrackingParams": "COMBEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "COMBEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COIBEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtSR2xPRUJKeWhyYw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COIBEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COEBEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIccW-NULLT-dTvDh8b4PgTu0lDpiw63n2N4lhtUxJ0MeQq2ZNBVTm6EyZXbcVNDhqDWQwmJXvhov7gFMk8B8bX1NZG28fnGwzOOAAZxo7u83rpJDA" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COEBEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLMcHqJOP3oAXLwRsFk1OKIB_hWciQ9vvHMGCqJC25dSA6MQvM6OeCqpzt0K8VCSif1b7BfUuPz6tYw7o_YUTnIDdjTakocNA6c2CaUrscLFfGdul0" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "COEBEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "COABEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "RGlOEBJyhrc" + } + } + }, + { + "clickTrackingParams": "COABEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "RGlOEBJyhrc" + } + } + }, + { + "clickTrackingParams": "COABEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "RGlOEBJyhrc" + } + } + } + ], + "target": { + "videoId": "RGlOEBJyhrc" + }, + "trackingParams": "COABEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CN8BEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CN4BEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC1JHbE9FQkp5aHJjEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CN4BEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Drei schwarze Reiter (Instrumental) - dArtagnan - 3 minutes, 9 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Drei schwarze Reiter (Instrumental) - dArtagnan - 3 minutes, 9 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "COwBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 13, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "RGlOEBJyhrc", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "COwBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "RGlOEBJyhrc" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CO0BEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CN0BEMn0AhgNIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 19 seconds" + } + }, + "runs": [ + { + "text": "3:19" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CMwBEMn0AhgOIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "UUCM1WR611g", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Tanz in den Mai" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CMwBEMn0AhgOIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CMwBEMn0AhgOIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNoBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1VVUNNMVdSNjExZw%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMUUCM1WR611g", + "videoId": "UUCM1WR611g", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CNoBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNgBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CNkBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CNgBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNgBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "UUCM1WR611g" + } + }, + "videoId": "UUCM1WR611g" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CNgBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNYBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CNcBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CNYBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNYBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "UUCM1WR611g" + } + }, + "videoId": "UUCM1WR611g" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNYBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "UUCM1WR611g" + }, + "clickTrackingParams": "CNUBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CNUBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CNQBEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CNQBEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CNMBEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CNMBEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCUUCM1WR611g" + }, + "clickTrackingParams": "CNIBEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CNIBEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNEBEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtVVUNNMVdSNjExZw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNEBEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNABEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK5Z7iI9CTg3fLUt0Ae7dSk-sZ410OxmSWdR4Mgu-SNCbmDSty9IlL3JQkrxkwCp1SNudBIt1CAN1HpgLMkoIpxfG9qDaz3-XxMxQrofTHV3DM7zvQ" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNABEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLcKveClixtIpKZC4zLLjlonXi1BmCFxA7jZ-P06h3vns8856SpQkdDrL4dv32Hwer4afLwP9vDxbV1B5IUK5f0ckORmDrP4vJvoFSlrgNnfo22Na8" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CNABEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CM8BEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "UUCM1WR611g" + } + } + }, + { + "clickTrackingParams": "CM8BEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "UUCM1WR611g" + } + } + }, + { + "clickTrackingParams": "CM8BEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "UUCM1WR611g" + } + } + } + ], + "target": { + "videoId": "UUCM1WR611g" + }, + "trackingParams": "CM8BEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CM4BEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CM0BEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC1VVQ00xV1I2MTFnEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CM0BEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Tanz in den Mai - dArtagnan - 3 minutes, 19 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Tanz in den Mai - dArtagnan - 3 minutes, 19 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CNsBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 14, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "UUCM1WR611g", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CNsBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "UUCM1WR611g" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CNwBEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CMwBEMn0AhgOIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 19 seconds" + } + }, + "runs": [ + { + "text": "3:19" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CLsBEMn0AhgPIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "WlzrZsEtWbs", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Tanz in den Mai (Instrumental)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CLsBEMn0AhgPIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CLsBEMn0AhgPIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMkBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1XbHpyWnNFdFdicw%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMWlzrZsEtWbs", + "videoId": "WlzrZsEtWbs", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CMkBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CMgBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CMcBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMcBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "WlzrZsEtWbs" + } + }, + "videoId": "WlzrZsEtWbs" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CMcBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMUBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CMYBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CMUBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMUBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "WlzrZsEtWbs" + } + }, + "videoId": "WlzrZsEtWbs" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMUBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "WlzrZsEtWbs" + }, + "clickTrackingParams": "CMQBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CMQBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CMMBEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CMMBEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CMIBEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CMIBEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCWlzrZsEtWbs" + }, + "clickTrackingParams": "CMEBEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CMEBEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMABEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtXbHpyWnNFdFdicw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMABEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CL8BEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKXJu-madkbuameIWxteo8n_riAEkJxHaM_gKPSMS_G7C8SL-iyT1kHUauioyjj3sPjS88AXqFUnTEOnU2Mlo4aBX9VkHBrPKgqIbXCuFaCZK1mPHM" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CL8BEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKuDH-aUXYoqrNn40uxQlkfhJUhd-OJI9tvPP0IPZVHGixda0UboDgEKVsRkBCAJSfyZyPKpTItrfFGjr_e-qAqWiC6qTi_ozgjsYd5oafgV4sWOw0" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CL8BEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CL4BEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "WlzrZsEtWbs" + } + } + }, + { + "clickTrackingParams": "CL4BEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "WlzrZsEtWbs" + } + } + }, + { + "clickTrackingParams": "CL4BEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "WlzrZsEtWbs" + } + } + } + ], + "target": { + "videoId": "WlzrZsEtWbs" + }, + "trackingParams": "CL4BEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CL0BEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CLwBEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC1dsenJac0V0V2JzEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CLwBEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Tanz in den Mai (Instrumental) - dArtagnan - 3 minutes, 19 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Tanz in den Mai (Instrumental) - dArtagnan - 3 minutes, 19 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CMoBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 15, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "WlzrZsEtWbs", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CMoBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "WlzrZsEtWbs" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CMsBEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CLsBEMn0AhgPIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 57 seconds" + } + }, + "runs": [ + { + "text": "2:57" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CKoBEMn0AhgQIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "apY7iYoYtD8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Dreht sich der Wind" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CKoBEMn0AhgQIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CKoBEMn0AhgQIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLgBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1hcFk3aVlvWXREOA%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMapY7iYoYtD8", + "videoId": "apY7iYoYtD8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CLgBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLYBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CLcBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CLYBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLYBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "apY7iYoYtD8" + } + }, + "videoId": "apY7iYoYtD8" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CLYBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLQBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CLUBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CLQBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLQBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "apY7iYoYtD8" + } + }, + "videoId": "apY7iYoYtD8" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLQBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "apY7iYoYtD8" + }, + "clickTrackingParams": "CLMBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CLMBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CLIBEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CLIBEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CLEBEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CLEBEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCapY7iYoYtD8" + }, + "clickTrackingParams": "CLABEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CLABEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CK8BEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgthcFk3aVlvWXREOA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CK8BEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CK4BEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL_iu2taGRiXDclMGAfAFmazyGFVnLbdmTQ933ofSNEbUTkDoWOsiFoL4ZUv6_2SUdNhUxD2Y8uNX1Zc-tnd1ulRZrW7qAcE4a88Y1Gs8uTy4gHwdc" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CK4BEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLtc7VNUXuNxWn3BveuvURnnIii8lNIGH7lzSc0yX5lpXcBRGMq1PUt_FmQLXts7pzHrfY0h40jPdSpa9lajL8eRTcg9QE5y6A3q1lPpgvjFLb5xEw" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CK4BEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CK0BEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "apY7iYoYtD8" + } + } + }, + { + "clickTrackingParams": "CK0BEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "apY7iYoYtD8" + } + } + }, + { + "clickTrackingParams": "CK0BEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "apY7iYoYtD8" + } + } + } + ], + "target": { + "videoId": "apY7iYoYtD8" + }, + "trackingParams": "CK0BEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CKwBEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CKsBEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC2FwWTdpWW9ZdEQ4EgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CKsBEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Dreht sich der Wind - dArtagnan - 2 minutes, 57 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Dreht sich der Wind - dArtagnan - 2 minutes, 57 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CLkBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 16, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "apY7iYoYtD8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CLkBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "apY7iYoYtD8" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CLoBEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CKoBEMn0AhgQIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 8 seconds" + } + }, + "runs": [ + { + "text": "3:08" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CJkBEMn0AhgRIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "azSEPwrxG2c", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Bella Ciao (Versione italiana - Instrumental)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CJkBEMn0AhgRIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CJkBEMn0AhgRIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKcBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1helNFUHdyeEcyYw%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMazSEPwrxG2c", + "videoId": "azSEPwrxG2c", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CKcBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKUBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CKYBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CKUBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKUBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "azSEPwrxG2c" + } + }, + "videoId": "azSEPwrxG2c" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CKUBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKMBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CKQBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CKMBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKMBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "azSEPwrxG2c" + } + }, + "videoId": "azSEPwrxG2c" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKMBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "azSEPwrxG2c" + }, + "clickTrackingParams": "CKIBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CKIBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CKEBEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CKEBEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CKABEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CKABEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCazSEPwrxG2c" + }, + "clickTrackingParams": "CJ8BEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CJ8BEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ4BEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgthelNFUHdyeEcyYw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJ4BEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJ0BEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIwqBu1W9NNIvyTYrLuIQQP2XoytoPDBIeY60Cte28FEiEBntGMzWhG-UoMzio3jiFE2yPcbAnu_XsGTEY7O-UApCwahoDfHWK0F23cWoJV47oOwow" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJ0BEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIj6nKISCOuTGe5WNI0NT3B917JXMqVbs59m2WfZxXV54iK-jLYWzAUj4moWDeBX-LukZQeI9e3FqFRykpOkzoq7EbLGlO9WuadsoedzYEgwxEdYxI" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CJ0BEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CJwBEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "azSEPwrxG2c" + } + } + }, + { + "clickTrackingParams": "CJwBEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "azSEPwrxG2c" + } + } + }, + { + "clickTrackingParams": "CJwBEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "azSEPwrxG2c" + } + } + } + ], + "target": { + "videoId": "azSEPwrxG2c" + }, + "trackingParams": "CJwBEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CJsBEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CJoBEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC2F6U0VQd3J4RzJjEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CJoBEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Bella Ciao (Versione italiana - Instrumental) - dArtagnan - 3 minutes, 8 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Bella Ciao (Versione italiana - Instrumental) - dArtagnan - 3 minutes, 8 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CKgBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 17, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "azSEPwrxG2c", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CKgBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "azSEPwrxG2c" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKkBEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CJkBEMn0AhgRIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 44 seconds" + } + }, + "runs": [ + { + "text": "3:44" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CIgBEMn0AhgSIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "b9FNHTk-tAM", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Merseburger Zauberspruch (Instrumental)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CIgBEMn0AhgSIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CIgBEMn0AhgSIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJYBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1iOUZOSFRrLXRBTQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMb9FNHTk-tAM", + "videoId": "b9FNHTk-tAM", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJYBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJQBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CJUBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CJQBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJQBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "b9FNHTk-tAM" + } + }, + "videoId": "b9FNHTk-tAM" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJQBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJIBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CJMBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CJIBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJIBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "b9FNHTk-tAM" + } + }, + "videoId": "b9FNHTk-tAM" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJIBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "b9FNHTk-tAM" + }, + "clickTrackingParams": "CJEBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CJEBEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CJABEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CJABEI_7BRgEIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CI8BEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CI8BEJD7BRgFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCb9FNHTk-tAM" + }, + "clickTrackingParams": "CI4BEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CI4BEK-jChgGIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI0BEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtiOUZOSFRrLXRBTQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CI0BEJH7BRgHIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIwBEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKHW-Mrjitq1eZg4VkoeqlVABFNbZhT6dTYioWlkQfZFywFeXtktowr0PxD2HUoDSZ2m2ZoIBJGcKD3IvOyA1o8IFh5rWomHwRZ-Gisz2zHPhTxWR0" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIwBEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJq5zX4bSBMFBb8A8nFb-PH9aF94wB4dG_EeAxEYuQGnxwR-B5eNd64hpWNDBU3BEAQxuorB5shhi7PyJvomKx0ZMuSry3V8aVICDDNiY7oyGcXAio" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CIwBEP7eChgIIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CIsBEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "b9FNHTk-tAM" + } + } + }, + { + "clickTrackingParams": "CIsBEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "b9FNHTk-tAM" + } + } + }, + { + "clickTrackingParams": "CIsBEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "b9FNHTk-tAM" + } + } + } + ], + "target": { + "videoId": "b9FNHTk-tAM" + }, + "trackingParams": "CIsBEKVBGAkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "trackingParams": "CIoBEKc7IhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CIkBEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC2I5Rk5IVGstdEFNEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CIkBEL6-CSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Merseburger Zauberspruch (Instrumental) - dArtagnan - 3 minutes, 44 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Merseburger Zauberspruch (Instrumental) - dArtagnan - 3 minutes, 44 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CJcBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 18, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "b9FNHTk-tAM", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJcBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "b9FNHTk-tAM" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJgBEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CIgBEMn0AhgSIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 55 seconds" + } + }, + "runs": [ + { + "text": "2:55" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CHcQyfQCGBMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "eAeGr78VYxM", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Auld Lang Syne     (Instrumental)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CHcQyfQCGBMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CHcQyfQCGBMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIUBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1lQWVHcjc4Vll4TQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMeAeGr78VYxM", + "videoId": "eAeGr78VYxM", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CIUBEJvzBRgAIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIMBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CIQBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CIMBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIMBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "eAeGr78VYxM" + } + }, + "videoId": "eAeGr78VYxM" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIMBEL7uBRgBIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIEBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CIIBEMrHAyITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + }, + "clickTrackingParams": "CIEBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIEBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "videoId": "eAeGr78VYxM" + } + }, + "videoId": "eAeGr78VYxM" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIEBEPvvBRgCIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "eAeGr78VYxM" + }, + "clickTrackingParams": "CIABEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CIABEMOUBhgDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CH8Qj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CH8Qj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CH4QkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CH4QkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCeAeGr78VYxM" + }, + "clickTrackingParams": "CH0Qr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CH0Qr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHwQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtlQWVHcjc4Vll4TQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CHwQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CHsQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJmbdCBNA1keCJsGLnyv-7LSZUGqG-h8Vs6kWVdMIivqLLZzFuTgyNpP61YgQgG5HaMn_1HcD5OlSqEXBpHoyaHWFuqv9JBUdnj1xOD_t5bTI51igc" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CHsQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLr_jL1JVoLf8XJq1xYX_nXFz_4mxKQY3RiiNf-S8KKcClO6gSxfhsidi_BSKOw-Sx5l96BAdSqDF7CSk5PfxqgE-sSIWeINzOIAt9yDkX4g8Lk7yE" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CHsQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CHoQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "eAeGr78VYxM" + } + } + }, + { + "clickTrackingParams": "CHoQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "eAeGr78VYxM" + } + } + }, + { + "clickTrackingParams": "CHoQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "eAeGr78VYxM" + } + } + } + ], + "target": { + "videoId": "eAeGr78VYxM" + }, + "trackingParams": "CHoQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + ], + "trackingParams": "CHkQpzsiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CHgQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC2VBZUdyNzhWWXhNEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CHgQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Auld Lang Syne     (Instrumental) - dArtagnan - 2 minutes, 55 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Auld Lang Syne     (Instrumental) - dArtagnan - 2 minutes, 55 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CIYBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==", + "watchEndpoint": { + "index": 19, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "eAeGr78VYxM", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CIYBEMjeAiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "eAeGr78VYxM" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIcBEIS_AiITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + "trackingParams": "CHcQyfQCGBMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 15 seconds" + } + }, + "runs": [ + { + "text": "3:15" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CGYQyfQCGBQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "efCzrXOWM0Q", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Freiheit & Tod " + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CGYQyfQCGBQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CGYQyfQCGBQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHQQm_MFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1lZkN6clhPV00wUQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMefCzrXOWM0Q", + "videoId": "efCzrXOWM0Q", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CHQQm_MFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHIQvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CHMQyscDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + }, + "clickTrackingParams": "CHIQvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CHIQvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "videoId": "efCzrXOWM0Q" + } + }, + "videoId": "efCzrXOWM0Q" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CHIQvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHAQ--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CHEQyscDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + }, + "clickTrackingParams": "CHAQ--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CHAQ--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "videoId": "efCzrXOWM0Q" + } + }, + "videoId": "efCzrXOWM0Q" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CHAQ--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "efCzrXOWM0Q" + }, + "clickTrackingParams": "CG8Qw5QGGAMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CG8Qw5QGGAMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CG4Qj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CG4Qj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CG0QkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CG0QkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCefCzrXOWM0Q" + }, + "clickTrackingParams": "CGwQr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CGwQr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGsQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtlZkN6clhPV00wUQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CGsQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CGoQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIKRiTD4T0mxAYsqWI517ad2E_91SghNsCVnKYBbJZVSyRVde8s8WmMam-HdeKI087Z8jJ1ZVPidYCrJynP5Wr1KtKqeh6cOAB_-It50Tjn7tKEuQE" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CGoQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL-2NZfws9CEl74sgZWHClKEbGYTPmE6Ct966OqAIdmBBx69QQ-JYtGbZxZ-SXruHy0Lj1vK5_CuQiz97Li8hRz_1xkrP_F4sRFUfJLIpI6CE0gmMU" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CGoQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CGkQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "efCzrXOWM0Q" + } + } + }, + { + "clickTrackingParams": "CGkQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "efCzrXOWM0Q" + } + } + }, + { + "clickTrackingParams": "CGkQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "efCzrXOWM0Q" + } + } + } + ], + "target": { + "videoId": "efCzrXOWM0Q" + }, + "trackingParams": "CGkQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + ], + "trackingParams": "CGgQpzsiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CGcQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC2VmQ3pyWE9XTTBREgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CGcQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Freiheit & Tod  - dArtagnan - 3 minutes, 15 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Freiheit & Tod  - dArtagnan - 3 minutes, 15 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CHUQyN4CIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "index": 20, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "efCzrXOWM0Q", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CHUQyN4CIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "efCzrXOWM0Q" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CHYQhL8CIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "trackingParams": "CGYQyfQCGBQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 29 seconds" + } + }, + "runs": [ + { + "text": "3:29" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CFUQyfQCGBUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "fbmHQLiF1qs", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Vino griego" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CFUQyfQCGBUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CFUQyfQCGBUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGMQm_MFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1mYm1IUUxpRjFxcw%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMfbmHQLiF1qs", + "videoId": "fbmHQLiF1qs", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CGMQm_MFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGEQvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CGIQyscDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + }, + "clickTrackingParams": "CGEQvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CGEQvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "videoId": "fbmHQLiF1qs" + } + }, + "videoId": "fbmHQLiF1qs" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CGEQvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF8Q--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CGAQyscDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + }, + "clickTrackingParams": "CF8Q--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CF8Q--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "videoId": "fbmHQLiF1qs" + } + }, + "videoId": "fbmHQLiF1qs" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CF8Q--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "fbmHQLiF1qs" + }, + "clickTrackingParams": "CF4Qw5QGGAMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CF4Qw5QGGAMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CF0Qj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CF0Qj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CFwQkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CFwQkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCfbmHQLiF1qs" + }, + "clickTrackingParams": "CFsQr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CFsQr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFoQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtmYm1IUUxpRjFxcw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CFoQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CFkQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI4iGf0WjuHElo5taCwK6Ba8JPHLBZ_Py2wCRVfuRJzalOvC-3vfLvP7h_gN2pCygdho8S2eJ17UBHxAyXROOkYJWDAsKBoPXCmnv0gmjrkHttbccU" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CFkQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpILMGFeMSDp0CxQd7G1UfffCrqJ22dJ-_GRVRMtiOUwR53eNGCZeYULlKiPqcaC6WZCt0R5uFH_s51dhV96Ko4BPqQgDeTqGJTpKf9jWQkQTiyRbDo" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CFkQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CFgQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "fbmHQLiF1qs" + } + } + }, + { + "clickTrackingParams": "CFgQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "fbmHQLiF1qs" + } + } + }, + { + "clickTrackingParams": "CFgQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "fbmHQLiF1qs" + } + } + } + ], + "target": { + "videoId": "fbmHQLiF1qs" + }, + "trackingParams": "CFgQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + ], + "trackingParams": "CFcQpzsiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CFYQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC2ZibUhRTGlGMXFzEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CFYQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Vino griego - dArtagnan - 3 minutes, 29 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Vino griego - dArtagnan - 3 minutes, 29 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CGQQyN4CIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "index": 21, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "fbmHQLiF1qs", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CGQQyN4CIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "fbmHQLiF1qs" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CGUQhL8CIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "trackingParams": "CFUQyfQCGBUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 18 seconds" + } + }, + "runs": [ + { + "text": "3:18" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CEQQyfQCGBYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "h0qhAXLom-Y", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "C'est la vie (English Version - Instrumental)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CEQQyfQCGBYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CEQQyfQCGBYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFIQm_MFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1oMHFoQVhMb20tWQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMh0qhAXLom-Y", + "videoId": "h0qhAXLom-Y", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CFIQm_MFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFAQvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CFEQyscDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + }, + "clickTrackingParams": "CFAQvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CFAQvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "videoId": "h0qhAXLom-Y" + } + }, + "videoId": "h0qhAXLom-Y" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CFAQvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CE4Q--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CE8QyscDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + }, + "clickTrackingParams": "CE4Q--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CE4Q--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "videoId": "h0qhAXLom-Y" + } + }, + "videoId": "h0qhAXLom-Y" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CE4Q--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "h0qhAXLom-Y" + }, + "clickTrackingParams": "CE0Qw5QGGAMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CE0Qw5QGGAMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CEwQj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CEwQj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CEsQkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CEsQkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCh0qhAXLom-Y" + }, + "clickTrackingParams": "CEoQr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CEoQr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEkQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtoMHFoQVhMb20tWQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CEkQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CEgQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIFEzOmJLoXRnwvalYllfG0N8VWBP1j9UMFPQNF7co6ZeUxU9xFBH_3-yQr1NV_F8v4a3upKcXs0M0guK6WHQVeOHvp5OU_ottBf_ARzn_f1EyTnuk" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CEgQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI2d9VG25GjYJhQgBLY_SsVKYyNoTQcK7yKWnfgWxUa3BtNr_tEFIw20je6Ry_zKxWkO3yWZRhr9xENN6nIJ2zZ5bzEE81QJemgIE2wrFIqpFrlkho" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CEgQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CEcQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "h0qhAXLom-Y" + } + } + }, + { + "clickTrackingParams": "CEcQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "h0qhAXLom-Y" + } + } + }, + { + "clickTrackingParams": "CEcQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "h0qhAXLom-Y" + } + } + } + ], + "target": { + "videoId": "h0qhAXLom-Y" + }, + "trackingParams": "CEcQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + ], + "trackingParams": "CEYQpzsiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CEUQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC2gwcWhBWExvbS1ZEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CEUQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause C'est la vie (English Version - Instrumental) - dArtagnan - 3 minutes, 18 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play C'est la vie (English Version - Instrumental) - dArtagnan - 3 minutes, 18 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CFMQyN4CIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "index": 22, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "h0qhAXLom-Y", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CFMQyN4CIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "h0qhAXLom-Y" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CFQQhL8CIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "trackingParams": "CEQQyfQCGBYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 26 seconds" + } + }, + "runs": [ + { + "text": "3:26" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CDMQyfQCGBciEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "hTL2vAvAbNM", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Teufelsgeiger (Instrumental)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CDMQyfQCGBciEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CDMQyfQCGBciEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEEQm_MFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1oVEwydkF2QWJOTQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMhTL2vAvAbNM", + "videoId": "hTL2vAvAbNM", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CEEQm_MFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CD8Qvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CEAQyscDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + }, + "clickTrackingParams": "CD8Qvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CD8Qvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "videoId": "hTL2vAvAbNM" + } + }, + "videoId": "hTL2vAvAbNM" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CD8Qvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CD0Q--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CD4QyscDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + }, + "clickTrackingParams": "CD0Q--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CD0Q--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "videoId": "hTL2vAvAbNM" + } + }, + "videoId": "hTL2vAvAbNM" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CD0Q--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "hTL2vAvAbNM" + }, + "clickTrackingParams": "CDwQw5QGGAMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CDwQw5QGGAMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CDsQj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CDsQj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CDoQkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CDoQkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTChTL2vAvAbNM" + }, + "clickTrackingParams": "CDkQr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CDkQr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDgQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtoVEwydkF2QWJOTQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CDgQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CDcQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL-Np7fpdnWKqVA1gs2ejTf18rdj2vn17y9G1bLzRlRYya9r7mR7Nq8nqVezPbH-CbKBaa9UpAnfoVjhJD9Ssk_Khz3RlFQAPB89EbtyJOmqZcns_w" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CDcQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJCGCepmbbSnq_JNpOkmBC_9ELjEQUzvF1Litbfvte-pRc-v9MRL5Zs4VNBnQgNUsVTey-Zs3YylpsdSiVWdbSu_3_Ws2-xiGV5AxNrrX31BbDPYMI" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CDcQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CDYQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "hTL2vAvAbNM" + } + } + }, + { + "clickTrackingParams": "CDYQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "hTL2vAvAbNM" + } + } + }, + { + "clickTrackingParams": "CDYQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "hTL2vAvAbNM" + } + } + } + ], + "target": { + "videoId": "hTL2vAvAbNM" + }, + "trackingParams": "CDYQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + ], + "trackingParams": "CDUQpzsiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CDQQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC2hUTDJ2QXZBYk5NEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CDQQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Teufelsgeiger (Instrumental) - dArtagnan - 3 minutes, 26 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Teufelsgeiger (Instrumental) - dArtagnan - 3 minutes, 26 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CEIQyN4CIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "index": 23, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "hTL2vAvAbNM", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CEIQyN4CIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "hTL2vAvAbNM" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CEMQhL8CIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "trackingParams": "CDMQyfQCGBciEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 10 seconds" + } + }, + "runs": [ + { + "text": "3:10" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CCIQyfQCGBgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "hptOG4EVgMs", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Wein & Wahrheit (Instrumental)" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CCIQyfQCGBgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CCIQyfQCGBgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDAQm_MFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1ocHRPRzRFVmdNcw%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMhptOG4EVgMs", + "videoId": "hptOG4EVgMs", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CDAQm_MFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CC4Qvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CC8QyscDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + }, + "clickTrackingParams": "CC4Qvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CC4Qvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "videoId": "hptOG4EVgMs" + } + }, + "videoId": "hptOG4EVgMs" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CC4Qvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCwQ--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CC0QyscDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + }, + "clickTrackingParams": "CCwQ--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CCwQ--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "videoId": "hptOG4EVgMs" + } + }, + "videoId": "hptOG4EVgMs" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCwQ--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "hptOG4EVgMs" + }, + "clickTrackingParams": "CCsQw5QGGAMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CCsQw5QGGAMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CCoQj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CCoQj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CCkQkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CCkQkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTChptOG4EVgMs" + }, + "clickTrackingParams": "CCgQr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CCgQr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCcQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtocHRPRzRFVmdNcw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CCcQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CCYQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLng-7llaSb8MNhaMKGwmBU5CJdTbH6K2lPSOMv8HI3VapsVkP8hrmgpWoPApDMEOT_VRNKBDOnKGKnbQeJ9qs0Yi7mseEzoucyo55NrW_4xg8mgVY" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CCYQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJACCc0-PiafrZ-5uqe44-Yhv6IGEtkMmAVWInwTQuNSPh8IeFpw53cwW_GLG4EbJNQIILqJsks_2gPp4RTc6MxzGH7coXny9tufaux-c2aqiljkiY" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CCYQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CCUQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "hptOG4EVgMs" + } + } + }, + { + "clickTrackingParams": "CCUQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "hptOG4EVgMs" + } + } + }, + { + "clickTrackingParams": "CCUQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "hptOG4EVgMs" + } + } + } + ], + "target": { + "videoId": "hptOG4EVgMs" + }, + "trackingParams": "CCUQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + ], + "trackingParams": "CCQQpzsiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CCMQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC2hwdE9HNEVWZ01zEgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CCMQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Wein & Wahrheit (Instrumental) - dArtagnan - 3 minutes, 10 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Wein & Wahrheit (Instrumental) - dArtagnan - 3 minutes, 10 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CDEQyN4CIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "index": 24, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "hptOG4EVgMs", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CDEQyN4CIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "hptOG4EVgMs" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CDIQhL8CIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "trackingParams": "CCIQyfQCGBgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "musicResponsiveListItemRenderer": { + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 22 seconds" + } + }, + "runs": [ + { + "text": "3:22" + } + ] + } + } + } + ], + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CBEQyfQCGBkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "playlistId": "MLCT", + "videoId": "iRIlHsC8xL8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Pulverdampf & Donnergroll'n" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CBEQyfQCGBkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "dArtagnan" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CBEQyfQCGBkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": "Felsenfest" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CB8Qm_MFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1pUklsSHNDOHhMOA%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMiRIlHsC8xL8", + "videoId": "iRIlHsC8xL8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CB8Qm_MFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CB0Qvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CB4QyscDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + }, + "clickTrackingParams": "CB0Qvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CB0Qvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "videoId": "iRIlHsC8xL8" + } + }, + "videoId": "iRIlHsC8xL8" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CB0Qvu4FGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBsQ--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CBwQyscDIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + } + }, + "clickTrackingParams": "CBsQ--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CBsQ--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "watchEndpoint": { + "videoId": "iRIlHsC8xL8" + } + }, + "videoId": "iRIlHsC8xL8" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CBsQ--8FGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "addToPlaylistEndpoint": { + "videoId": "iRIlHsC8xL8" + }, + "clickTrackingParams": "CBoQw5QGGAMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "trackingParams": "CBoQw5QGGAMiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_yYq4IkZhG9j" + }, + "clickTrackingParams": "CBkQj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CBkQj_sFGAQiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWOw75Vmryv3D_WdzE2DbKA" + }, + "clickTrackingParams": "CBgQkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CBgQkPsFGAUiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCiRIlHsC8xL8" + }, + "clickTrackingParams": "CBcQr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CBcQr6MKGAYiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBYQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtpUklsSHNDOHhMOA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CBYQkfsFGAciEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CBUQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKFpK7CHqHc1dzgsqnKriM8vtQOGt5gP7KUBJZXNbsBj0iAI0QYpu5sRDEWkHjX08JgSLcoPpGM8zCstZJFf0OQN5A0w_Rtb4CIFlGRgY-PqiaEeZ8" + } + }, + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CBUQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI9kKUSyG3RLOKjN2avj_Z7WiltoLbapbXu4wFMVMDF9NrjKc_OXNfqLwmgQsbgYgBzcQHX7exlfNFsrvphev_U5uqINO2kFUdQhZ1sEu6ro269pZc" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "trackingParams": "CBUQ_t4KGAgiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CBQQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "iRIlHsC8xL8" + } + } + }, + { + "clickTrackingParams": "CBQQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "iRIlHsC8xL8" + } + } + }, + { + "clickTrackingParams": "CBQQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "iRIlHsC8xL8" + } + } + } + ], + "target": { + "videoId": "iRIlHsC8xL8" + }, + "trackingParams": "CBQQpUEYCSITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + ], + "trackingParams": "CBMQpzsiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + "multiSelectCheckbox": { + "checkboxRenderer": { + "checkedState": "CHECKBOX_CHECKED_STATE_UNCHECKED", + "onSelectionChangeCommand": { + "clickTrackingParams": "CBIQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT", + "updateMultiSelectStateCommand": { + "multiSelectItem": "Cg8KC2lSSWxIc0M4eEw4EgA=", + "multiSelectParams": "CAUSBE1MQ1Q=" + } + }, + "trackingParams": "CBIQvr4JIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Pulverdampf & Donnergroll'n - dArtagnan - 3 minutes, 22 seconds" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Pulverdampf & Donnergroll'n - dArtagnan - 3 minutes, 22 seconds" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CCAQyN4CIhMIs56tqbPDigMV0O5JBx3_wTiT", + "watchEndpoint": { + "index": 25, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GgRNTENU" + } + }, + "params": "8gEKMggIARACGgJlbg%3D%3D", + "playlistId": "MLCT", + "videoId": "iRIlHsC8xL8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CCAQyN4CIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "iRIlHsC8xL8" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/68I8CkjpCfwrRy1JXyS5tvo_R0hm3DlEE0pXNnLpuihH10pIRNlNVZEoqsEFOzPeCAKMEjsJKQ5kfHVW=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CCEQhL8CIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "trackingParams": "CBEQyfQCGBkiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "contentsMultiSelectable": true, + "continuations": [ + { + "nextContinuationData": { + "autoloadEnabled": true, + "autoloadImmediately": true, + "clickTrackingParams": "CBAQybcCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "continuation": "4qmFsgJcEhRGRW11c2ljX2xpa2VkX3ZpZGVvcxpEQ0JwNkprTkNhMUZIVW05SlEwRkZVVUZvYjBOYVZ6UnBSRUZxWXpsaVF6ZENhRU4yT1ZwdFRVRjNnZ01HS2dRSUFCQUI%3D" + } + } + ], + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + }, + "trackingParams": "CA8Q-V4YACITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + ], + "continuations": [ + { + "reloadContinuationData": { + "clickTrackingParams": "CA4QxqYCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "continuation": "4qmFsgIoEhRGRW11c2ljX2xpa2VkX3ZpZGVvcxoQZ2dNR0tnUUlBQkFCb0FZQg%3D%3D" + } + } + ], + "header": { + "musicSideAlignedItemRenderer": { + "endItems": [ + { + "musicSortFilterButtonRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Sort by - Recently saved selected" + } + }, + "icon": { + "iconType": "ARROW_DROP_DOWN" + }, + "menu": { + "musicMultiSelectMenuRenderer": { + "formEntityKey": "EkNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFIJABKAE%3D", + "options": [ + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "Recently saved" + } + }, + "formItemEntityKey": "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "selectedAccessibility": { + "accessibilityData": { + "label": "Recently saved selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAkQk5QFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAkQk5QFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAkQk5QFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": true + } + }, + { + "clickTrackingParams": "CAkQk5QFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D", + "newCheckedState": false + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAoQxqYCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "continuation": "4qmFsgIoEhRGRW11c2ljX2xpa2VkX3ZpZGVvcxoQZ2dNR0tnUUlBQkFCb0FZQg%3D%3D", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAkQk5QFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "Recently saved" + } + ] + }, + "trackingParams": "CAkQk5QFGAAiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "A to Z" + } + }, + "formItemEntityKey": "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D", + "selectedAccessibility": { + "accessibilityData": { + "label": "A to Z selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAcQk5QFGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAcQk5QFGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D", + "newCheckedState": true + } + }, + { + "clickTrackingParams": "CAcQk5QFGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAcQk5QFGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "newCheckedState": false + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAgQxqYCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "continuation": "4qmFsgIoEhRGRW11c2ljX2xpa2VkX3ZpZGVvcxoQZ2dNR0tnUUlBUkFBb0FZQg%3D%3D", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAcQk5QFGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "A to Z" + } + ] + }, + "trackingParams": "CAcQk5QFGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "Z to A" + } + }, + "formItemEntityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "selectedAccessibility": { + "accessibilityData": { + "label": "Z to A selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAUQk5QFGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAUQk5QFGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAUQk5QFGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAUQk5QFGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "newCheckedState": true + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAYQxqYCIhMIs56tqbPDigMV0O5JBx3_wTiT", + "continuation": "4qmFsgIoEhRGRW11c2ljX2xpa2VkX3ZpZGVvcxoQZ2dNR0tnUUlBUkFCb0FZQg%3D%3D", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAUQk5QFGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "Z to A" + } + ] + }, + "trackingParams": "CAUQk5QFGAIiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "title": { + "musicMenuTitleRenderer": { + "primaryText": { + "runs": [ + { + "text": "Sort by" + } + ] + } + } + }, + "trackingParams": "CAQQkpQFIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "title": { + "runs": [ + { + "text": "Recently saved" + } + ] + }, + "trackingParams": "CAMQkZQFGAEiEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + } + ], + "startItems": [ + { + "chipCloudRenderer": { + "chips": [ + { + "chipCloudChipRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Clear filters" + } + }, + "icon": { + "iconType": "CLOSE" + }, + "isSelected": true, + "navigationEndpoint": { + "clickTrackingParams": "CA0Q_V0YACITCLOeramzw4oDFdDuSQcd_8E4kw==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YACITCLOeramzw4oDFdDuSQcd_8E4kw==" + }, + { + "clickTrackingParams": "CA0Q_V0YACITCLOeramzw4oDFdDuSQcd_8E4kw==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YACITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + } + ] + } + }, + "onDeselectedCommand": { + "clickTrackingParams": "CA0Q_V0YACITCLOeramzw4oDFdDuSQcd_8E4kw==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YACITCLOeramzw4oDFdDuSQcd_8E4kw==" + }, + { + "clickTrackingParams": "CA0Q_V0YACITCLOeramzw4oDFdDuSQcd_8E4kw==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CA0Q_V0YACITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + } + ] + } + }, + "trackingParams": "CA0Q_V0YACITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + }, + { + "chipCloudChipRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Show songs" + } + }, + "isSelected": true, + "navigationEndpoint": { + "clickTrackingParams": "CAwQ_V0YASITCLOeramzw4oDFdDuSQcd_8E4kw==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_liked_videos" + }, + "clickTrackingParams": "CAwQ_V0YASITCLOeramzw4oDFdDuSQcd_8E4kw==" + }, + { + "clickTrackingParams": "CAwQ_V0YASITCLOeramzw4oDFdDuSQcd_8E4kw==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_liked_videos" + }, + "clickTrackingParams": "CAwQ_V0YASITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + } + ] + } + }, + "onDeselectedCommand": { + "clickTrackingParams": "CAwQ_V0YASITCLOeramzw4oDFdDuSQcd_8E4kw==", + "commandExecutorCommand": { + "commands": [ + { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CAwQ_V0YASITCLOeramzw4oDFdDuSQcd_8E4kw==" + }, + { + "clickTrackingParams": "CAwQ_V0YASITCLOeramzw4oDFdDuSQcd_8E4kw==", + "musicLibraryPersistLaunchNavigationCommand": { + "command": { + "browseEndpoint": { + "browseId": "FEmusic_library_landing" + }, + "clickTrackingParams": "CAwQ_V0YASITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + } + ] + } + }, + "text": { + "runs": [ + { + "text": "Songs" + } + ] + }, + "trackingParams": "CAwQ_V0YASITCLOeramzw4oDFdDuSQcd_8E4kw==", + "uniqueId": "Songs" + } + } + ], + "trackingParams": "CAsQ_F0YACITCLOeramzw4oDFdDuSQcd_8E4kw==" + } + } + ], + "trackingParams": "CAIQxv4DIhMIs56tqbPDigMV0O5JBx3_wTiT" + } + }, + "trackingParams": "CAEQui8iEwiznq2ps8OKAxXQ7kkHHf_BOJM=" + } + }, + "frameworkUpdates": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EkNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFIJABKAE%3D", + "payload": { + "musicForm": { + "booleanChoiceEntityKeys": [ + "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D" + ], + "id": "EkNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFIJABKAE%3D" + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "payload": { + "musicFormBooleanChoice": { + "id": "EntQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfQURERURfVElNRVNUQU1QX1NvcnRTcGVjX09yZGVyX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "opaqueToken": "SortSpec_Type_ADDED_TIMESTAMP_SortSpec_Order_DESCENDING", + "parentFormEntityKey": "EkNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFIJABKAE%3D", + "selected": true + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D", + "payload": { + "musicFormBooleanChoice": { + "id": "EnZQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfQVNDRU5ESU5HIJEBKAE%3D", + "opaqueToken": "SortSpec_Type_ENTITY_NAME_SortSpec_Order_ASCENDING", + "parentFormEntityKey": "EkNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFIJABKAE%3D", + "selected": false + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "payload": { + "musicFormBooleanChoice": { + "id": "EndQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFLVNvcnRTcGVjX1R5cGVfRU5USVRZX05BTUVfU29ydFNwZWNfT3JkZXJfREVTQ0VORElORyCRASgB", + "opaqueToken": "SortSpec_Type_ENTITY_NAME_SortSpec_Order_DESCENDING", + "parentFormEntityKey": "EkNQQUdFX1RZUEVfTElCUkFSWV9MQU5ESU5HX1BBR0UtUEFHRV9UWVBFX0xJQlJBUllfQ09SUFVTX1RSQUNLU19QQUdFIJABKAE%3D", + "selected": false + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + } + ], + "timestamp": { + "nanos": 896894723, + "seconds": "1735146204" + } + } + }, + "responseContext": { + "maxAgeSeconds": 0, + "serviceTrackingParams": [ + { + "params": [ + { + "key": "browse_id", + "value": "FEmusic_liked_videos" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "1" + }, + { + "key": "e", + "value": "23804281,23813628,24004644,24077241,24181174,24241378,24299875,24439361,24459436,24548629,24566687,24697013,51009781,51010235,51017346,51020570,51025415,51030101,51037342,51037353,51050361,51053689,51057842,51057853,51063643,51065188,51089007,51098299,51111738,51115184,51124104,51125020,51151423,51152050,51157411,51160545,51169118,51176511,51178314,51178327,51178344,51178351,51178982,51179884,51183909,51204329,51208678,51217504,51222382,51222973,51226938,51227037,51227778,51228850,51230478,51237842,51239093,51241028,51242448,51248255,51248734,51249751,51255676,51255743,51256084,51257943,51260634,51274583,51275785,51276557,51276565,51278183,51281227,51285717,51287196,51289922,51289929,51289938,51289958,51289965,51290036,51290043,51290404,51292055,51294322,51296439,51298020,51299710,51299724,51299973,51299999,51300018,51302680,51303667,51303669,51303789,51304155,51305839,51310742,51311025,51311034,51313109,51313767,51313802,51315910,51315919,51315928,51315931,51315938,51315945,51315956,51315963,51315972,51315979,51316744,51316844,51318845,51321893,51322669,51324941,51326281,51326932,51327144,51327163,51327180,51327613,51327615,51330194,51331485,51331500,51331520,51331535,51331538,51331545,51331552,51331561,51333541,51333878,51334535,51335365,51335392,51335594,51335646,51335928,51336633,51337000,51337139,51337186,51337349,51339007,51340662,51341214,51341226,51341443,51341730,51341974,51342579,51342857,51343368,51343796,51345228,51345295,51345629,51346352,51346795,51346816,51346823,51346836,51346849,51346868,51346879,51346896,51347325,51347576,51348208,51348354,51348672,51349880,51349914,51351446,51353231,51353361,51353393,51354114,51354507,51354569,51355268,51355273,51355291,51355307,51355312,51355337,51355342,51355679,51355825,51357477,51357777,51359172,51360108,51360123,51360140,51360212,51360215,51361727,51361828,51362040,51362071,51362455,51362643,51362674,51362857,51363725,51363734,51363741,51363756,51363761,51363772,51365460,51365716,51365751,51365860,51365987,51366423,51366864,51367318,51367487,51367605,51367993,51368502,51369325,51369559,51369905,51370739,51371001,51371006,51371522,51372699,51374017,51374439,51375168,51375719,51375867,51376050,51376515,51379209" + } + ], + "service": "GFEEDBACK" + }, + { + "params": [ + { + "key": "c", + "value": "WEB_REMIX" + }, + { + "key": "cver", + "value": "1.20241218.01.00" + }, + { + "key": "yt_li", + "value": "1" + }, + { + "key": "GetBrowseCorpusTracksPage_rid", + "value": "0x97383ece37377b70" + } + ], + "service": "CSI" + }, + { + "params": [ + { + "key": "client.version", + "value": "1.20000101" + }, + { + "key": "client.name", + "value": "WEB_REMIX" + } + ], + "service": "ECATCHER" + } + ], + "visitorData": "CgtfTERHZjhPRmxRTijc9bC7BjIKCgJVUxIEEgAgbQ%3D%3D" + }, + "trackingParams": "CAAQhGciEwiznq2ps8OKAxXQ7kkHHf_BOJM=" +} diff --git a/tests/youtube.rs b/tests/youtube.rs index bbe39a4..8c5b2d6 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2738,11 +2738,143 @@ async fn isrc_search_languages(rp: RustyPipe) { #[tokio::test] async fn user_auth_check_login(rp: RustyPipe, auth_enabled: bool) { if auth_enabled { - assert!(rp.query().auth_enabled()); + assert!(rp.query().auth_enabled(ClientType::Tv)); rp.user_auth_check_login().await.unwrap(); } } +#[rstest] +#[tokio::test] +async fn history(rp: RustyPipe, cookie_auth_enabled: bool) { + if !cookie_auth_enabled { + return; + } + + let videos = rp.query().history().await.unwrap(); + assert_next_items(videos, rp.query(), 100).await; +} + +#[rstest] +#[tokio::test] +async fn history_search(rp: RustyPipe, cookie_auth_enabled: bool) { + if !cookie_auth_enabled { + return; + } + + let videos = rp.query().history_search("a").await.unwrap(); + assert_next_items(videos, rp.query(), 5).await; +} + +#[rstest] +#[tokio::test] +async fn subscriptions(rp: RustyPipe, cookie_auth_enabled: bool) { + if !cookie_auth_enabled { + return; + } + + let channels = rp.query().subscriptions().await.unwrap(); + assert_next_items(channels, rp.query(), 5).await; +} + +#[rstest] +#[tokio::test] +async fn subscription_feed(rp: RustyPipe, cookie_auth_enabled: bool) { + if !cookie_auth_enabled { + return; + } + + let videos = rp.query().subscription_feed().await.unwrap(); + assert_next_items(videos, rp.query(), 50).await; +} + +#[rstest] +#[tokio::test] +async fn liked_videos(rp: RustyPipe, cookie_auth_enabled: bool) { + if !cookie_auth_enabled { + return; + } + + let videos = rp.query().liked_videos().await.unwrap(); + assert_next_items(videos.videos, rp.query(), 5).await; +} + +#[rstest] +#[tokio::test] +async fn watch_later(rp: RustyPipe, cookie_auth_enabled: bool) { + if !cookie_auth_enabled { + return; + } + + let videos = rp.query().watch_later().await.unwrap(); + assert_next_items(videos.videos, rp.query(), 5).await; +} + +#[rstest] +#[tokio::test] +async fn music_history(rp: RustyPipe, cookie_auth_enabled: bool) { + if !cookie_auth_enabled { + return; + } + + let tracks = rp.query().music_history().await.unwrap(); + assert_next_items(tracks, rp.query(), 150).await; +} + +#[rstest] +#[tokio::test] +async fn music_saved_artists(rp: RustyPipe, cookie_auth_enabled: bool) { + if !cookie_auth_enabled { + return; + } + + let artists = rp.query().music_saved_artists().await.unwrap(); + assert_next_items(artists, rp.query(), 5).await; +} + +#[rstest] +#[tokio::test] +async fn music_saved_albums(rp: RustyPipe, cookie_auth_enabled: bool) { + if !cookie_auth_enabled { + return; + } + + let albums = rp.query().music_saved_albums().await.unwrap(); + assert_next_items(albums, rp.query(), 5).await; +} + +#[rstest] +#[tokio::test] +async fn music_saved_tracks(rp: RustyPipe, cookie_auth_enabled: bool) { + if !cookie_auth_enabled { + return; + } + + let tracks = rp.query().music_saved_tracks().await.unwrap(); + assert_next_items(tracks, rp.query(), 50).await; +} + +#[rstest] +#[tokio::test] +async fn music_saved_playlists(rp: RustyPipe, cookie_auth_enabled: bool) { + if !cookie_auth_enabled { + return; + } + + let playlists = rp.query().music_saved_playlists().await.unwrap(); + assert_next_items(playlists, rp.query(), 5).await; +} + +#[rstest] +#[tokio::test] +async fn music_liked_tracks(rp: RustyPipe, cookie_auth_enabled: bool) { + if !cookie_auth_enabled { + return; + } + + let tracks = rp.query().music_liked_tracks().await.unwrap(); + assert_next_items(tracks.tracks, rp.query(), 5).await; +} + //#TESTUTIL /// Get the language setting from the environment variable @@ -2778,7 +2910,17 @@ fn auth_enabled(rp: RustyPipe) -> bool { std::env::var("YT_AUTHENTICATED") .map(|v| !v.is_empty() && v.to_ascii_lowercase() != "false") .unwrap_or_default() - || rp.query().auth_enabled() + || rp.query().auth_enabled(ClientType::Desktop) + || rp.query().auth_enabled(ClientType::Tv) +} + +/// Get a flag signaling if an authenticated user is expected +#[fixture] +fn cookie_auth_enabled(rp: RustyPipe) -> bool { + std::env::var("YT_AUTHENTICATED") + .map(|v| !v.is_empty() && v.to_ascii_lowercase() != "false") + .unwrap_or_default() + || rp.query().auth_enabled(ClientType::Desktop) } /* From 65ada372143756896a899b14d56d586eef3f56c7 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 26 Dec 2024 01:25:05 +0100 Subject: [PATCH 069/191] clarify description of music_saved_tracks and music_liked_tracks --- src/client/music_history.rs | 2 ++ src/client/music_playlist.rs | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/client/music_history.rs b/src/client/music_history.rs index 432fdc6..0ef3bea 100644 --- a/src/client/music_history.rs +++ b/src/client/music_history.rs @@ -68,6 +68,8 @@ impl RustyPipeQuery { /// Get a list of YouTube Music tracks which the current user has added to their collection /// + /// Contains both liked tracks and tracks from saved albums. + /// /// Requires authentication cookies. #[tracing::instrument(skip(self), level = "error")] pub async fn music_saved_tracks(&self) -> Result, Error> { diff --git a/src/client/music_playlist.rs b/src/client/music_playlist.rs index a85acf3..efe4859 100644 --- a/src/client/music_playlist.rs +++ b/src/client/music_playlist.rs @@ -123,7 +123,10 @@ impl RustyPipeQuery { Ok(album) } - /// Get all liked tracks of the logged-in user + /// Get all liked YouTube Music tracks of the logged-in user + /// + /// The difference to [`RustyPipeQuery::music_saved_tracks`] is that this function only returns + /// tracks that were explicitly liked by the user. /// /// Requires authentication cookies. pub async fn music_liked_tracks(&self) -> Result { From 320a8c2c24217ad5697f0424c4f994bbbe31f3aa Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 3 Jan 2025 19:15:28 +0100 Subject: [PATCH 070/191] feat: add history item dates, extend timeago parser --- .gitignore | 2 +- Justfile | 2 +- cli/src/main.rs | 6 + codegen/src/collect_history_dates.rs | 69 + codegen/src/gen_dictionary.rs | 4 +- codegen/src/main.rs | 7 + codegen/src/model.rs | 4 + codegen/src/util.rs | 2 +- src/client/history.rs | 133 +- src/client/mod.rs | 10 + src/client/music_charts.rs | 8 +- src/client/music_history.rs | 52 +- src/client/pagination.rs | 176 +- src/client/response/mod.rs | 8 + src/client/response/music_item.rs | 44 +- src/client/response/video_item.rs | 37 +- ...__client__history__tests__map_history.snap | 450 ++- ...nt__music_history__tests__map_history.snap | 1518 +++---- src/model/mod.rs | 12 + src/util/date.rs | 7 +- src/util/dictionary.rs | 3546 +++++++++++++---- src/util/mod.rs | 2 +- src/util/timeago.rs | 166 +- testfiles/dict/cldr_data/collect_day_names.js | 87 + testfiles/dict/cldr_data/package.json | 4 +- testfiles/dict/dictionary.json | 1945 +++++++-- testfiles/dict/history_date_samples.json | 334 ++ tests/youtube.rs | 32 +- 28 files changed, 6507 insertions(+), 2160 deletions(-) create mode 100644 codegen/src/collect_history_dates.rs create mode 100644 testfiles/dict/cldr_data/collect_day_names.js create mode 100644 testfiles/dict/history_date_samples.json diff --git a/.gitignore b/.gitignore index 4e1b2c5..3a5faf8 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,4 @@ *.snap.new rustypipe_reports -rustypipe_cache.json +rustypipe_cache*.json diff --git a/Justfile b/Justfile index cf754a3..fcf3068 100644 --- a/Justfile +++ b/Justfile @@ -28,7 +28,7 @@ testintl: for YT_LANG in "${LANGUAGES[@]}"; do echo "---TESTS FOR $YT_LANG ---" - if YT_LANG="$YT_LANG" cargo nextest run --no-fail-fast ---retries 1 --test-threads 4 --test youtube -E 'not test(/^resolve/)'; then + if YT_LANG="$YT_LANG" cargo nextest run --no-fail-fast --retries 1 --test-threads 4 --test youtube -E 'not test(/^resolve/)'; then echo "--- $YT_LANG COMPLETED ---" else echo "--- $YT_LANG FAILED ---" diff --git a/cli/src/main.rs b/cli/src/main.rs index 1e0fc2d..0a1f568 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -54,6 +54,9 @@ struct Cli { /// YouTube content country #[clap(long, global = true)] country: Option, + /// Use authentication + #[clap(long, global = true)] + auth: bool, #[clap(long, global = true)] /// RustyPipe cache file cache_file: Option, @@ -653,6 +656,9 @@ async fn run() -> anyhow::Result<()> { if let Some(country) = cli.country { rp = rp.country(Country::from_str(&country.to_ascii_uppercase()).expect("invalid country")); } + if cli.auth { + rp = rp.authenticated(); + } let rp = rp.build()?; match cli.command { diff --git a/codegen/src/collect_history_dates.rs b/codegen/src/collect_history_dates.rs new file mode 100644 index 0000000..674c09c --- /dev/null +++ b/codegen/src/collect_history_dates.rs @@ -0,0 +1,69 @@ +use std::{collections::BTreeMap, fs::File, io::BufReader}; + +use path_macro::path; +use rustypipe::{ + client::RustyPipe, + param::{Language, LANGUAGES}, +}; +use serde::{Deserialize, Serialize}; + +use crate::util::{self, DICT_DIR}; + +type CollectedDates = BTreeMap; + +#[derive(Debug, Serialize, Deserialize)] +struct HistoryDates { + this_week: String, + last_week: String, +} + +pub async fn collect_dates() { + let json_path = path!(*DICT_DIR / "history_date_samples.json"); + let rp = RustyPipe::builder() + .storage_dir("/home/thetadev/Documents/Programmieren/Rust/rustypipe") + .build() + .unwrap(); + + let mut res: CollectedDates = BTreeMap::new(); + + for lang in LANGUAGES { + println!("{lang}"); + let history = rp.query().lang(lang).music_history().await.unwrap(); + if history.items.len() < 3 { + panic!("{lang} empty history") + } + + // The indexes have to be adapted before running + let d = HistoryDates { + this_week: history.items[0].playback_date_txt.clone().unwrap(), + last_week: history.items[18].playback_date_txt.clone().unwrap(), + }; + res.insert(lang, d); + } + + let file = File::create(json_path).unwrap(); + serde_json::to_writer_pretty(file, &res).unwrap(); +} + +pub fn write_samples_to_dict() { + let json_path = path!(*DICT_DIR / "history_date_samples.json"); + + let json_file = File::open(json_path).unwrap(); + let collected_dates: CollectedDates = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + let mut dict = util::read_dict(); + let langs = dict.keys().copied().collect::>(); + + for lang in langs { + let dict_entry = dict.entry(lang).or_default(); + let cd = &collected_dates[&lang]; + dict_entry + .timeago_nd_tokens + .insert(util::filter_datestr(&cd.this_week), "0Wl".to_owned()); + dict_entry + .timeago_nd_tokens + .insert(util::filter_datestr(&cd.last_week), "1Wl".to_owned()); + } + + util::write_dict(dict); +} diff --git a/codegen/src/gen_dictionary.rs b/codegen/src/gen_dictionary.rs index 140f519..ef01834 100644 --- a/codegen/src/gen_dictionary.rs +++ b/codegen/src/gen_dictionary.rs @@ -10,7 +10,7 @@ use crate::{ }; fn parse_tu(tu: &str) -> (u8, Option) { - static TU_PATTERN: Lazy = Lazy::new(|| Regex::new(r"^(\d*)(\w?)$").unwrap()); + static TU_PATTERN: Lazy = Lazy::new(|| Regex::new(r"^(\d*)(\w*)$").unwrap()); match TU_PATTERN.captures(tu) { Some(cap) => ( cap.get(1).unwrap().as_str().parse().unwrap_or(1), @@ -22,6 +22,8 @@ fn parse_tu(tu: &str) -> (u8, Option) { "W" => Some(TimeUnit::Week), "M" => Some(TimeUnit::Month), "Y" => Some(TimeUnit::Year), + "Wl" => Some(TimeUnit::LastWeek), + "Wd" => Some(TimeUnit::LastWeekday), "" => None, _ => panic!("invalid time unit: {tu}"), }, diff --git a/codegen/src/main.rs b/codegen/src/main.rs index b2dee3e..cff81b9 100644 --- a/codegen/src/main.rs +++ b/codegen/src/main.rs @@ -3,6 +3,7 @@ mod abtest; mod collect_album_types; mod collect_chan_prefixes; +mod collect_history_dates; mod collect_large_numbers; mod collect_playlist_dates; mod collect_video_dates; @@ -30,8 +31,10 @@ enum Commands { CollectAlbumTypes, CollectVideoDurations, CollectVideoDates, + CollectHistoryDates, CollectChanPrefixes, ParsePlaylistDates, + ParseHistoryDates, ParseLargeNumbers, ParseAlbumTypes, ParseVideoDurations, @@ -68,10 +71,14 @@ async fn main() { Commands::CollectVideoDates => { collect_video_dates::collect_video_dates(cli.concurrency).await; } + Commands::CollectHistoryDates => { + collect_history_dates::collect_dates().await; + } Commands::CollectChanPrefixes => { collect_chan_prefixes::collect_chan_prefixes().await; } Commands::ParsePlaylistDates => collect_playlist_dates::write_samples_to_dict(), + Commands::ParseHistoryDates => collect_history_dates::write_samples_to_dict(), Commands::ParseLargeNumbers => collect_large_numbers::write_samples_to_dict(), Commands::ParseAlbumTypes => collect_album_types::write_samples_to_dict(), Commands::ParseVideoDurations => collect_video_durations::parse_video_durations(), diff --git a/codegen/src/model.rs b/codegen/src/model.rs index e14b913..0405369 100644 --- a/codegen/src/model.rs +++ b/codegen/src/model.rs @@ -88,6 +88,8 @@ pub enum TimeUnit { Week, Month, Year, + LastWeek, + LastWeekday, } impl TimeUnit { @@ -100,6 +102,8 @@ impl TimeUnit { TimeUnit::Week => "W", TimeUnit::Month => "M", TimeUnit::Year => "Y", + TimeUnit::LastWeek => "Wl", + TimeUnit::LastWeekday => "Wd", } } } diff --git a/codegen/src/util.rs b/codegen/src/util.rs index 6f547d7..bd62196 100644 --- a/codegen/src/util.rs +++ b/codegen/src/util.rs @@ -77,7 +77,7 @@ pub fn filter_datestr(string: &str) -> String { .to_lowercase() .chars() .filter_map(|c| { - if c == '\u{200b}' || c.is_ascii_digit() { + if matches!(c, '\u{200b}' | '.' | ',') || c.is_ascii_digit() { None } else if c == '-' { Some(' ') diff --git a/src/client/history.rs b/src/client/history.rs index b727e50..cc0f874 100644 --- a/src/client/history.rs +++ b/src/client/history.rs @@ -7,11 +7,15 @@ use crate::{ error::{Error, ExtractionError}, model::{ paginator::{ContinuationEndpoint, Paginator}, - ChannelItem, VideoItem, + ChannelItem, HistoryItem, VideoItem, }, serializer::MapResult, }; +use self::response::YouTubeListMapper; + +use super::{MapRespOptions, QContinuation}; + #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] struct QHistorySearch<'a> { @@ -24,7 +28,7 @@ impl RustyPipeQuery { /// /// Requires authentication cookies. #[tracing::instrument(skip(self), level = "error")] - pub async fn history(&self) -> Result, Error> { + pub async fn history(&self) -> Result>, Error> { let request_body = QBrowse { browse_id: "FEhistory", }; @@ -41,6 +45,34 @@ impl RustyPipeQuery { .await } + /// Get more YouTube history items from the given continuation token + #[tracing::instrument(skip(self), level = "error")] + pub async fn history_continuation + Debug>( + &self, + ctoken: S, + visitor_data: Option<&str>, + ) -> Result>, Error> { + let ctoken = ctoken.as_ref(); + let request_body = QContinuation { + continuation: ctoken, + }; + + self.clone() + .authenticated() + .execute_request_ctx::( + ClientType::Desktop, + "history_continuation", + ctoken, + "browse", + &request_body, + MapRespOptions { + visitor_data, + ..Default::default() + }, + ) + .await + } + /// Search the YouTube playback history of the current user /// /// Requires authentication cookies. @@ -48,7 +80,7 @@ impl RustyPipeQuery { pub async fn history_search + Debug>( &self, query: S, - ) -> Result, Error> { + ) -> Result>, Error> { let query = query.as_ref(); let request_body = QHistorySearch { browse_id: "FEhistory", @@ -104,6 +136,65 @@ impl RustyPipeQuery { } } +impl MapResponse>> for response::History { + fn map_response( + self, + ctx: &MapRespCtx<'_>, + ) -> Result>>, ExtractionError> { + let items = self + .contents + .two_column_browse_results_renderer + .contents + .into_iter() + .next() + .ok_or(ExtractionError::InvalidData( + "twoColumnBrowseResultsRenderer empty".into(), + ))? + .tab_renderer + .content + .section_list_renderer + .contents; + + let mut map_res = MapResult { + warnings: items.warnings, + ..Default::default() + }; + let mut ctoken = None; + for item in items.c { + match item { + response::YouTubeListItem::ItemSectionRenderer { header, contents } => { + let mut mapper = YouTubeListMapper::::new(ctx.lang); + mapper.map_response(contents); + mapper.conv_history_items( + header.map(|h| h.item_section_header_renderer.title), + &mut map_res, + ); + } + response::YouTubeListItem::ContinuationItemRenderer { + continuation_endpoint, + } => { + if ctoken.is_none() { + ctoken = Some(continuation_endpoint.continuation_command.token); + } + } + _ => {} + } + } + + Ok(MapResult { + c: Paginator::new_ext( + None, + map_res.c, + ctoken, + ctx.visitor_data.map(str::to_owned), + crate::model::paginator::ContinuationEndpoint::Browse, + true, + ), + warnings: map_res.warnings, + }) + } +} + impl MapResponse> for response::History { fn map_response( self, @@ -131,7 +222,7 @@ impl MapResponse> for response::History { None, mapper.items, mapper.ctoken, - None, + ctx.visitor_data.map(str::to_owned), crate::model::paginator::ContinuationEndpoint::Browse, true, ), @@ -145,29 +236,47 @@ mod tests { use std::{fs::File, io::BufReader}; use path_macro::path; - use rstest::rstest; use crate::util::tests::TESTFILES; use super::*; - #[rstest] - #[case::history("history")] - #[case::subscription_feed("subscription_feed")] - fn map_history(#[case] name: &str) { - let json_path = path!(*TESTFILES / "history" / format!("{name}.json")); + #[test] + fn map_history() { + let json_path = path!(*TESTFILES / "history" / "history.json"); let json_file = File::open(json_path).unwrap(); let history: response::History = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res = history.map_response(&MapRespCtx::test("")).unwrap(); + let map_res: MapResult>> = + history.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), "deserialization/mapping warnings: {:?}", map_res.warnings ); - insta::assert_ron_snapshot!(format!("map_{name}"), map_res.c, { + insta::assert_ron_snapshot!(map_res.c, { + ".items[].playback_date" => "[date]", + }); + } + + #[test] + fn map_subscription_feed() { + let json_path = path!(*TESTFILES / "history" / "subscription_feed.json"); + let json_file = File::open(json_path).unwrap(); + + let history: response::History = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + let map_res: MapResult> = + history.map_response(&MapRespCtx::test("")).unwrap(); + + assert!( + map_res.warnings.is_empty(), + "deserialization/mapping warnings: {:?}", + map_res.warnings + ); + insta::assert_ron_snapshot!(map_res.c, { ".items[].publish_date" => "[date]", }); } diff --git a/src/client/mod.rs b/src/client/mod.rs index 47e554a..f8e7871 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -811,6 +811,16 @@ impl RustyPipeBuilder { self } + /// Enable authentication for all requests + /// + /// Depending on the client type RustyPipe uses either the authentication cookie or the + /// OAuth token to authenticate requests. + #[must_use] + pub fn authenticated(mut self) -> Self { + self.default_opts.auth = Some(true); + self + } + /// Disable authentication for all requests #[must_use] pub fn unauthenticated(mut self) -> Self { diff --git a/src/client/music_charts.rs b/src/client/music_charts.rs index baeeead..6df5b17 100644 --- a/src/client/music_charts.rs +++ b/src/client/music_charts.rs @@ -113,12 +113,12 @@ impl MapResponse for response::MusicCharts { }); let mapped_top = mapper_top.conv_items::(); - let mut mapped_trending = mapper_trending.conv_items::(); - let mut mapped_other = mapper_other.group_items(); + let mapped_trending = mapper_trending.conv_items::(); + let mapped_other = mapper_other.group_items(); let mut warnings = mapped_top.warnings; - warnings.append(&mut mapped_trending.warnings); - warnings.append(&mut mapped_other.warnings); + warnings.extend(mapped_trending.warnings); + warnings.extend(mapped_other.warnings); Ok(MapResult { c: MusicCharts { diff --git a/src/client/music_history.rs b/src/client/music_history.rs index 0ef3bea..0ebfcf0 100644 --- a/src/client/music_history.rs +++ b/src/client/music_history.rs @@ -1,3 +1,5 @@ +use std::fmt::Debug; + use crate::{ client::{ response::{self, music_item::MusicListMapper}, @@ -6,19 +8,19 @@ use crate::{ error::{Error, ExtractionError}, model::{ paginator::{ContinuationEndpoint, Paginator}, - AlbumItem, ArtistItem, MusicPlaylistItem, TrackItem, + AlbumItem, ArtistItem, HistoryItem, MusicPlaylistItem, TrackItem, }, serializer::MapResult, }; -use super::MapRespCtx; +use super::{MapRespCtx, MapRespOptions, QContinuation}; impl RustyPipeQuery { /// Get a list of tracks from YouTube Music which the current user recently played /// /// Requires authentication cookies. #[tracing::instrument(skip(self), level = "error")] - pub async fn music_history(&self) -> Result, Error> { + pub async fn music_history(&self) -> Result>, Error> { let request_body = QBrowseParams { browse_id: "FEmusic_history", params: "oggECgIIAQ%3D%3D", @@ -36,6 +38,34 @@ impl RustyPipeQuery { .await } + /// Get more YouTube Music history items from the given continuation token + #[tracing::instrument(skip(self), level = "error")] + pub async fn music_history_continuation + Debug>( + &self, + ctoken: S, + visitor_data: Option<&str>, + ) -> Result>, Error> { + let ctoken = ctoken.as_ref(); + let request_body = QContinuation { + continuation: ctoken, + }; + + self.clone() + .authenticated() + .execute_request_ctx::( + ClientType::Desktop, + "history_continuation", + ctoken, + "browse", + &request_body, + MapRespOptions { + visitor_data, + ..Default::default() + }, + ) + .await + } + /// Get a list of YouTube Music artists which the current user subscribed to /// /// Requires authentication cookies. @@ -99,11 +129,11 @@ impl RustyPipeQuery { } } -impl MapResponse> for response::MusicHistory { +impl MapResponse>> for response::MusicHistory { fn map_response( self, ctx: &MapRespCtx<'_>, - ) -> Result>, ExtractionError> { + ) -> Result>>, ExtractionError> { let contents = match self.contents { response::music_playlist::Contents::SingleColumnBrowseResultsRenderer(c) => { c.contents @@ -120,7 +150,7 @@ impl MapResponse> for response::MusicHistory { } => secondary_contents.section_list_renderer, }; - let mut mapper = MusicListMapper::new(ctx.lang); + let mut map_res = MapResult::default(); for shelf in contents.contents { let shelf = if let response::music_item::ItemSection::MusicShelfRenderer(s) = shelf { @@ -128,11 +158,11 @@ impl MapResponse> for response::MusicHistory { } else { continue; }; + let mut mapper = MusicListMapper::new(ctx.lang); mapper.map_response(shelf.contents); + mapper.conv_history_items(shelf.title, &mut map_res); } - let map_res = mapper.conv_items(); - let ctoken = contents .continuations .into_iter() @@ -144,7 +174,7 @@ impl MapResponse> for response::MusicHistory { None, map_res.c, ctoken, - None, + ctx.visitor_data.map(str::to_owned), ContinuationEndpoint::MusicBrowse, true, ), @@ -177,6 +207,8 @@ mod tests { "deserialization/mapping warnings: {:?}", map_res.warnings ); - insta::assert_ron_snapshot!(map_res.c); + insta::assert_ron_snapshot!(map_res.c, { + ".items[].playback_date" => "[date]", + }); } } diff --git a/src/client/pagination.rs b/src/client/pagination.rs index 65d8fab..07c4964 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -6,8 +6,11 @@ use crate::model::{ traits::FromYtItem, Comment, MusicItem, YouTubeItem, }; +use crate::model::{HistoryItem, TrackItem, VideoItem}; use crate::serializer::MapResult; +use self::response::YouTubeListItem; + use super::response::music_item::{map_queue_item, MusicListMapper, PlaylistPanelVideo}; use super::{ response, ClientType, MapRespCtx, MapRespOptions, MapResponse, QContinuation, RustyPipeQuery, @@ -95,38 +98,44 @@ fn map_ytm_paginator( } } +fn continuation_items(response: response::Continuation) -> MapResult> { + response + .on_response_received_actions + .and_then(|actions| { + actions + .into_iter() + .map(|action| action.append_continuation_items_action.continuation_items) + .reduce(|mut acc, mut items| { + acc.c.append(&mut items.c); + acc.warnings.append(&mut items.warnings); + acc + }) + }) + .or_else(|| { + response + .continuation_contents + .map(|contents| contents.rich_grid_continuation.contents) + }) + .unwrap_or_default() +} + impl MapResponse> for response::Continuation { fn map_response( self, ctx: &MapRespCtx<'_>, ) -> Result>, ExtractionError> { - let items = self - .on_response_received_actions - .and_then(|actions| { - actions - .into_iter() - .map(|action| action.append_continuation_items_action.continuation_items) - .reduce(|mut acc, mut items| { - acc.c.append(&mut items.c); - acc.warnings.append(&mut items.warnings); - acc - }) - }) - .or_else(|| { - self.continuation_contents - .map(|contents| contents.rich_grid_continuation.contents) - }) - .unwrap_or_default(); + let estimated_results = self.estimated_results; + let items = continuation_items(self); let mut mapper = response::YouTubeListMapper::::new(ctx.lang); mapper.map_response(items); Ok(MapResult { c: Paginator::new_ext( - self.estimated_results, + estimated_results, mapper.items, mapper.ctoken, - None, + ctx.visitor_data.map(str::to_owned), ContinuationEndpoint::Browse, ctx.authenticated, ), @@ -201,7 +210,99 @@ impl MapResponse> for response::MusicContinuation { None, map_res.c, ctoken, + ctx.visitor_data.map(str::to_owned), + ContinuationEndpoint::MusicBrowse, + ctx.authenticated, + ), + warnings: map_res.warnings, + }) + } +} + +impl MapResponse>> for response::Continuation { + fn map_response( + self, + ctx: &MapRespCtx<'_>, + ) -> Result>>, ExtractionError> { + let mut map_res = MapResult::default(); + let mut ctoken = None; + + let items = continuation_items(self); + for item in items.c { + match item { + response::YouTubeListItem::ItemSectionRenderer { header, contents } => { + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); + mapper.map_response(contents); + mapper.conv_history_items( + header.map(|h| h.item_section_header_renderer.title), + &mut map_res, + ); + } + response::YouTubeListItem::ContinuationItemRenderer { + continuation_endpoint, + } => { + if ctoken.is_none() { + ctoken = Some(continuation_endpoint.continuation_command.token); + } + } + _ => {} + } + } + + Ok(MapResult { + c: Paginator::new_ext( None, + map_res.c, + ctoken, + ctx.visitor_data.map(str::to_owned), + ContinuationEndpoint::Browse, + ctx.authenticated, + ), + warnings: map_res.warnings, + }) + } +} + +impl MapResponse>> for response::MusicContinuation { + fn map_response( + self, + ctx: &MapRespCtx<'_>, + ) -> Result>>, ExtractionError> { + let mut map_res = MapResult::default(); + let mut continuations = Vec::new(); + + let mut map_shelf = |shelf: response::music_item::MusicShelf| { + let mut mapper = MusicListMapper::new(ctx.lang); + mapper.map_response(shelf.contents); + mapper.conv_history_items(shelf.title, &mut map_res); + continuations.extend(shelf.continuations); + }; + + match self.continuation_contents { + Some(response::music_item::ContinuationContents::MusicShelfContinuation(shelf)) => { + map_shelf(shelf); + } + Some(response::music_item::ContinuationContents::SectionListContinuation(contents)) => { + for c in contents.contents { + if let response::music_item::ItemSection::MusicShelfRenderer(shelf) = c { + map_shelf(shelf); + } + } + } + _ => {} + } + + let ctoken = continuations + .into_iter() + .next() + .map(|cont| cont.next_continuation_data.continuation); + + Ok(MapResult { + c: Paginator::new_ext( + None, + map_res.c, + ctoken, + ctx.visitor_data.map(str::to_owned), ContinuationEndpoint::MusicBrowse, ctx.authenticated, ), @@ -213,11 +314,6 @@ impl MapResponse> for response::MusicContinuation { impl Paginator { /// Get the next page from the paginator (or `None` if the paginator is exhausted) pub async fn next>(&self, query: Q) -> Result, Error> { - // let mut q = query.as_ref().clone(); - // if self.authenticated { - // q = q.authenticated(); - // } - Ok(match &self.ctoken { Some(ctoken) => { let q = if self.authenticated { @@ -319,6 +415,36 @@ impl Paginator { } } +impl Paginator> { + /// Get the next page from the paginator (or `None` if the paginator is exhausted) + pub async fn next>(&self, query: Q) -> Result, Error> { + Ok(match &self.ctoken { + Some(ctoken) => Some( + query + .as_ref() + .history_continuation(ctoken, self.visitor_data.as_deref()) + .await?, + ), + _ => None, + }) + } +} + +impl Paginator> { + /// Get the next page from the paginator (or `None` if the paginator is exhausted) + pub async fn next>(&self, query: Q) -> Result, Error> { + Ok(match &self.ctoken { + Some(ctoken) => Some( + query + .as_ref() + .music_history_continuation(ctoken, self.visitor_data.as_deref()) + .await?, + ), + _ => None, + }) + } +} + macro_rules! paginator { ($entity_type:ty) => { impl Paginator<$entity_type> { @@ -400,6 +526,8 @@ macro_rules! paginator { } paginator!(Comment); +paginator!(HistoryItem); +paginator!(HistoryItem); #[cfg(test)] mod tests { diff --git a/src/client/response/mod.rs b/src/client/response/mod.rs index 364ae56..e032444 100644 --- a/src/client/response/mod.rs +++ b/src/client/response/mod.rs @@ -209,6 +209,14 @@ pub(crate) struct TextBox { pub text: String, } +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct SimpleHeaderRenderer { + #[serde_as(as = "Text")] + pub title: String, +} + #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] diff --git a/src/client/response/music_item.rs b/src/client/response/music_item.rs index b41af07..1138bac 100644 --- a/src/client/response/music_item.rs +++ b/src/client/response/music_item.rs @@ -4,7 +4,7 @@ use serde_with::{rust::deserialize_ignore_any, serde_as, DefaultOnError, VecSkip use crate::{ model::{ self, traits::FromYtItem, AlbumId, AlbumItem, AlbumType, ArtistId, ArtistItem, ChannelId, - MusicItem, MusicItemType, MusicPlaylistItem, TrackItem, UserItem, + HistoryItem, MusicItem, MusicItemType, MusicPlaylistItem, TrackItem, UserItem, }, param::Language, serializer::{ @@ -18,7 +18,7 @@ use super::{ url_endpoint::{ BrowseEndpointWrap, MusicPage, MusicPageType, MusicVideoType, NavigationEndpoint, PageType, }, - ContentsRenderer, MusicContinuationData, Thumbnails, ThumbnailsWrap, + ContentsRenderer, MusicContinuationData, SimpleHeaderRenderer, Thumbnails, ThumbnailsWrap, }; #[serde_as] @@ -39,6 +39,8 @@ pub(crate) enum ItemSection { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct MusicShelf { + #[serde_as(as = "Option")] + pub title: Option, /// Playlist ID (only for playlists) pub playlist_id: Option, pub contents: MapResult>, @@ -396,15 +398,7 @@ pub(crate) struct GridRenderer { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct GridHeader { - pub grid_header_renderer: GridHeaderRenderer, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct GridHeaderRenderer { - #[serde_as(as = "Text")] - pub title: String, + pub grid_header_renderer: SimpleHeaderRenderer, } #[derive(Debug, Deserialize)] @@ -419,14 +413,6 @@ pub(crate) struct SimpleHeader { pub music_header_renderer: SimpleHeaderRenderer, } -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct SimpleHeaderRenderer { - #[serde_as(as = "Text")] - pub title: String, -} - #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) enum TrackBadge { @@ -1257,6 +1243,26 @@ impl MusicListMapper { warnings: self.warnings, } } + + pub fn conv_history_items( + self, + date_txt: Option, + res: &mut MapResult>>, + ) { + res.warnings.extend(self.warnings); + res.c.extend( + self.items + .into_iter() + .filter_map(TrackItem::from_ytm_item) + .map(|item| HistoryItem { + item, + playback_date: date_txt.as_deref().and_then(|s| { + timeago::parse_textual_date_to_d(self.lang, s, &mut res.warnings) + }), + playback_date_txt: date_txt.clone(), + }), + ); + } } /// Map TextComponents containing artist names to a list of artists and a 'Various Artists' flag diff --git a/src/client/response/video_item.rs b/src/client/response/video_item.rs index 874e3a1..1541728 100644 --- a/src/client/response/video_item.rs +++ b/src/client/response/video_item.rs @@ -4,9 +4,12 @@ use serde_with::{ }; use time::OffsetDateTime; -use super::{ChannelBadge, ContentImage, ContinuationEndpoint, PhMetadataView, Thumbnails}; +use super::{ + ChannelBadge, ContentImage, ContinuationEndpoint, PhMetadataView, SimpleHeaderRenderer, + Thumbnails, +}; use crate::{ - model::{Channel, ChannelItem, ChannelTag, PlaylistItem, VideoItem, YouTubeItem}, + model::{Channel, ChannelItem, ChannelTag, HistoryItem, PlaylistItem, VideoItem, YouTubeItem}, param::Language, serializer::{ text::{AttributedText, Text, TextComponent}, @@ -63,6 +66,7 @@ pub(crate) enum YouTubeListItem { /// GridRenderer: contains videos on channel page #[serde(alias = "expandedShelfContentsRenderer", alias = "gridRenderer")] ItemSectionRenderer { + header: Option, #[serde(alias = "items")] contents: MapResult>, }, @@ -294,6 +298,12 @@ pub(crate) struct YouTubeListRenderer { pub contents: MapResult>, } +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ItemSectionHeader { + pub item_section_header_renderer: SimpleHeaderRenderer, +} + #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] @@ -833,7 +843,7 @@ impl YouTubeListMapper { YouTubeListItem::RichItemRenderer { content } => { self.map_item(*content); } - YouTubeListItem::ItemSectionRenderer { mut contents } => { + YouTubeListItem::ItemSectionRenderer { mut contents, .. } => { self.warnings.append(&mut contents.warnings); contents.c.into_iter().for_each(|it| self.map_item(it)); } @@ -881,7 +891,7 @@ impl YouTubeListMapper { YouTubeListItem::RichItemRenderer { content } => { self.map_item(*content); } - YouTubeListItem::ItemSectionRenderer { mut contents } => { + YouTubeListItem::ItemSectionRenderer { mut contents, .. } => { self.warnings.append(&mut contents.warnings); contents.c.into_iter().for_each(|it| self.map_item(it)); } @@ -893,6 +903,23 @@ impl YouTubeListMapper { self.warnings.append(&mut res.warnings); res.c.into_iter().for_each(|item| self.map_item(item)); } + + pub(crate) fn conv_history_items( + self, + date_txt: Option, + res: &mut MapResult>>, + ) { + res.warnings.extend(self.warnings); + res.c.extend(self.items.into_iter().map(|item| { + HistoryItem { + item, + playback_date: date_txt.as_deref().and_then(|s| { + timeago::parse_textual_date_to_d(self.lang, s, &mut res.warnings) + }), + playback_date_txt: date_txt.clone(), + } + })); + } } impl YouTubeListMapper { @@ -916,7 +943,7 @@ impl YouTubeListMapper { YouTubeListItem::RichItemRenderer { content } => { self.map_item(*content); } - YouTubeListItem::ItemSectionRenderer { mut contents } => { + YouTubeListItem::ItemSectionRenderer { mut contents, .. } => { self.warnings.append(&mut contents.warnings); contents.c.into_iter().for_each(|it| self.map_item(it)); } diff --git a/src/client/snapshots/rustypipe__client__history__tests__map_history.snap b/src/client/snapshots/rustypipe__client__history__tests__map_history.snap index fbb9397..faa1964 100644 --- a/src/client/snapshots/rustypipe__client__history__tests__map_history.snap +++ b/src/client/snapshots/rustypipe__client__history__tests__map_history.snap @@ -5,240 +5,260 @@ expression: map_res.c Paginator( count: None, items: [ - VideoItem( - id: "mPshy_DWxfo", - name: "trying TWEENING everything! (FAILED) PLEASE GIVE ME SOME ADVICEEE", - duration: Some(6), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFACKgBEF5IWvKriqkDMwgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAHwAQH4Af4JgALOBYoCDAgAEAEYfyAyKEAwDw==&rs=AOn4CLBfBVk2IGdGGGmpqOir2RbC8cY1xw", - width: 168, - height: 94, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFACMQBEG5IWvKriqkDMwgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAHwAQH4Af4JgALOBYoCDAgAEAEYfyAyKEAwDw==&rs=AOn4CLDnRYKBX4qMlA54i-q3W7w1WvGApg", - width: 196, - height: 110, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFBCPYBEIoBSFryq4qpAzMIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB8AEB-AH-CYACzgWKAgwIABABGH8gMihAMA8=&rs=AOn4CLDza_6r3345q6SBZvGm292mOobNPg", - width: 246, - height: 138, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFBCNACELwBSFryq4qpAzMIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB8AEB-AH-CYACzgWKAgwIABABGH8gMihAMA8=&rs=AOn4CLDySwxxAy2hfw2YcAKs6ERLhzPTkQ", - width: 336, - height: 188, - ), - ], - channel: Some(ChannelTag( - id: "UCM7OXM6t80a3e3tzQDWxwEA", - name: "Ari", - avatar: [ + HistoryItem( + item: VideoItem( + id: "mPshy_DWxfo", + name: "trying TWEENING everything! (FAILED) PLEASE GIVE ME SOME ADVICEEE", + duration: Some(6), + thumbnail: [ Thumbnail( - url: "https://yt3.ggpht.com/TpeTKFR6QWu4Cjam4PcpQwCPMnammWnSg93CdBvgFFLhkGm4nbQkUFKaAIYJ1ChUy9IgmJIQMRg=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, + url: "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFACKgBEF5IWvKriqkDMwgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAHwAQH4Af4JgALOBYoCDAgAEAEYfyAyKEAwDw==&rs=AOn4CLBfBVk2IGdGGGmpqOir2RbC8cY1xw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFACMQBEG5IWvKriqkDMwgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAHwAQH4Af4JgALOBYoCDAgAEAEYfyAyKEAwDw==&rs=AOn4CLDnRYKBX4qMlA54i-q3W7w1WvGApg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFBCPYBEIoBSFryq4qpAzMIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB8AEB-AH-CYACzgWKAgwIABABGH8gMihAMA8=&rs=AOn4CLDza_6r3345q6SBZvGm292mOobNPg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/mPshy_DWxfo/hqdefault.jpg?sqp=-oaymwFBCNACELwBSFryq4qpAzMIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB8AEB-AH-CYACzgWKAgwIABABGH8gMihAMA8=&rs=AOn4CLDySwxxAy2hfw2YcAKs6ERLhzPTkQ", + width: 336, + height: 188, ), ], - verification: none, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: None, - view_count: Some(15), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: None, + channel: Some(ChannelTag( + id: "UCM7OXM6t80a3e3tzQDWxwEA", + name: "Ari", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/TpeTKFR6QWu4Cjam4PcpQwCPMnammWnSg93CdBvgFFLhkGm4nbQkUFKaAIYJ1ChUy9IgmJIQMRg=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: none, + subscriber_count: None, + )), + publish_date: None, + publish_date_txt: None, + view_count: Some(15), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + playback_date: "[date]", + playback_date_txt: Some("Yesterday"), ), - VideoItem( - id: "SRWatgS077k", - name: "My Time at \"Camp Operetta\"", - duration: Some(578), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAN8mzi3fbrJgqJiEeqpMZXRa7AuQ", - width: 168, - height: 94, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLBgxonLRY-4QQ1-jR3Xen-fAZcHHQ", - width: 196, - height: 110, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLBOk1abznwO5Bm0_m5YXMFkU0JSog", - width: 246, - height: 138, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLCQt7cAJuE-W8t1TnQnSe5EVbsw8A", - width: 336, - height: 188, - ), - ], - channel: Some(ChannelTag( - id: "UCGwu0nbY2wSkW8N-cghnLpA", - name: "JaidenAnimations", - avatar: [ + HistoryItem( + item: VideoItem( + id: "SRWatgS077k", + name: "My Time at \"Camp Operetta\"", + duration: Some(578), + thumbnail: [ Thumbnail( - url: "https://yt3.ggpht.com/gopbHeiDtEB932rIFqLlR4D_hFtd-BcdGrQgGeyDpkD3guskkbT74DsJYPGo3x7MqkyqtgL-=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, + url: "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAN8mzi3fbrJgqJiEeqpMZXRa7AuQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLBgxonLRY-4QQ1-jR3Xen-fAZcHHQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLBOk1abznwO5Bm0_m5YXMFkU0JSog", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/SRWatgS077k/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLCQt7cAJuE-W8t1TnQnSe5EVbsw8A", + width: 336, + height: 188, ), ], - verification: verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: None, - view_count: Some(23907328), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("What can I say other than that was one heck of a time\n\nScribble Showdown Tickets: https://www.scribbleshowdown.com/\n\n\n♥ The Team ♥\nDenny: https://www.instagram.com/90percentknuckles/\nAtrox:..."), + channel: Some(ChannelTag( + id: "UCGwu0nbY2wSkW8N-cghnLpA", + name: "JaidenAnimations", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/gopbHeiDtEB932rIFqLlR4D_hFtd-BcdGrQgGeyDpkD3guskkbT74DsJYPGo3x7MqkyqtgL-=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: None, + publish_date_txt: None, + view_count: Some(23907328), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("What can I say other than that was one heck of a time\n\nScribble Showdown Tickets: https://www.scribbleshowdown.com/\n\n\n♥ The Team ♥\nDenny: https://www.instagram.com/90percentknuckles/\nAtrox:..."), + ), + playback_date: "[date]", + playback_date_txt: Some("Yesterday"), ), - VideoItem( - id: "kTxlkDoqArA", - name: "Wie Cartoons Früher gemacht wurden!", - duration: Some(283), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLBYdDA06ekKDlhB0PSlTwf6Ih1cMg", - width: 168, - height: 94, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAgu_Ad1pFCsa3jINV1ocaVOQWOXg", - width: 196, - height: 110, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLDkOVQbyZlrZ_jbdkSzUd5RiobObA", - width: 246, - height: 138, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLA5cnUH03I2lg1-FOJ01njh8UOJEw", - width: 336, - height: 188, - ), - ], - channel: Some(ChannelTag( - id: "UCxTHCMaxURhapisCMBv8y0A", - name: "Plankton", - avatar: [ + HistoryItem( + item: VideoItem( + id: "kTxlkDoqArA", + name: "Wie Cartoons Früher gemacht wurden!", + duration: Some(283), + thumbnail: [ Thumbnail( - url: "https://yt3.ggpht.com/Cdlsy3IXgis5hNYRwvohPB9AIxH8tNdEo9CwxXK1i3QEUO7YN3p4YJ_cd5ruGsmNhvoX7803=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, + url: "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLBYdDA06ekKDlhB0PSlTwf6Ih1cMg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAgu_Ad1pFCsa3jINV1ocaVOQWOXg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLDkOVQbyZlrZ_jbdkSzUd5RiobObA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kTxlkDoqArA/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLA5cnUH03I2lg1-FOJ01njh8UOJEw", + width: 336, + height: 188, ), ], - verification: verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: None, - view_count: Some(390010), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Folgt mir auf Instagram!\nhttps://instagram.com/plankton.gif \n\nÜBER DEN KANAL:\nRede viel wenn der Tag lang ist"), + channel: Some(ChannelTag( + id: "UCxTHCMaxURhapisCMBv8y0A", + name: "Plankton", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Cdlsy3IXgis5hNYRwvohPB9AIxH8tNdEo9CwxXK1i3QEUO7YN3p4YJ_cd5ruGsmNhvoX7803=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: None, + publish_date_txt: None, + view_count: Some(390010), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Folgt mir auf Instagram!\nhttps://instagram.com/plankton.gif \n\nÜBER DEN KANAL:\nRede viel wenn der Tag lang ist"), + ), + playback_date: "[date]", + playback_date_txt: Some("Yesterday"), ), - VideoItem( - id: "oIVSKQ8NMqk", - name: "What I learned on highschool swim", - duration: Some(620), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAeTbOz6FlrH1x3jA4AwYcTGmUwxg", - width: 168, - height: 94, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAEzpr1xBI-8jJwZz72NHj9VKyefA", - width: 196, - height: 110, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLBNzC8nvKtO7fmqzavWemou7QOLOg", - width: 246, - height: 138, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLA1_VgkVeq4ELmrQ8a4vhtJhg6TMA", - width: 336, - height: 188, - ), - ], - channel: Some(ChannelTag( - id: "UCsKVP_4zQ877TEiH_Ih5yDQ", - name: "illymation", - avatar: [ + HistoryItem( + item: VideoItem( + id: "oIVSKQ8NMqk", + name: "What I learned on highschool swim", + duration: Some(620), + thumbnail: [ Thumbnail( - url: "https://yt3.ggpht.com/ytc/AIdro_n3doafn2qRRawkYet_KQdH2Jl1ugSQnjnd0Ham12C9MYI=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, + url: "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAeTbOz6FlrH1x3jA4AwYcTGmUwxg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAEzpr1xBI-8jJwZz72NHj9VKyefA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLBNzC8nvKtO7fmqzavWemou7QOLOg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/oIVSKQ8NMqk/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLA1_VgkVeq4ELmrQ8a4vhtJhg6TMA", + width: 336, + height: 188, ), ], - verification: verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: None, - view_count: Some(6491367), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("okay, so I wasn\'t the BEST ... but I tried my best!\n▶ Black Friday Merch sale: https://www.hereforthechaos.com\n▶ SNEAK PEEKS ON PATREON! http://patreon.com/illymation\n\n▶ BG ARTIST: Ingrid..."), + channel: Some(ChannelTag( + id: "UCsKVP_4zQ877TEiH_Ih5yDQ", + name: "illymation", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_n3doafn2qRRawkYet_KQdH2Jl1ugSQnjnd0Ham12C9MYI=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: None, + publish_date_txt: None, + view_count: Some(6491367), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("okay, so I wasn\'t the BEST ... but I tried my best!\n▶ Black Friday Merch sale: https://www.hereforthechaos.com\n▶ SNEAK PEEKS ON PATREON! http://patreon.com/illymation\n\n▶ BG ARTIST: Ingrid..."), + ), + playback_date: "[date]", + playback_date_txt: Some("Yesterday"), ), - VideoItem( - id: "X30eFeqrHJo", - name: "My Last Week of University!", - duration: Some(659), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAc6-vKGjlwODu5rDSHK2tz4sRzYQ", - width: 168, - height: 94, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAE7jwC0MudkKK-I1nyGvCheljvtQ", - width: 196, - height: 110, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLAfIZ4htcNHP3RWahpR4XM7U-UTFQ", - width: 246, - height: 138, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLDYMLObTeyxHK_PewK4Rwk3V-2KGw", - width: 336, - height: 188, - ), - ], - channel: Some(ChannelTag( - id: "UC6a8lp6vaCMhUVXPyynhjUA", - name: "Ruby Granger", - avatar: [ + HistoryItem( + item: VideoItem( + id: "X30eFeqrHJo", + name: "My Last Week of University!", + duration: Some(659), + thumbnail: [ Thumbnail( - url: "https://yt3.ggpht.com/u9qrR3ceVkt7yen48Rd1WWV_w-OdE5iejCNI2y-PyG0tpd7xlqWFDahsaZa02cMk7O-0WkCL=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, + url: "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAc6-vKGjlwODu5rDSHK2tz4sRzYQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAE7jwC0MudkKK-I1nyGvCheljvtQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLAfIZ4htcNHP3RWahpR4XM7U-UTFQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/X30eFeqrHJo/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLDYMLObTeyxHK_PewK4Rwk3V-2KGw", + width: 336, + height: 188, ), ], - verification: verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: None, - view_count: Some(132844), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("This first year has been somewhat hectic, and certainly was tricky in the first semester; however, I have enjoyed it immensely and, as I said, am sad that this term has now ended. I am returning..."), + channel: Some(ChannelTag( + id: "UC6a8lp6vaCMhUVXPyynhjUA", + name: "Ruby Granger", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/u9qrR3ceVkt7yen48Rd1WWV_w-OdE5iejCNI2y-PyG0tpd7xlqWFDahsaZa02cMk7O-0WkCL=s68-c-k-c0x00ffffff-no-rj", + width: 68, + height: 68, + ), + ], + verification: verified, + subscriber_count: None, + )), + publish_date: None, + publish_date_txt: None, + view_count: Some(132844), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("This first year has been somewhat hectic, and certainly was tricky in the first semester; however, I have enjoyed it immensely and, as I said, am sad that this term has now ended. I am returning..."), + ), + playback_date: "[date]", + playback_date_txt: Some("Yesterday"), ), ], ctoken: Some("4qmFsgJMEglGRWhpc3RvcnkaKENBSjZHbmx5WVRWb2QyOU9RMmR6U1RSaGNXMTFkMWxSTms4M05WcFKaAhRicm93c2UtZmVlZEZFaGlzdG9yeQ%3D%3D"), diff --git a/src/client/snapshots/rustypipe__client__music_history__tests__map_history.snap b/src/client/snapshots/rustypipe__client__music_history__tests__map_history.snap index 8ffb946..d025f4a 100644 --- a/src/client/snapshots/rustypipe__client__music_history__tests__map_history.snap +++ b/src/client/snapshots/rustypipe__client__music_history__tests__map_history.snap @@ -5,741 +5,833 @@ expression: map_res.c Paginator( count: Some(23), items: [ - TrackItem( - id: "-gBtW4GhF3Y", - name: "O Du fröhliche", - duration: Some(214), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), - name: "Helene Fischer", - ), - ], - artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), - album: Some(AlbumId( - id: "MPREb_IBxM8XVyrqh", - name: "Weihnachten", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "-gBtW4GhF3Y", + name: "O Du fröhliche", + duration: Some(214), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + name: "Helene Fischer", + ), + ], + artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + album: Some(AlbumId( + id: "MPREb_IBxM8XVyrqh", + name: "Weihnachten", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Today"), ), - TrackItem( - id: "nsV9bCW3sLM", - name: "Stille Nacht", - duration: Some(264), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), - name: "Helene Fischer", - ), - ], - artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), - album: Some(AlbumId( - id: "MPREb_IBxM8XVyrqh", - name: "Weihnachten", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "nsV9bCW3sLM", + name: "Stille Nacht", + duration: Some(264), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + name: "Helene Fischer", + ), + ], + artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + album: Some(AlbumId( + id: "MPREb_IBxM8XVyrqh", + name: "Weihnachten", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Today"), ), - TrackItem( - id: "3-oqGxnJTrA", - name: "Ihr Kinderlein kommet", - duration: Some(195), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), - name: "Helene Fischer", - ), - ], - artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), - album: Some(AlbumId( - id: "MPREb_IBxM8XVyrqh", - name: "Weihnachten", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "3-oqGxnJTrA", + name: "Ihr Kinderlein kommet", + duration: Some(195), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + name: "Helene Fischer", + ), + ], + artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + album: Some(AlbumId( + id: "MPREb_IBxM8XVyrqh", + name: "Weihnachten", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Today"), ), - TrackItem( - id: "xBby89eXe1g", - name: "Tochter Zion", - duration: Some(186), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), - name: "Helene Fischer", - ), - ], - artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), - album: Some(AlbumId( - id: "MPREb_IBxM8XVyrqh", - name: "Weihnachten", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "xBby89eXe1g", + name: "Tochter Zion", + duration: Some(186), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + name: "Helene Fischer", + ), + ], + artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + album: Some(AlbumId( + id: "MPREb_IBxM8XVyrqh", + name: "Weihnachten", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Today"), ), - TrackItem( - id: "ikyIeWgP6i4", - name: "Adeste Fideles", - duration: Some(236), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), - name: "Helene Fischer", - ), - ], - artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), - album: Some(AlbumId( - id: "MPREb_IBxM8XVyrqh", - name: "Weihnachten", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "ikyIeWgP6i4", + name: "Adeste Fideles", + duration: Some(236), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/xH15w12BHaphTUcf1ivgy4Q6sZh1m3ZSklFqL6O9H5hixdtpzHHEDF48uSy3VDJJjaqf-SQurQmcPnhaCw=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + name: "Helene Fischer", + ), + ], + artist_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw"), + album: Some(AlbumId( + id: "MPREb_IBxM8XVyrqh", + name: "Weihnachten", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Today"), ), - TrackItem( - id: "u54XYn1nCZ8", - name: "Das Polizeiboot", - duration: Some(187), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/-IzX3AN3btJwzM7YzUtDRu8-40B_qNcQlckN26aHVFNopjA4wiRGLuDfiTPrSx8X-ULA-GdkcbGU57M=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/-IzX3AN3btJwzM7YzUtDRu8-40B_qNcQlckN26aHVFNopjA4wiRGLuDfiTPrSx8X-ULA-GdkcbGU57M=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UC_WzOax81EduoCiIrWQCrTw"), - name: "SpongeBob Schwammkopf", - ), - ], - artist_id: Some("UC_WzOax81EduoCiIrWQCrTw"), - album: Some(AlbumId( - id: "MPREb_M2trHaS2Z39", - name: "Quallendisco", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "u54XYn1nCZ8", + name: "Das Polizeiboot", + duration: Some(187), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/-IzX3AN3btJwzM7YzUtDRu8-40B_qNcQlckN26aHVFNopjA4wiRGLuDfiTPrSx8X-ULA-GdkcbGU57M=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/-IzX3AN3btJwzM7YzUtDRu8-40B_qNcQlckN26aHVFNopjA4wiRGLuDfiTPrSx8X-ULA-GdkcbGU57M=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UC_WzOax81EduoCiIrWQCrTw"), + name: "SpongeBob Schwammkopf", + ), + ], + artist_id: Some("UC_WzOax81EduoCiIrWQCrTw"), + album: Some(AlbumId( + id: "MPREb_M2trHaS2Z39", + name: "Quallendisco", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Today"), ), - TrackItem( - id: "acOEjiOH2v8", - name: "We Made It", - duration: Some(212), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/kpuoWhUjjFS0CR_Bz7OY4JSHXIYzbYTa9FWalcXudTAETr1EioLtSa5ua5vNcla0_aAbVjUe0zv-OQxWsw=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/kpuoWhUjjFS0CR_Bz7OY4JSHXIYzbYTa9FWalcXudTAETr1EioLtSa5ua5vNcla0_aAbVjUe0zv-OQxWsw=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCi3H2bHgaTFwrfwx_GOJyZw"), - name: "t-low", - ), - ArtistId( - id: Some("UCrWB2JlLx3-q8CUUiVXgedg"), - name: "Miksu / Macloud", - ), - ], - artist_id: Some("UCi3H2bHgaTFwrfwx_GOJyZw"), - album: Some(AlbumId( - id: "MPREb_fkur1VEwyKR", - name: "Percocet Party", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "acOEjiOH2v8", + name: "We Made It", + duration: Some(212), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/kpuoWhUjjFS0CR_Bz7OY4JSHXIYzbYTa9FWalcXudTAETr1EioLtSa5ua5vNcla0_aAbVjUe0zv-OQxWsw=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/kpuoWhUjjFS0CR_Bz7OY4JSHXIYzbYTa9FWalcXudTAETr1EioLtSa5ua5vNcla0_aAbVjUe0zv-OQxWsw=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCi3H2bHgaTFwrfwx_GOJyZw"), + name: "t-low", + ), + ArtistId( + id: Some("UCrWB2JlLx3-q8CUUiVXgedg"), + name: "Miksu / Macloud", + ), + ], + artist_id: Some("UCi3H2bHgaTFwrfwx_GOJyZw"), + album: Some(AlbumId( + id: "MPREb_fkur1VEwyKR", + name: "Percocet Party", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Today"), ), - TrackItem( - id: "Xg5dn6o-mME", - name: "Misfit Toys", - duration: Some(190), - cover: [ - Thumbnail( - url: "https://i.ytimg.com/vi/Xg5dn6o-mME/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n1aZ8j7_o-eQbVtcbLCm2KSK2I6A", - width: 400, - height: 225, - ), - ], - artists: [ - ArtistId( - id: Some("UCr4IKNkUPPmkwE_LAjtho0g"), - name: "Pusha T", - ), - ], - artist_id: Some("UCr4IKNkUPPmkwE_LAjtho0g"), - album: None, - view_count: None, - track_type: episode, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "Xg5dn6o-mME", + name: "Misfit Toys", + duration: Some(190), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Xg5dn6o-mME/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n1aZ8j7_o-eQbVtcbLCm2KSK2I6A", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: Some("UCr4IKNkUPPmkwE_LAjtho0g"), + name: "Pusha T", + ), + ], + artist_id: Some("UCr4IKNkUPPmkwE_LAjtho0g"), + album: None, + view_count: None, + track_type: episode, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Today"), ), - TrackItem( - id: "Smy4qcyPMEc", - name: "Remember Me (Intro)", - duration: Some(101), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCGr1UQ4CwzRMmYoQfHQQWTg"), - name: "d4vd", - ), - ], - artist_id: Some("UCGr1UQ4CwzRMmYoQfHQQWTg"), - album: Some(AlbumId( - id: "MPREb_muqZ7sOFHBp", - name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "Smy4qcyPMEc", + name: "Remember Me (Intro)", + duration: Some(101), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCGr1UQ4CwzRMmYoQfHQQWTg"), + name: "d4vd", + ), + ], + artist_id: Some("UCGr1UQ4CwzRMmYoQfHQQWTg"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "cmEIneYW2yk", - name: "Paint The Town Blue (from the series Arcane League of Legends)", - duration: Some(115), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCn3fPGV_gVYAmpgb1APyQug"), - name: "Ashnikko", - ), - ], - artist_id: Some("UCn3fPGV_gVYAmpgb1APyQug"), - album: Some(AlbumId( - id: "MPREb_muqZ7sOFHBp", - name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "cmEIneYW2yk", + name: "Paint The Town Blue (from the series Arcane League of Legends)", + duration: Some(115), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCn3fPGV_gVYAmpgb1APyQug"), + name: "Ashnikko", + ), + ], + artist_id: Some("UCn3fPGV_gVYAmpgb1APyQug"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "HFVM4QE1qBA", - name: "To Ashes and Blood (from the series Arcane League of Legends)", - duration: Some(246), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCqishLHg7u5voH0sEmR-l6Q"), - name: "Woodkid", - ), - ], - artist_id: Some("UCqishLHg7u5voH0sEmR-l6Q"), - album: Some(AlbumId( - id: "MPREb_muqZ7sOFHBp", - name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "HFVM4QE1qBA", + name: "To Ashes and Blood (from the series Arcane League of Legends)", + duration: Some(246), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCqishLHg7u5voH0sEmR-l6Q"), + name: "Woodkid", + ), + ], + artist_id: Some("UCqishLHg7u5voH0sEmR-l6Q"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "O0qHqHt3JiY", - name: "Hellfire (from the series Arcane League of Legends)", - duration: Some(165), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCqRcnDXGwIt_mCXNuzKVqqg"), - name: "Fever 333", - ), - ], - artist_id: Some("UCqRcnDXGwIt_mCXNuzKVqqg"), - album: Some(AlbumId( - id: "MPREb_muqZ7sOFHBp", - name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "O0qHqHt3JiY", + name: "Hellfire (from the series Arcane League of Legends)", + duration: Some(165), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCqRcnDXGwIt_mCXNuzKVqqg"), + name: "Fever 333", + ), + ], + artist_id: Some("UCqRcnDXGwIt_mCXNuzKVqqg"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "rfDBTQNdj-M", - name: "Renegade (We Never Run) (from the series Arcane League of Legends) (feat. Jarina De Marco)", - duration: Some(162), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCm9GDfNgJCv-FJkWTIaiFIg"), - name: "Raja Kumari", - ), - ArtistId( - id: Some("UCfW0_9uspt55KDtOZNPcSFg"), - name: "Stefflon Don", - ), - ], - artist_id: Some("UCm9GDfNgJCv-FJkWTIaiFIg"), - album: Some(AlbumId( - id: "MPREb_muqZ7sOFHBp", - name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "rfDBTQNdj-M", + name: "Renegade (We Never Run) (from the series Arcane League of Legends) (feat. Jarina De Marco)", + duration: Some(162), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCm9GDfNgJCv-FJkWTIaiFIg"), + name: "Raja Kumari", + ), + ArtistId( + id: Some("UCfW0_9uspt55KDtOZNPcSFg"), + name: "Stefflon Don", + ), + ], + artist_id: Some("UCm9GDfNgJCv-FJkWTIaiFIg"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "_M409k9cOcg", - name: "특 S-Class", - duration: Some(196), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/MiN4KEyFzPNKECd0md-d4FtMpzbpVChSp_lWmh4w14CTfcLix05BOgS3TD5nQlrllMvp2_6T_e3lIJaD=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/MiN4KEyFzPNKECd0md-d4FtMpzbpVChSp_lWmh4w14CTfcLix05BOgS3TD5nQlrllMvp2_6T_e3lIJaD=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCIMmuidNJdncfMEelOU08Fg"), - name: "Stray Kids", - ), - ], - artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), - album: Some(AlbumId( - id: "MPREb_zR25p24PqIC", - name: "5-STAR", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "_M409k9cOcg", + name: "특 S-Class", + duration: Some(196), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/MiN4KEyFzPNKECd0md-d4FtMpzbpVChSp_lWmh4w14CTfcLix05BOgS3TD5nQlrllMvp2_6T_e3lIJaD=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/MiN4KEyFzPNKECd0md-d4FtMpzbpVChSp_lWmh4w14CTfcLix05BOgS3TD5nQlrllMvp2_6T_e3lIJaD=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: Some(AlbumId( + id: "MPREb_zR25p24PqIC", + name: "5-STAR", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "MpG_ft84IoE", - name: "Sucker (from the series Arcane League of Legends)", - duration: Some(225), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UC5xpuW4UI520aDhKXGaJYgQ"), - name: "Marcus King", - ), - ], - artist_id: Some("UC5xpuW4UI520aDhKXGaJYgQ"), - album: Some(AlbumId( - id: "MPREb_muqZ7sOFHBp", - name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "MpG_ft84IoE", + name: "Sucker (from the series Arcane League of Legends)", + duration: Some(225), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UC5xpuW4UI520aDhKXGaJYgQ"), + name: "Marcus King", + ), + ], + artist_id: Some("UC5xpuW4UI520aDhKXGaJYgQ"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "g7W7MisCKWk", - name: "I Can\'t Hear It Now (from the series Arcane League of Legends)", - duration: Some(162), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCw5G4AVjJ_YI9BOTjj-v1iw"), - name: "Freya Ridings", - ), - ], - artist_id: Some("UCw5G4AVjJ_YI9BOTjj-v1iw"), - album: Some(AlbumId( - id: "MPREb_muqZ7sOFHBp", - name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "g7W7MisCKWk", + name: "I Can\'t Hear It Now (from the series Arcane League of Legends)", + duration: Some(162), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCw5G4AVjJ_YI9BOTjj-v1iw"), + name: "Freya Ridings", + ), + ], + artist_id: Some("UCw5G4AVjJ_YI9BOTjj-v1iw"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "B-XivnZunVM", - name: "Heavy Is The Crown (Original Score)", - duration: Some(102), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCjZCpUyBTuYRQhkYKZR_mdg"), - name: "Mike Shinoda", - ), - ArtistId( - id: Some("UCCDcGPkq3rOACsM5_j5QiHg"), - name: "Emily Armstrong", - ), - ], - artist_id: Some("UCjZCpUyBTuYRQhkYKZR_mdg"), - album: Some(AlbumId( - id: "MPREb_muqZ7sOFHBp", - name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "B-XivnZunVM", + name: "Heavy Is The Crown (Original Score)", + duration: Some(102), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/AYcl_X1V-eF8utaaVUlgmY-ibcQwE2BsY0RW6TdbZ5qAK8UNUfA5xaNiERyCHv2PpsXNh_L3hPZkmdM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCjZCpUyBTuYRQhkYKZR_mdg"), + name: "Mike Shinoda", + ), + ArtistId( + id: Some("UCCDcGPkq3rOACsM5_j5QiHg"), + name: "Emily Armstrong", + ), + ], + artist_id: Some("UCjZCpUyBTuYRQhkYKZR_mdg"), + album: Some(AlbumId( + id: "MPREb_muqZ7sOFHBp", + name: "Arcane League of Legends: Season 2 (Soundtrack from the Animated Series)", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "ZeIneYtQ1rw", - name: "CASE 143", - duration: Some(192), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/gHEirg29K3Qf3JREf5nXADzhEsWvG60jF3qzOBTZ-ZLGRdNp64_lcj-pI5GMrkhy1JPU5EIDE4WgmpU=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/gHEirg29K3Qf3JREf5nXADzhEsWvG60jF3qzOBTZ-ZLGRdNp64_lcj-pI5GMrkhy1JPU5EIDE4WgmpU=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCIMmuidNJdncfMEelOU08Fg"), - name: "Stray Kids", - ), - ], - artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), - album: Some(AlbumId( - id: "MPREb_NuxPbSpDTkj", - name: "MAXIDENT", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "ZeIneYtQ1rw", + name: "CASE 143", + duration: Some(192), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/gHEirg29K3Qf3JREf5nXADzhEsWvG60jF3qzOBTZ-ZLGRdNp64_lcj-pI5GMrkhy1JPU5EIDE4WgmpU=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/gHEirg29K3Qf3JREf5nXADzhEsWvG60jF3qzOBTZ-ZLGRdNp64_lcj-pI5GMrkhy1JPU5EIDE4WgmpU=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: Some(AlbumId( + id: "MPREb_NuxPbSpDTkj", + name: "MAXIDENT", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "8Go0B7mNcsU", - name: "Railway (방찬) Railway (Bang Chan)", - duration: Some(174), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCIMmuidNJdncfMEelOU08Fg"), - name: "Stray Kids", - ), - ], - artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), - album: Some(AlbumId( - id: "MPREb_hVsLiyk7ZIe", - name: "合 (HOP) HOP", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "8Go0B7mNcsU", + name: "Railway (방찬) Railway (Bang Chan)", + duration: Some(174), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: Some(AlbumId( + id: "MPREb_hVsLiyk7ZIe", + name: "合 (HOP) HOP", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "of7yhvIadWo", - name: "Walkin On Water (HIP Ver.)", - duration: Some(176), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCIMmuidNJdncfMEelOU08Fg"), - name: "Stray Kids", - ), - ], - artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), - album: Some(AlbumId( - id: "MPREb_hVsLiyk7ZIe", - name: "合 (HOP) HOP", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "of7yhvIadWo", + name: "Walkin On Water (HIP Ver.)", + duration: Some(176), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: Some(AlbumId( + id: "MPREb_hVsLiyk7ZIe", + name: "合 (HOP) HOP", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "iqeY3sz8ldk", - name: "U (feat. TABLO)", - duration: Some(164), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCIMmuidNJdncfMEelOU08Fg"), - name: "Stray Kids", - ), - ], - artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), - album: Some(AlbumId( - id: "MPREb_hVsLiyk7ZIe", - name: "合 (HOP) HOP", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "iqeY3sz8ldk", + name: "U (feat. TABLO)", + duration: Some(164), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: Some(AlbumId( + id: "MPREb_hVsLiyk7ZIe", + name: "合 (HOP) HOP", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "vRmkqYlH-nA", - name: "Bounce Back", - duration: Some(184), - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UCIMmuidNJdncfMEelOU08Fg"), - name: "Stray Kids", - ), - ], - artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), - album: Some(AlbumId( - id: "MPREb_hVsLiyk7ZIe", - name: "合 (HOP) HOP", - )), - view_count: None, - track_type: track, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "vRmkqYlH-nA", + name: "Bounce Back", + duration: Some(184), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/FV8clXeLy7dam8rYixnT7x-6nuTyb6qkusqgW4emZJYaU0XgKf95oIozIHvgB9BtETuneDd0XJauH3lO=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: Some(AlbumId( + id: "MPREb_hVsLiyk7ZIe", + name: "合 (HOP) HOP", + )), + view_count: None, + track_type: track, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), - TrackItem( - id: "ovHoY8UBIu8", - name: "Walkin On Water", - duration: Some(172), - cover: [ - Thumbnail( - url: "https://i.ytimg.com/vi/ovHoY8UBIu8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nT3hLBjoOobwzYb9uspvK59B2j7A", - width: 400, - height: 225, - ), - ], - artists: [ - ArtistId( - id: Some("UCIMmuidNJdncfMEelOU08Fg"), - name: "Stray Kids", - ), - ArtistId( - id: None, - name: "26M views", - ), - ], - artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), - album: None, - view_count: None, - track_type: video, - track_nr: None, - by_va: false, + HistoryItem( + item: TrackItem( + id: "ovHoY8UBIu8", + name: "Walkin On Water", + duration: Some(172), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ovHoY8UBIu8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nT3hLBjoOobwzYb9uspvK59B2j7A", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: Some("UCIMmuidNJdncfMEelOU08Fg"), + name: "Stray Kids", + ), + ArtistId( + id: None, + name: "26M views", + ), + ], + artist_id: Some("UCIMmuidNJdncfMEelOU08Fg"), + album: None, + view_count: None, + track_type: video, + track_nr: None, + by_va: false, + ), + playback_date: "[date]", + playback_date_txt: Some("Last week"), ), ], ctoken: None, diff --git a/src/model/mod.rs b/src/model/mod.rs index 7e24ed0..acd4e20 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -1331,3 +1331,15 @@ pub struct MusicSearchSuggestion { /// Suggested music items pub items: Vec, } + +/// YouTube playback history entry +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +#[non_exhaustive] +pub struct HistoryItem { + /// History item + pub item: T, + /// Playback date + pub playback_date: Option, + /// Textual playback date + pub playback_date_txt: Option, +} diff --git a/src/util/date.rs b/src/util/date.rs index afa07e9..dde5d88 100644 --- a/src/util/date.rs +++ b/src/util/date.rs @@ -1,4 +1,4 @@ -use time::{Date, Month, OffsetDateTime}; +use time::{Date, Duration, Month, OffsetDateTime}; /// Shift a date by the given number of months. /// Ambiguous month-ends are shifted backwards as necessary. @@ -25,6 +25,11 @@ pub fn shift_years(date: Date, years: i32) -> Date { shift_months(date, years * 12) } +pub fn shift_weeks_mo(date: Date, weeks: i32) -> Date { + let d = date + Duration::weeks(weeks.into()); + Date::from_iso_week_date(d.year(), d.iso_week(), time::Weekday::Monday).unwrap() +} + /// Get the current datetime without milli/micro/nanoseconds pub fn now_sec() -> OffsetDateTime { OffsetDateTime::now_utc() diff --git a/src/util/dictionary.rs b/src/util/dictionary.rs index 22fab6a..52a8ffd 100644 --- a/src/util/dictionary.rs +++ b/src/util/dictionary.rs @@ -91,35 +91,59 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 12213676231523076107, disps: &[ - (4, 8), - (1, 0), - (7, 2), + (0, 4), + (2, 0), + (7, 5), + (16, 12), + (0, 21), ], entries: &[ + ("maart", 3), + ("julie", 7), + ("oktober", 10), ("nov", 11), - ("okt", 10), - ("apr", 4), - ("jun", 6), - ("mrt", 3), - ("aug", 8), ("des", 12), - ("mei", 5), + ("mrt", 3), + ("okt", 10), + ("aug", 8), + ("januarie", 1), ("jan", 1), - ("jul", 7), + ("mei", 5), + ("apr", 4), + ("augustus", 8), + ("april", 4), + ("november", 11), + ("desember", 12), ("sep", 9), ("feb", 2), + ("februarie", 2), + ("jun", 6), + ("jul", 7), + ("junie", 6), + ("september", 9), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ (0, 0), + (0, 2), + (5, 4), ], entries: &[ + ("donderdag", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("vandeesweek", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("maandag", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("vrydag", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ("gister", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("woensdag", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("sondag", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("saterdag", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("dinsdag", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ("vandag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("verlede week", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ], }, comma_decimal: true, @@ -191,37 +215,58 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 7485420634051515786, + key: 12913932095322966823, disps: &[ - (2, 0), - (0, 10), - (9, 7), + (7, 12), + (4, 0), + (10, 6), + (4, 10), + (5, 5), ], entries: &[ - ("ሜይ", 5), - ("ሴፕቴ", 9), - ("ዲሴም", 12), - ("ፌብ", 2), - ("ፌብሩ", 2), - ("ኦገስ", 8), - ("ማርች", 3), - ("ኤፕሪ", 4), + ("ኤፕሪል", 4), ("ኦክቶ", 10), - ("ጃንዩ", 1), - ("ኖቬም", 11), ("ጁን", 6), ("ጃን", 1), + ("ኖቬም", 11), + ("ፌብሩዋሪ", 2), + ("ማርች", 3), + ("ኖቬምበር", 11), + ("ኦገስት", 8), + ("ዲሴም", 12), + ("ኦክቶበር", 10), + ("ኦገስ", 8), + ("ጃንዋሪ", 1), + ("ሜይ", 5), + ("ጃንዩ", 1), + ("ሴፕቴምበር", 9), ("ጁላይ", 7), + ("ፌብሩ", 2), + ("ፌብ", 2), + ("ዲሴምበር", 12), + ("ኤፕሪ", 4), + ("ሴፕቴ", 9), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ (0, 0), + (1, 0), + (3, 6), ], entries: &[ - ("ትላንት", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("ዛሬ", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ያለፈው ሳምንት", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("ትላንት", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ሰኞ", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("እሑድ", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("ማክሰኞ", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("ሐሙስ", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("ቅዳሜ", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("በዚህ ሳምንት", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("ረቡዕ", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("ዓርብ", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -313,18 +358,45 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 12913932095322966823, disps: &[ + (3, 0), + (0, 9), + (5, 10), ], entries: &[ + ("ديسمبر", 12), + ("يناير", 1), + ("فبراير", 2), + ("يوليو", 7), + ("يونيو", 6), + ("أبريل", 4), + ("سبتمبر", 9), + ("أكتوبر", 10), + ("مايو", 5), + ("أغسطس", 8), + ("مارس", 3), + ("نوفمبر", 11), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (0, 0), + (1, 0), + (1, 7), + (2, 8), ], entries: &[ - ("البارحة", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("الأحد", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("الاثنين", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("الجمعة", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("هذا الأسبوع", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("أمس", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("الأسبوع الماضي", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("اليوم", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("السبت", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("البارحة", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("الخميس", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("الثلاثاء", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("الأربعاء", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -387,18 +459,44 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 12913932095322966823, disps: &[ + (3, 11), + (2, 2), + (0, 0), ], entries: &[ + ("ছেপ\u{9cd}তেম\u{9cd}বৰ", 9), + ("জ\u{9be}ন\u{9c1}ৱ\u{9be}ৰী", 1), + ("আগষ\u{9cd}ট", 8), + ("মে’", 5), + ("অক\u{9cd}টোবৰ", 10), + ("এপ\u{9cd}ৰিল", 4), + ("ডিচেম\u{9cd}বৰ", 12), + ("ফেব\u{9cd}ৰ\u{9c1}ৱ\u{9be}ৰী", 2), + ("জ\u{9c1}ন", 6), + ("ম\u{9be}ৰ\u{9cd}চ", 3), + ("জ\u{9c1}ল\u{9be}ই", 7), + ("নৱেম\u{9cd}বৰ", 11), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (1, 5), + (2, 0), + (0, 1), ], entries: &[ - ("আজি", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("এই সপ\u{9cd}ত\u{9be}হৰ", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("মঙ\u{9cd}গলব\u{9be}ৰ", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("দেওব\u{9be}ৰ", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("সোমব\u{9be}ৰ", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ("ক\u{9be}লি", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("শনিব\u{9be}ৰ", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("ব\u{9c1}ধব\u{9be}ৰ", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("আজি", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ব\u{9c3}হস\u{9cd}পতিব\u{9be}ৰ", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("যোৱ\u{9be} সপ\u{9cd}ত\u{9be}হৰ", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("শ\u{9c1}ক\u{9cd}ৰব\u{9be}ৰ", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -472,35 +570,59 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 8694567506910003252, + key: 12913932095322966823, disps: &[ - (1, 5), - (4, 0), - (0, 10), + (1, 14), + (1, 20), + (2, 17), + (1, 0), + (12, 2), ], entries: &[ + ("noyabr", 11), ("okt", 10), - ("sen", 9), - ("yan", 1), - ("mar", 3), - ("iyl", 7), - ("noy", 11), - ("dek", 12), - ("fev", 2), - ("iyn", 6), ("avq", 8), - ("may", 5), + ("dekabr", 12), + ("sen", 9), + ("avqust", 8), + ("fev", 2), + ("mart", 3), + ("oktyabr", 10), + ("dek", 12), + ("iyun", 6), ("apr", 4), + ("may", 5), + ("fevral", 2), + ("aprel", 4), + ("iyul", 7), + ("yan", 1), + ("iyn", 6), + ("sentyabr", 9), + ("noy", 11), + ("iyl", 7), + ("mar", 3), + ("yanvar", 1), ], }, timeago_nd_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ - (0, 0), + (2, 10), + (0, 6), + (7, 0), ], entries: &[ - ("dünən", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("cümə", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ("bugün", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("çərşənbə axşamı", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("cümə axşamı", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("şənbə", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("bazar ertəsi", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("bazar", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("çərşənbə", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("ötən həftə", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("bu həftə", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("dünən", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: true, @@ -589,35 +711,61 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, - disps: &[ - (11, 11), - (2, 2), - (0, 0), - ], - entries: &[ - ("лют", 2), - ("ліп", 7), - ("чэр", 6), - ("кас", 10), - ("сак", 3), - ("сту", 1), - ("сне", 12), - ("ліс", 11), - ("вер", 9), - ("кра", 4), - ("мая", 5), - ("жні", 8), - ], - }, - timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ (1, 0), + (4, 7), + (14, 23), + (0, 0), + (20, 15), ], entries: &[ - ("сёння", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("жні", 8), + ("лют", 2), + ("ліпень", 7), + ("май", 5), + ("сак", 3), + ("вер", 9), + ("верасень", 9), + ("кас", 10), + ("сакавік", 3), + ("красавік", 4), + ("кра", 4), + ("мая", 5), + ("жнівень", 8), + ("ліс", 11), + ("ліп", 7), + ("лістапад", 11), + ("студзень", 1), + ("сне", 12), + ("кастрычнік", 10), + ("чэрвень", 6), + ("люты", 2), + ("чэр", 6), + ("снежань", 12), + ("сту", 1), + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 8694567506910003252, + disps: &[ + (6, 0), + (2, 9), + (0, 10), + ], + entries: &[ + ("учора", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("на мінулым тыдні", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("нядзеля", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("панядзелак", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("чацвер", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("серада", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ("ўчора", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("сёння", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("аўторак", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("на гэтым тыдні", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("субота", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("пятніца", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -693,18 +841,44 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 12913932095322966823, disps: &[ + (0, 0), + (0, 0), + (11, 1), ], entries: &[ + ("август", 8), + ("декември", 12), + ("февруари", 2), + ("май", 5), + ("октомври", 10), + ("януари", 1), + ("юли", 7), + ("март", 3), + ("септември", 9), + ("април", 4), + ("ноември", 11), + ("юни", 6), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 0), + (0, 0), + (0, 3), + (3, 3), ], entries: &[ + ("вторник", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("сряда", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("тази седмица", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ("вчера", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("понеделник", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("четвъртък", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("неделя", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("събота", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("петък", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ("днес", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("последната седмица", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ], }, comma_decimal: true, @@ -763,35 +937,57 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (3, 4), - (2, 0), - (2, 3), + (0, 14), + (3, 20), + (7, 4), + (0, 0), + (3, 0), ], entries: &[ - ("অক\u{9cd}টো,", 10), - ("ফেব,", 2), - ("নভে,", 11), - ("জ\u{9be}ন\u{9c1},", 1), - ("ম\u{9be}র\u{9cd}চ,", 3), - ("আগ,", 8), - ("ডিসে,", 12), - ("জ\u{9c1}ন,", 6), - ("এপ\u{9cd}রি,", 4), - ("মে,", 5), - ("সেপ,", 9), - ("জ\u{9c1}ল,", 7), + ("মে", 5), + ("জ\u{9be}ন\u{9c1}", 1), + ("আগ", 8), + ("সেপ\u{9cd}টেম\u{9cd}বর", 9), + ("জ\u{9c1}ল", 7), + ("এপ\u{9cd}রি", 4), + ("নভে", 11), + ("জ\u{9c1}ন", 6), + ("জ\u{9c1}ল\u{9be}ই", 7), + ("ফেব\u{9cd}র\u{9c1}য\u{9bc}\u{9be}রী", 2), + ("জ\u{9be}ন\u{9c1}য\u{9bc}\u{9be}রী", 1), + ("নভেম\u{9cd}বর", 11), + ("ডিসে", 12), + ("এপ\u{9cd}রিল", 4), + ("অক\u{9cd}টোবর", 10), + ("ডিসেম\u{9cd}বর", 12), + ("সেপ", 9), + ("আগস\u{9cd}ট", 8), + ("ফেব", 2), + ("ম\u{9be}র\u{9cd}চ", 3), + ("অক\u{9cd}টো", 10), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ (0, 0), + (1, 4), + (0, 9), ], entries: &[ + ("শনিব\u{9be}র", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("গত সপ\u{9cd}ত\u{9be}হ", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("গতক\u{9be}ল", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("শ\u{9c1}ক\u{9cd}রব\u{9be}র", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("এই সপ\u{9cd}ত\u{9be}হে", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ("আজ", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("সোমব\u{9be}র", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("রবিব\u{9be}র", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("ব\u{9c1}ধব\u{9be}র", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("ব\u{9c3}হস\u{9cd}পতিব\u{9be}র", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("মঙ\u{9cd}গলব\u{9be}র", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -880,35 +1076,59 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 10121458955350035957, + key: 12913932095322966823, disps: &[ + (0, 0), (0, 9), - (1, 6), - (5, 0), + (1, 1), + (12, 6), + (10, 1), ], entries: &[ + ("juni", 6), ("jul", 7), - ("okt", 10), ("sep", 9), + ("januar", 1), + ("februar", 2), ("nov", 11), - ("maj", 5), ("mar", 3), - ("apr", 4), ("feb", 2), + ("april", 4), ("jun", 6), - ("jan", 1), ("aug", 8), + ("mart", 3), + ("novembar", 11), + ("juli", 7), + ("septembar", 9), + ("jan", 1), + ("okt", 10), ("dec", 12), + ("oktobar", 10), + ("decembar", 12), + ("august", 8), + ("maj", 5), + ("apr", 4), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (1, 0), + (3, 9), + (4, 0), + (9, 6), ], entries: &[ + ("ponedjeljak", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("prošla sedmica", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("subota", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), ("jučer", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ova sedmica", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ("danas", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("utorak", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("nedjelja", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("petak", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("četvrtak", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("srijeda", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -983,33 +1203,55 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 12913932095322966823, disps: &[ - (4, 2), - (1, 7), - (1, 0), + (0, 8), + (6, 0), + (0, 6), + (4, 12), + (9, 6), ], entries: &[ - ("nov", 11), - ("jul", 7), - ("juny", 6), ("març", 3), - ("febr", 2), - ("set", 9), - ("des", 12), - ("d’ag", 8), + ("jul", 7), + ("octubre", 10), + ("abril", 4), + ("juliol", 7), + ("setembre", 9), + ("febrer", 2), ("gen", 1), - ("d’abr", 4), ("maig", 5), + ("desembre", 12), + ("gener", 1), + ("des", 12), + ("juny", 6), + ("d’abr", 4), + ("agost", 8), + ("novembre", 11), + ("set", 9), + ("d’ag", 8), ("d’oct", 10), + ("febr", 2), + ("nov", 11), ], }, timeago_nd_tokens: ::phf::Map { - key: 7485420634051515786, + key: 10121458955350035957, disps: &[ - (0, 0), + (7, 0), + (9, 0), + (8, 5), ], entries: &[ - ("avui", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("diumenge", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("la setmana passada", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("dilluns", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("dimecres", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ("ahir", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("divendres", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("dimarts", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("aquesta setmana", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("avui", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("dijous", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("dissabte", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -1100,18 +1342,44 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 12913932095322966823, disps: &[ - ], - entries: &[ - ], - }, - timeago_nd_tokens: ::phf::Map { - key: 10121458955350035957, - disps: &[ + (0, 11), + (8, 11), (0, 0), ], entries: &[ - ("včera", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("říjen", 10), + ("listopad", 11), + ("prosinec", 12), + ("duben", 4), + ("září", 9), + ("leden", 1), + ("srpen", 8), + ("červen", 6), + ("únor", 2), + ("květen", 5), + ("červenec", 7), + ("březen", 3), + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 8694567506910003252, + disps: &[ + (5, 5), + (5, 5), + (0, 0), + ], + entries: &[ + ("pátek", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("tento týden", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("čtvrtek", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("úterý", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("minulý týden", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("sobota", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), ("dnes", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("včera", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("neděle", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("pondělí", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("středa", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -1180,35 +1448,59 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 10121458955350035957, + key: 15467950696543387533, disps: &[ - (0, 9), - (1, 6), - (5, 0), + (18, 13), + (4, 15), + (2, 13), + (0, 0), + (1, 13), ], entries: &[ - ("jul", 7), - ("okt", 10), - ("sep", 9), + ("januar", 1), ("nov", 11), - ("maj", 5), - ("mar", 3), - ("apr", 4), - ("feb", 2), + ("marts", 3), ("jun", 6), + ("mar", 3), + ("oktober", 10), + ("feb", 2), + ("december", 12), + ("jul", 7), + ("sep", 9), + ("november", 11), + ("juli", 7), + ("maj", 5), ("jan", 1), - ("aug", 8), ("dec", 12), + ("juni", 6), + ("april", 4), + ("apr", 4), + ("februar", 2), + ("aug", 8), + ("september", 9), + ("august", 8), + ("okt", 10), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ + (0, 3), (1, 0), + (1, 2), ], entries: &[ - ("dag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("onsdag", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("denne uge", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("sidste uge", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("mandag", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("tirsdag", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("torsdag", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("lørdag", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("søndag", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("fredag", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ("går", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("dag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: true, @@ -1278,20 +1570,46 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 7485420634051515786, disps: &[ + (0, 0), + (1, 8), + (0, 3), ], entries: &[ + ("januar", 1), + ("august", 8), + ("februar", 2), + ("dezember", 12), + ("oktober", 10), + ("september", 9), + ("november", 11), + ("juli", 7), + ("juni", 6), + ("april", 4), + ("mai", 5), + ("märz", 3), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (10, 0), + (0, 7), + (0, 9), ], entries: &[ + ("diese woche", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("sonntag", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ("gestern", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("freitag", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("donnerstag", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("montag", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("letzte woche", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("mittwoch", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("samstag", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), ("heute", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("dienstag", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -1367,32 +1685,58 @@ pub(crate) fn entry(lang: Language) -> Entry { key: 15467950696543387533, disps: &[ (0, 0), - (4, 0), - (0, 4), + (2, 0), + (8, 2), + (6, 19), + (13, 2), ], entries: &[ - ("ιουλ", 7), - ("δεκ", 12), - ("απρ", 4), - ("οκτ", 10), - ("σεπ", 9), - ("φεβ", 2), - ("νοε", 11), - ("μαΐ", 5), - ("ιουν", 6), - ("ιαν", 1), ("μαρ", 3), + ("μαΐ", 5), + ("σεπ", 9), + ("σεπτέμβριος", 9), + ("δεκέμβριος", 12), + ("φεβ", 2), + ("νοέμβριος", 11), + ("ιουλ", 7), + ("ιούνιος", 6), + ("απρίλιος", 4), + ("ιουν", 6), + ("δεκ", 12), + ("ιαν", 1), + ("ιανουάριος", 1), + ("ιούλιος", 7), + ("μάιος", 5), + ("απρ", 4), ("αυγ", 8), + ("αύγουστος", 8), + ("οκτ", 10), + ("οκτώβριος", 10), + ("φεβρουάριος", 2), + ("μάρτιος", 3), + ("νοε", 11), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 2126027241312876569, disps: &[ - (0, 0), + (3, 0), + (0, 7), + (8, 9), ], entries: &[ - ("χτες", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("σήμερα", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("σάββατο", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("τετάρτη", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("χθες", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("παρασκευή", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("χτες", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("τρίτη", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("τελευταία εβδομάδα", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("πέμπτη", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("κυριακή", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("δευτέρα", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("αυτήν την εβδομάδα", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ], }, comma_decimal: true, @@ -1476,36 +1820,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 351906021642186605, disps: &[ - (8, 0), - (5, 8), + (17, 3), + (19, 19), (4, 0), + (0, 22), + (2, 6), ], entries: &[ - ("nov", 11), - ("sept", 9), - ("apr", 4), - ("dec", 12), - ("mar", 3), - ("jun", 6), - ("sep", 9), ("may", 5), + ("nov", 11), + ("june", 6), + ("april", 4), ("jul", 7), - ("jan", 1), + ("dec", 12), + ("october", 10), + ("mar", 3), ("oct", 10), - ("feb", 2), + ("november", 11), + ("sept", 9), + ("march", 3), + ("july", 7), + ("august", 8), ("aug", 8), + ("february", 2), + ("feb", 2), + ("sep", 9), + ("september", 9), + ("jun", 6), + ("january", 1), + ("jan", 1), + ("december", 12), + ("apr", 4), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (2, 0), + (2, 0), + (1, 5), ], entries: &[ + ("this week", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("wednesday", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ("yesterday", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("monday", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("tuesday", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("sunday", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("saturday", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("thursday", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("last week", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("today", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("friday", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -1580,35 +1948,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 8602556344903797927, disps: &[ (1, 0), - (1, 6), - (0, 4), + (4, 16), + (2, 12), + (11, 3), + (0, 5), ], entries: &[ - ("jul", 7), - ("oct", 10), - ("ene", 1), - ("may", 5), - ("sept", 9), - ("feb", 2), - ("nov", 11), - ("dic", 12), - ("abr", 4), - ("jun", 6), - ("ago", 8), ("mar", 3), + ("septiembre", 9), + ("abr", 4), + ("nov", 11), + ("noviembre", 11), + ("abril", 4), + ("jul", 7), + ("diciembre", 12), + ("agosto", 8), + ("octubre", 10), + ("feb", 2), + ("jun", 6), + ("may", 5), + ("mayo", 5), + ("junio", 6), + ("oct", 10), + ("febrero", 2), + ("ago", 8), + ("dic", 12), + ("julio", 7), + ("enero", 1), + ("ene", 1), + ("sept", 9), + ("marzo", 3), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (1, 0), + (4, 10), + (3, 4), ], entries: &[ ("ayer", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sábado", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("martes", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("la semana pasada", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("lunes", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("miércoles", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ("hoy", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("jueves", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("viernes", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("esta semana", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("domingo", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -1678,35 +2071,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 8602556344903797927, disps: &[ (1, 0), - (1, 6), - (0, 4), + (4, 16), + (2, 12), + (11, 3), + (0, 5), ], entries: &[ - ("jul", 7), - ("oct", 10), - ("ene", 1), - ("may", 5), - ("sept", 9), - ("feb", 2), - ("nov", 11), - ("dic", 12), - ("abr", 4), - ("jun", 6), - ("ago", 8), ("mar", 3), + ("septiembre", 9), + ("abr", 4), + ("nov", 11), + ("noviembre", 11), + ("abril", 4), + ("jul", 7), + ("diciembre", 12), + ("agosto", 8), + ("octubre", 10), + ("feb", 2), + ("jun", 6), + ("may", 5), + ("mayo", 5), + ("junio", 6), + ("oct", 10), + ("febrero", 2), + ("ago", 8), + ("dic", 12), + ("julio", 7), + ("enero", 1), + ("ene", 1), + ("sept", 9), + ("marzo", 3), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (1, 0), + (4, 10), + (3, 4), ], entries: &[ ("ayer", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sábado", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("martes", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("la semana pasada", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("lunes", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("miércoles", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ("hoy", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("jueves", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("viernes", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("esta semana", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("domingo", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -1779,35 +2197,55 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 14108922650502679131, + key: 11210181029210336526, disps: &[ - (4, 0), - (2, 4), - (0, 3), + (1, 0), + (8, 16), + (5, 6), + (2, 12), ], entries: &[ - ("okt", 10), - ("aug", 8), - ("dets", 12), - ("mai", 5), - ("jaan", 1), - ("nov", 11), - ("juuni", 6), - ("märts", 3), - ("sept", 9), ("apr", 4), - ("veebr", 2), + ("september", 9), + ("aprill", 4), + ("dets", 12), + ("august", 8), + ("aug", 8), + ("oktoober", 10), + ("juuni", 6), + ("november", 11), + ("jaanuar", 1), ("juuli", 7), + ("veebruar", 2), + ("mai", 5), + ("sept", 9), + ("jaan", 1), + ("okt", 10), + ("detsember", 12), + ("märts", 3), + ("veebr", 2), + ("nov", 11), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ + (6, 1), (0, 0), + (0, 1), ], entries: &[ ("eile", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("laupäev", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("pühapäev", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("sellel nädalal", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("teisipäev", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("kolmapäev", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("eelmisel nädalal", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("esmaspäev", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ("täna", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("neljapäev", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("reede", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -1869,35 +2307,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { - key: 15467950696543387533, + key: 4594751852016600049, disps: &[ - (1, 0), - (9, 5), - (2, 4), + (0, 2), + (3, 0), + (22, 22), + (6, 1), + (5, 6), ], entries: &[ - ("uzt", 7), - ("aza", 11), - ("ots", 2), - ("urr", 10), - ("mai", 5), ("urt", 1), - ("abu", 8), + ("mai", 5), + ("azaroa", 11), ("eka", 6), - ("abe", 12), - ("ira", 9), - ("mar", 3), ("api", 4), + ("mar", 3), + ("abendua", 12), + ("apirila", 4), + ("ekaina", 6), + ("otsaila", 2), + ("urtarrila", 1), + ("abu", 8), + ("abuztua", 8), + ("uztaila", 7), + ("uzt", 7), + ("abe", 12), + ("urr", 10), + ("martxoa", 3), + ("aza", 11), + ("maiatza", 5), + ("ira", 9), + ("ots", 2), + ("urria", 10), + ("iraila", 9), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (9, 10), + (2, 0), + (1, 6), ], entries: &[ - ("atzo", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("aste hau", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("igandea", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("larunbata", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), ("gaur", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("asteazkena", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("joan den astea", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("astelehena", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("asteartea", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("ostirala", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("osteguna", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("atzo", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: true, @@ -1954,35 +2417,51 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 7485420634051515786, disps: &[ (0, 0), - (4, 3), - (7, 8), + (2, 5), + (2, 13), + (0, 7), ], entries: &[ - ("دسامبر", 12), - ("ژانویه", 1), - ("مارس", 3), - ("ژوئیه", 7), - ("سپتامبر", 9), - ("آوریل", 4), - ("نوامبر", 11), - ("ژوئن", 6), - ("مه", 5), - ("اوت", 8), + ("فوریه\u{654}", 2), + ("ژوئیه\u{654}", 7), ("اکتبر", 10), + ("ژوئن", 6), + ("دسامبر", 12), ("فوریه", 2), + ("اوت", 8), + ("ژانویه\u{654}", 1), + ("ژانویه", 1), + ("آوریل", 4), + ("سپتامبر", 9), + ("ژوئیه", 7), + ("مه\u{654}", 5), + ("مارس", 3), + ("مه", 5), + ("نوامبر", 11), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 0), + (9, 8), + (0, 1), + (3, 0), ], entries: &[ - ("امروز", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ("دیروز", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("سه\u{200c}شنبه", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("امروز", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("پنجشنبه", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("جمعه", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("هفته قبل", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("چهارشنبه", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("یکشنبه", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("شنبه", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("این هفته", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("دوشنبه", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -2059,20 +2538,46 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 7485420634051515786, disps: &[ + (0, 3), + (0, 0), + (1, 3), ], entries: &[ + ("elokuu", 8), + ("syyskuu", 9), + ("joulukuu", 12), + ("marraskuu", 11), + ("maaliskuu", 3), + ("toukokuu", 5), + ("helmikuu", 2), + ("lokakuu", 10), + ("heinäkuu", 7), + ("huhtikuu", 4), + ("kesäkuu", 6), + ("tammikuu", 1), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (0, 0), + (4, 1), + (4, 1), + (4, 0), ], entries: &[ + ("tällä viikolla", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("viime viikolla", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("maanantai", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ("tänään", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ("eilen", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("lauantai", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("perjantai", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("sunnuntai", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("keskiviikko", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("tiistai", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("torstai", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -2134,35 +2639,61 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, - disps: &[ - (2, 0), - (7, 3), - (4, 3), - ], - entries: &[ - ("abr", 4), - ("set", 9), - ("mar", 3), - ("may", 5), - ("hun", 6), - ("nob", 11), - ("okt", 10), - ("ene", 1), - ("hul", 7), - ("dis", 12), - ("ago", 8), - ("peb", 2), - ], - }, - timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 345707026197253659, disps: &[ + (2, 18), + (0, 0), + (14, 0), + (3, 13), (0, 0), ], entries: &[ - ("ngayong", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("setyembre", 9), + ("hun", 6), + ("dis", 12), + ("okt", 10), + ("set", 9), + ("agosto", 8), + ("hunyo", 6), + ("peb", 2), + ("oktubre", 10), + ("mar", 3), + ("ago", 8), + ("hul", 7), + ("marso", 3), + ("abr", 4), + ("nob", 11), + ("mayo", 5), + ("may", 5), + ("abril", 4), + ("nobyembre", 11), + ("disyembre", 12), + ("enero", 1), + ("pebrero", 2), + ("ene", 1), + ("hulyo", 7), + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (4, 6), + (0, 0), + (4, 11), + ], + entries: &[ + ("ngayon", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("martes", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("ngayong linggo", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("miyerkules", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("lunes", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("sabado", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("huwebes", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), ("kahapon", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ngayong", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("linggo", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("nakaraang linggo", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("biyernes", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -2234,36 +2765,58 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (10, 7), - (1, 0), - (3, 1), + (3, 15), + (3, 0), + (0, 8), + (4, 6), + (13, 6), ], entries: &[ - ("août", 8), - ("févr", 2), ("nov", 11), - ("sept", 9), - ("janv", 1), ("oct", 10), + ("septembre", 9), ("juin", 6), - ("déc", 12), ("juil", 7), + ("juillet", 7), ("mars", 3), ("avr", 4), + ("avril", 4), + ("novembre", 11), + ("sept", 9), + ("déc", 12), + ("décembre", 12), + ("août", 8), + ("octobre", 10), + ("janv", 1), + ("févr", 2), ("mai", 5), + ("janvier", 1), ("juill", 7), + ("février", 2), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (0, 0), + (8, 0), + (1, 9), + (5, 9), ], entries: &[ + ("dimanche", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("lundi", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ("hier", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("mercredi", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("aujourd’hui", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("vendredi", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("cette semaine", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ("aujourd'hui", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("la semaine dernière", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("samedi", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("mardi", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("jeudi", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -2339,35 +2892,58 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 8694567506910003252, + key: 12913932095322966823, disps: &[ + (2, 6), (2, 0), - (2, 10), - (2, 5), + (1, 21), + (6, 21), + (1, 15), ], entries: &[ - ("nov", 11), - ("abr", 4), - ("maio", 5), - ("ago", 8), ("mar", 3), - ("xuño", 6), + ("novembro", 11), + ("xullo", 7), + ("agosto", 8), + ("outubro", 10), ("xul", 7), + ("xan", 1), + ("decembro", 12), + ("febreiro", 2), + ("abril", 4), + ("dec", 12), + ("nov", 11), + ("maio", 5), + ("feb", 2), + ("xuño", 6), + ("setembro", 9), + ("ago", 8), + ("marzo", 3), + ("xaneiro", 1), + ("abr", 4), ("out", 10), ("set", 9), - ("feb", 2), - ("xan", 1), - ("dec", 12), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (0, 1), + (2, 0), + (5, 0), ], entries: &[ - ("hoxe", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ("onte", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("martes", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("hoxe", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("sábado", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("luns", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("xoves", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("esta semana", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("domingo", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("mércores", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("a semana pasada", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("venres", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -2425,35 +3001,53 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ + (2, 1), + (0, 2), + (14, 11), (1, 0), - (3, 11), - (4, 6), ], entries: &[ - ("ઑગસ\u{acd}ટ,", 8), - ("ફ\u{ac7}બ\u{acd}ર\u{ac1},", 2), - ("મ\u{ac7},", 5), - ("માર\u{acd}ચ,", 3), - ("નવ\u{ac7},", 11), - ("જાન\u{acd}ય\u{ac1},", 1), - ("એપ\u{acd}રિલ,", 4), - ("જ\u{ac1}લાઈ,", 7), - ("સપ\u{acd}ટ\u{ac7},", 9), - ("જ\u{ac2}ન,", 6), - ("ડિસ\u{ac7},", 12), - ("ઑક\u{acd}ટો,", 10), + ("સપ\u{acd}ટ\u{ac7}", 9), + ("નવ\u{ac7}મ\u{acd}બર", 11), + ("ડિસ\u{ac7}", 12), + ("ઑગસ\u{acd}ટ", 8), + ("નવ\u{ac7}", 11), + ("મ\u{ac7}", 5), + ("સપ\u{acd}ટ\u{ac7}મ\u{acd}બર", 9), + ("જ\u{ac1}લાઈ", 7), + ("ડિસ\u{ac7}મ\u{acd}બર", 12), + ("ઑક\u{acd}ટોબર", 10), + ("એપ\u{acd}રિલ", 4), + ("જ\u{ac2}ન", 6), + ("ઑક\u{acd}ટો", 10), + ("ફ\u{ac7}બ\u{acd}ર\u{ac1}આરી", 2), + ("જાન\u{acd}ય\u{ac1}", 1), + ("માર\u{acd}ચ", 3), + ("ફ\u{ac7}બ\u{acd}ર\u{ac1}", 2), + ("જાન\u{acd}ય\u{ac1}આરી", 1), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (0, 0), + (2, 0), + (2, 0), + (1, 4), ], entries: &[ - ("આજ\u{ac7}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ("ગઈકાલ\u{ac7}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("આજ\u{ac7}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("શ\u{ac1}ક\u{acd}રવાર", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("આ અઠવાડિય\u{ac7}", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("ગ\u{ac1}ર\u{ac1}વાર", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("રવિવાર", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("બ\u{ac1}ધવાર", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("શનિવાર", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("છ\u{ac7}લ\u{acd}લ\u{ac1}\u{a82} અઠવાડિય\u{ac1}\u{a82}", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("મ\u{a82}ગળવાર", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("સોમવાર", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -2516,33 +3110,56 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 12913932095322966823, disps: &[ - (7, 0), - (2, 8), - (0, 2), + (2, 4), + (4, 14), + (1, 0), + (4, 15), + (3, 15), ], entries: &[ ("मार\u{94d}च", 3), - ("सित॰", 9), - ("फ\u{93c}र॰", 2), - ("नव॰", 11), - ("ज\u{942}न", 6), - ("अग॰", 8), - ("ज\u{941}ल॰", 7), - ("जन॰", 1), - ("मई", 5), - ("अक\u{94d}त\u{942}॰", 10), ("दिस॰", 12), + ("अक\u{94d}ट\u{942}॰", 10), + ("अक\u{94d}त\u{942}॰", 10), + ("ज\u{941}ल॰", 7), + ("अगस\u{94d}त", 8), + ("ज\u{942}न", 6), + ("अक\u{94d}ट\u{942}बर", 10), ("अप\u{94d}र\u{948}ल", 4), + ("दिस\u{902}बर", 12), + ("फ\u{93c}र॰", 2), + ("सित\u{902}बर", 9), + ("अक\u{94d}त\u{942}बर", 10), + ("सित॰", 9), + ("ज\u{941}लाई", 7), + ("मई", 5), + ("फ\u{93c}रवरी", 2), + ("जन॰", 1), + ("नव॰", 11), + ("जनवरी", 1), + ("अग॰", 8), + ("नव\u{902}बर", 11), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ (0, 0), + (6, 6), + (1, 0), ], entries: &[ - ("कल", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("आज", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("शनिवार", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("कल", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("इस हफ\u{93c}\u{94d}त\u{947}", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("पिछल\u{947} हफ\u{93c}\u{94d}त\u{947}", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("रविवार", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("ग\u{941}र\u{941}वार", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("श\u{941}क\u{94d}रवार", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("म\u{902}गलवार", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("सोमवार", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("ब\u{941}धवार", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -2626,35 +3243,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 8694567506910003252, disps: &[ - (0, 8), - (0, 4), - (2, 0), + (0, 23), + (1, 9), + (5, 12), + (1, 0), + (16, 1), ], entries: &[ - ("lis", 10), - ("stu", 11), - ("velj", 2), - ("lip", 6), - ("svi", 5), - ("ruj", 9), - ("pro", 12), + ("studeni", 11), ("sij", 1), - ("kol", 8), - ("ožu", 3), + ("pro", 12), + ("travanj", 4), ("tra", 4), + ("listopad", 10), + ("svi", 5), + ("veljača", 2), ("srp", 7), + ("kol", 8), + ("svibanj", 5), + ("siječanj", 1), + ("velj", 2), + ("prosinac", 12), + ("srpanj", 7), + ("stu", 11), + ("kolovoz", 8), + ("rujan", 9), + ("lip", 6), + ("ruj", 9), + ("lipanj", 6), + ("ožu", 3), + ("lis", 10), + ("ožujak", 3), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 0), + (1, 1), + (1, 2), + (6, 0), ], entries: &[ + ("subota", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("petak", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("ponedjeljak", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("ovaj tjedan", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ("jučer", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("danas", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("utorak", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("srijeda", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("nedjelja", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("prošli tjedan", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("četvrtak", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -2727,35 +3369,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (5, 0), - (0, 10), - (6, 9), + (22, 19), + (8, 21), + (0, 12), + (1, 0), + (0, 5), ], entries: &[ - ("jan", 1), - ("jún", 6), + ("augusztus", 8), + ("március", 3), ("júl", 7), - ("márc", 3), - ("máj", 5), + ("jan", 1), + ("február", 2), + ("november", 11), + ("jún", 6), + ("szeptember", 9), + ("május", 5), ("dec", 12), - ("okt", 10), - ("ápr", 4), - ("nov", 11), + ("december", 12), + ("máj", 5), + ("június", 6), ("aug", 8), ("szept", 9), + ("július", 7), + ("április", 4), ("febr", 2), + ("márc", 3), + ("október", 10), + ("nov", 11), + ("január", 1), + ("ápr", 4), + ("okt", 10), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (1, 0), + (1, 7), + (10, 0), + (2, 0), ], entries: &[ - ("tegnap", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("szerda", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("szombat", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("múlt héten", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("ezen a héten", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("csütörtök", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("vasárnap", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("péntek", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("kedd", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("hétfő", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ("ma", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("tegnap", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: true, @@ -2820,35 +3487,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 8694567506910003252, disps: &[ - (3, 0), - (1, 0), - (3, 11), + (2, 3), + (0, 17), + (7, 0), + (15, 5), + (3, 1), ], entries: &[ - ("հոկ,", 10), - ("սեպ,", 9), - ("հլս,", 7), - ("նոյ,", 11), - ("մրտ,", 3), - ("փտվ,", 2), - ("դեկ,", 12), - ("օգս,", 8), - ("հնս,", 6), - ("հնվ,", 1), - ("մյս,", 5), - ("ապր,", 4), + ("սեպ", 9), + ("հուլիս", 7), + ("նոյ", 11), + ("մայիս", 5), + ("հնվ", 1), + ("նոյեմբեր", 11), + ("օգոստոս", 8), + ("սեպտեմբեր", 9), + ("հոկ", 10), + ("հլս", 7), + ("հնս", 6), + ("մյս", 5), + ("փտվ", 2), + ("հունիս", 6), + ("մրտ", 3), + ("օգս", 8), + ("ապրիլ", 4), + ("դեկտեմբեր", 12), + ("դեկ", 12), + ("փետրվար", 2), + ("մարտ", 3), + ("հունվար", 1), + ("հոկտեմբեր", 10), + ("ապր", 4), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (4, 7), + (2, 0), + (7, 3), ], entries: &[ - ("երեկ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("շաբաթ", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("չորեքշաբթի", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("ուրբաթ", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("երկուշաբթի", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ("այսօր", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("հինգշաբթի", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("երեքշաբթի", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("կիրակի", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("երեկ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("անցյալ շաբաթ", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("այս շաբաթ", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ], }, comma_decimal: true, @@ -2915,35 +3607,59 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 106375038446233661, + key: 15467950696543387533, disps: &[ - (0, 0), - (1, 7), - (0, 1), + (3, 0), + (4, 14), + (2, 14), + (0, 3), + (5, 3), ], entries: &[ - ("feb", 2), - ("mar", 3), - ("jul", 7), - ("jan", 1), + ("september", 9), ("agu", 8), - ("nov", 11), - ("mei", 5), - ("jun", 6), - ("des", 12), - ("sep", 9), ("okt", 10), + ("januari", 1), + ("jun", 6), + ("mar", 3), + ("nov", 11), + ("jul", 7), + ("mei", 5), + ("juli", 7), + ("februari", 2), + ("agustus", 8), + ("sep", 9), + ("november", 11), ("apr", 4), + ("des", 12), + ("jan", 1), + ("april", 4), + ("feb", 2), + ("desember", 12), + ("juni", 6), + ("oktober", 10), + ("maret", 3), ], }, timeago_nd_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ - (0, 0), + (1, 8), + (3, 0), + (5, 3), ], entries: &[ + ("jumat", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("selasa", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("minggu lalu", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("kamis", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), ("ini", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("rabu", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("minggu", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("minggu ini", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("senin", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ("kemarin", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sabtu", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -3022,32 +3738,56 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 15467950696543387533, disps: &[ - (6, 0), - (0, 9), - (3, 7), + (3, 10), + (5, 5), + (11, 0), + (0, 20), + (1, 3), ], entries: &[ - ("apr", 4), - ("júl", 7), - ("feb", 2), - ("nóv", 11), - ("ágú", 8), - ("okt", 10), ("des", 12), + ("ágúst", 8), + ("mars", 3), + ("janúar", 1), + ("ágú", 8), + ("feb", 2), ("sep", 9), - ("mar", 3), - ("maí", 5), + ("apr", 4), + ("nóv", 11), + ("febrúar", 2), ("jan", 1), + ("apríl", 4), + ("október", 10), + ("desember", 12), + ("júní", 6), + ("júlí", 7), + ("nóvember", 11), + ("september", 9), + ("maí", 5), + ("okt", 10), ("jún", 6), + ("júl", 7), + ("mar", 3), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 0), + (6, 0), + (0, 6), + (8, 3), ], entries: &[ + ("laugardagur", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("föstudagur", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("í síðustu viku", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("dag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("í vikunni", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("þriðjudagur", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("fimmtudagur", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("mánudagur", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("miðvikudagur", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("sunnudagur", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ("gær", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, @@ -3126,35 +3866,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 7485420634051515786, + key: 5516568623150984925, disps: &[ - (0, 0), - (0, 2), - (3, 1), + (1, 13), + (4, 16), + (5, 2), + (9, 0), + (2, 0), ], entries: &[ - ("apr", 4), - ("set", 9), - ("mag", 5), - ("gen", 1), - ("lug", 7), - ("nov", 11), - ("feb", 2), - ("ott", 10), - ("mar", 3), - ("dic", 12), - ("ago", 8), ("giu", 6), + ("febbraio", 2), + ("marzo", 3), + ("set", 9), + ("ago", 8), + ("agosto", 8), + ("mar", 3), + ("gen", 1), + ("maggio", 5), + ("feb", 2), + ("nov", 11), + ("novembre", 11), + ("mag", 5), + ("apr", 4), + ("dicembre", 12), + ("lug", 7), + ("aprile", 4), + ("gennaio", 1), + ("dic", 12), + ("settembre", 9), + ("ottobre", 10), + ("ott", 10), + ("luglio", 7), + ("giugno", 6), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (3, 0), + (3, 0), + (2, 2), ], entries: &[ + ("domenica", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("martedì", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("giovedì", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("lunedì", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("venerdì", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("sabato", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("mercoledì", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("questa settimana", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ("ieri", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("oggi", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ultima settimana", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ], }, comma_decimal: true, @@ -3236,35 +4001,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 7485420634051515786, disps: &[ + (1, 12), + (3, 14), + (6, 3), (0, 0), - (6, 1), - (0, 3), + (4, 19), ], entries: &[ - ("ביולי", 7), - ("ביוני", 6), + ("דצמבר", 12), + ("יוני", 6), + ("ספטמבר", 9), ("במרץ", 3), - ("בספט׳", 9), - ("בינו׳", 1), ("באוג׳", 8), - ("במאי", 5), - ("בדצמ׳", 12), - ("באוק׳", 10), + ("ביולי", 7), + ("אפריל", 4), ("בנוב׳", 11), - ("באפר׳", 4), + ("בדצמ׳", 12), + ("מאי", 5), + ("ביוני", 6), + ("אוקטובר", 10), + ("פברואר", 2), + ("במאי", 5), ("בפבר׳", 2), + ("אוגוסט", 8), + ("מרץ", 3), + ("באוק׳", 10), + ("יולי", 7), + ("נובמבר", 11), + ("בספט׳", 9), + ("באפר׳", 4), + ("ינואר", 1), + ("בינו׳", 1), ], }, timeago_nd_tokens: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (0, 0), + (1, 1), + (2, 0), + (0, 6), ], entries: &[ - ("היום", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("שישי", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ("אתמול", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("שבת", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("בשבוע שעבר", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("השבוע", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("שלישי", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("היום", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("שני", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("רביעי", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("ראשון", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("חמישי", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -3332,11 +4122,22 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 0), + (0, 4), + (0, 3), + (4, 0), ], entries: &[ - ("本", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ("昨", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("土", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("水", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("先週", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("木", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("金", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("日", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("今週", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("本", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("火", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("月", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -3401,33 +4202,58 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 14108922650502679131, disps: &[ - (0, 5), - (1, 0), - (6, 5), + (4, 21), + (0, 0), + (2, 5), + (0, 20), + (2, 22), ], entries: &[ - ("თებ", 2), - ("აგვ", 8), - ("ნოე", 11), - ("აპრ", 4), - ("დეკ", 12), + ("თებერვალი", 2), ("სექ", 9), - ("ოქტ", 10), - ("ივნ", 6), - ("მაი", 5), + ("აპრ", 4), ("ივლ", 7), - ("იან", 1), + ("ივნისი", 6), + ("დეკემბერი", 12), + ("ნოემბერი", 11), + ("მარტი", 3), + ("იანვარი", 1), + ("სექტემბერი", 9), + ("ოქტ", 10), + ("აგვ", 8), + ("მაი", 5), + ("ოქტომბერი", 10), ("მარ", 3), + ("ივნ", 6), + ("იან", 1), + ("ივლისი", 7), + ("თებ", 2), + ("მაისი", 5), + ("ნოე", 11), + ("დეკ", 12), + ("აგვისტო", 8), + ("აპრილი", 4), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (0, 0), + (0, 6), + (9, 9), + (2, 0), ], entries: &[ + ("ორშაბათი", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("გასულ კვირაში", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("გუშინ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ოთხშაბათი", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ("დღეს", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("კვირა", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("სამშაბათი", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("პარასკევი", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("ამ კვირაში", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("ხუთშაბათი", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("შაბათი", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -3493,35 +4319,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { - key: 15467950696543387533, + key: 42584678569483946, disps: &[ - (3, 1), + (10, 8), + (0, 0), (1, 0), - (0, 6), + (3, 6), + (16, 1), ], entries: &[ - ("там", 8), - ("шіл", 7), - ("мау", 6), - ("мам", 5), - ("нау", 3), - ("қаз", 10), + ("маусым", 6), ("жел", 12), - ("ақп", 2), + ("ақпан", 2), + ("сәуір", 4), + ("мамыр", 5), + ("наурыз", 3), ("қар", 11), + ("желтоқсан", 12), + ("мам", 5), + ("тамыз", 8), + ("қыркүйек", 9), ("сәу", 4), - ("қыр", 9), + ("ақп", 2), + ("қаз", 10), + ("там", 8), + ("шілде", 7), ("қаң", 1), + ("қаңтар", 1), + ("шіл", 7), + ("қараша", 11), + ("мау", 6), + ("қыр", 9), + ("қазан", 10), + ("нау", 3), ], }, timeago_nd_tokens: ::phf::Map { - key: 15467950696543387533, + key: 10121458955350035957, disps: &[ - (0, 0), + (3, 0), + (2, 3), + (2, 2), ], entries: &[ + ("сәрсенбі", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ("кеше", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("жексенбі", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("осы аптада", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("сенбі", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), ("бүгін", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("жұма", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("бейсенбі", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("дүйсенбі", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("өткен аптада", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("сейсенбі", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -3607,11 +4458,24 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ + (2, 2), (0, 0), + (4, 2), ], entries: &[ + ("ព\u{17bb}ធ", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("ចន\u{17d2}ទ", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ("បានធ\u{17d2}វើបច\u{17d2}ច\u{17bb}ប\u{17d2}បន\u{17d2}នភាពនៅថ\u{17d2}ងៃនេះ", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ស\u{17bb}ក\u{17d2}រ", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("អង\u{17d2}គារ", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ("បានធ\u{17d2}វើបច\u{17d2}ច\u{17bb}ប\u{17d2}បន\u{17d2}នភាពម\u{17d2}ស\u{17b7}លម\u{17b7}ញ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("អាទ\u{17b7}ត\u{17d2}យ", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("ម\u{17d2}ស\u{17b7}លម\u{17b7}ញ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ព\u{17d2}រហស\u{17d2}បត\u{17b7}\u{17cd}", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("សៅរ\u{17cd}", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("សប\u{17d2}ដាហ\u{17cd}ម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("សប\u{17d2}ដាហ\u{17cd}នេះ", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("ថ\u{17d2}ងៃនេះ", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: true, @@ -3685,35 +4549,52 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (3, 0), + (0, 3), + (2, 2), (5, 2), - (2, 6), + (4, 0), ], entries: &[ - ("ಮಾರ\u{ccd}ಚ\u{ccd}", 3), - ("ಡ\u{cbf}ಸ\u{cc6}ಂ", 12), - ("ನವ\u{cc6}ಂ", 11), + ("ಅಕ\u{ccd}ಟ\u{ccb}", 10), + ("ಅಕ\u{ccd}ಟ\u{ccb}ಬರ\u{ccd}", 10), + ("ಜುಲ\u{cc8}", 7), + ("ನವ\u{cc6}ಂಬರ\u{ccd}", 11), ("ಫ\u{cc6}ಬ\u{ccd}ರವರ\u{cbf}", 2), - ("ಜ\u{cc2}ನ\u{ccd}", 6), - ("ಮೇ", 5), - ("ಜನವರ\u{cbf}", 1), - ("ಅಕ\u{ccd}ಟೋ", 10), - ("ಏಪ\u{ccd}ರ\u{cbf}", 4), - ("ಆಗಸ\u{ccd}ಟ\u{ccd}", 8), - ("ಜುಲೈ", 7), ("ಸ\u{cc6}ಪ\u{ccd}ಟ\u{cc6}ಂ", 9), + ("ಜ\u{cc2}ನ\u{ccd}", 6), + ("ಮ\u{cc7}", 5), + ("ನವ\u{cc6}ಂ", 11), + ("ಡ\u{cbf}ಸ\u{cc6}ಂಬರ\u{ccd}", 12), + ("ಸ\u{cc6}ಪ\u{ccd}ಟ\u{cc6}ಂಬರ\u{ccd}", 9), + ("ಡ\u{cbf}ಸ\u{cc6}ಂ", 12), + ("ಮಾರ\u{ccd}ಚ\u{ccd}", 3), + ("ಜನವರ\u{cbf}", 1), + ("ಏಪ\u{ccd}ರ\u{cbf}", 4), + ("ಏಪ\u{ccd}ರ\u{cbf}ಲ\u{ccd}", 4), + ("ಆಗಸ\u{ccd}ಟ\u{ccd}", 8), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 0), + (5, 2), + (1, 1), + (0, 0), ], entries: &[ ("ಇಂದು", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ಸ\u{ccb}ಮವಾರ", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("ಶನ\u{cbf}ವಾರ", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("ಕಳ\u{cc6}ದ ವಾರ", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("ಈ ವಾರ", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("ಬುಧವಾರ", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("ಮಂಗಳವಾರ", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ("ನ\u{cbf}ನ\u{ccd}ನ\u{cc6}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ಗುರುವಾರ", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("ಶುಕ\u{ccd}ರವಾರ", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("ಭಾನುವಾರ", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -3723,7 +4604,7 @@ pub(crate) fn entry(lang: Language) -> Entry { (0, 0), ], entries: &[ - ("ಕೋಟ\u{cbf}", 7), + ("ಕ\u{ccb}ಟ\u{cbf}", 7), ("ಲಕ\u{ccd}ಷ", 5), ], }, @@ -3733,7 +4614,7 @@ pub(crate) fn entry(lang: Language) -> Entry { (0, 0), ], entries: &[ - ("ವೀಕ\u{ccd}ಷಣ\u{cc6}ಗಳ\u{cbf}ಲ\u{ccd}ಲ", 0), + ("ವ\u{cc0}ಕ\u{ccd}ಷಣ\u{cc6}ಗಳ\u{cbf}ಲ\u{ccd}ಲ", 0), ], }, album_types: ::phf::Map { @@ -3742,9 +4623,9 @@ pub(crate) fn entry(lang: Language) -> Entry { (2, 0), ], entries: &[ - ("ಆಡ\u{cbf}ಯೋಬುಕ\u{ccd}", AlbumType::Audiobook), - ("ಶೋ", AlbumType::Show), - ("ಒಂದೇ", AlbumType::Single), + ("ಆಡ\u{cbf}ಯ\u{ccb}ಬುಕ\u{ccd}", AlbumType::Audiobook), + ("ಶ\u{ccb}", AlbumType::Show), + ("ಒಂದ\u{cc7}", AlbumType::Single), ("ep", AlbumType::Ep), ("ಆಲ\u{ccd}ಬಮ\u{ccd}", AlbumType::Album), ], @@ -3781,10 +4662,21 @@ pub(crate) fn entry(lang: Language) -> Entry { key: 12913932095322966823, disps: &[ (0, 0), + (0, 1), + (3, 1), ], entries: &[ - ("어제", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("오늘", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("일요일", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("이번 주", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("수요일", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("금요일", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("목요일", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("월요일", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("화요일", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("어제", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("토요일", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("지난주", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ], }, comma_decimal: false, @@ -3846,35 +4738,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { - key: 14108922650502679131, + key: 8694567506910003252, disps: &[ - (0, 3), - (6, 10), - (2, 0), + (3, 2), + (10, 3), + (3, 0), + (18, 14), + (0, 2), ], entries: &[ + ("октябрь", 10), + ("сен", 9), ("май", 5), - ("фев", 2), - ("янв", 1), ("ноя", 11), ("июн", 6), + ("янв", 1), ("авг", 8), - ("сен", 9), + ("март", 3), ("дек", 12), - ("мар", 3), + ("апрель", 4), ("окт", 10), - ("апр", 4), + ("сентябрь", 9), + ("июль", 7), ("июл", 7), + ("ноябрь", 11), + ("фев", 2), + ("июнь", 6), + ("февраль", 2), + ("декабрь", 12), + ("август", 8), + ("январь", 1), + ("апр", 4), + ("мар", 3), ], }, timeago_nd_tokens: ::phf::Map { - key: 15467950696543387533, + key: 10121458955350035957, disps: &[ - (0, 0), + (1, 0), + (0, 3), + (6, 6), ], entries: &[ + ("бейшемби", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("жума", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ("кечээ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ушул аптадагы", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("жекшемби", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("шейшемби", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("бүгүнкү", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ("бүгүн", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("өткөн аптадагы", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("ишемби", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("шаршемби", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("дүйшөмбү", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -3941,35 +4858,62 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 106375038446233661, + key: 7485420634051515786, disps: &[ - (1, 0), - (5, 9), - (2, 0), + (2, 3), + (3, 11), + (21, 18), + (0, 8), + (3, 0), ], entries: &[ + ("ມກ", 1), ("ມນ", 3), - ("ກຍ", 9), + ("ເມສາ", 4), + ("ມສ", 4), + ("ທວ", 12), + ("ກພ", 2), + ("ສຫ", 8), + ("ກ\u{ecd}ລະກ\u{ebb}ດ", 7), + ("ມ\u{eb5}ນາ", 3), + ("ພຈ", 11), + ("ສ\u{eb4}ງຫາ", 8), + ("ມ\u{eb4}ຖ\u{eb8}ນາ", 6), + ("ກລ", 7), + ("ພ\u{eb6}ດສະພາ", 5), + ("ຕລ", 10), + ("ຕ\u{eb8}ລາ", 10), ("ມ\u{eb4}ຖ", 6), ("ພພ", 5), - ("ກລ", 7), - ("ມກ", 1), - ("ມສ", 4), - ("ສຫ", 8), - ("ກພ", 2), - ("ພຈ", 11), - ("ທວ", 12), - ("ຕລ", 10), + ("ກຍ", 9), + ("ກ\u{eb1}ນຍາ", 9), + ("ມ\u{eb1}ງກອນ", 1), + ("ພະຈ\u{eb4}ກ", 11), + ("ກ\u{eb8}ມພາ", 2), + ("ທ\u{eb1}ນວາ", 12), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (1, 0), + (10, 0), + (1, 1), + (2, 0), ], entries: &[ - ("ອ\u{eb1}ບເດດມ\u{eb7}\u{ec9}ນ\u{eb5}\u{ec9}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ວ\u{eb1}ນພະຫ\u{eb1}ດ", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), ("ອ\u{eb1}ດເດດມ\u{eb7}\u{ec9}ວານນ\u{eb5}\u{ec9}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ວ\u{eb1}ນສ\u{eb8}ກ", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("ວ\u{eb1}ນອ\u{eb1}ງຄານ", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("ວ\u{eb1}ນອາທ\u{eb4}ດ", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("ມ\u{eb7}\u{ec9}ວານນ\u{eb5}\u{ec9}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ມ\u{eb7}\u{ec9}ນ\u{eb5}\u{ec9}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ວ\u{eb1}ນຈ\u{eb1}ນ", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("ອາທ\u{eb4}ດຜ\u{ec8}ານມາ", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("ວ\u{eb1}ນເສ\u{ebb}າ", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("ອາທ\u{eb4}ດນ\u{eb5}\u{ec9}", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("ອ\u{eb1}ບເດດມ\u{eb7}\u{ec9}ນ\u{eb5}\u{ec9}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ວ\u{eb1}ນພ\u{eb8}ດ", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -4064,18 +5008,44 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 12913932095322966823, disps: &[ + (1, 9), + (0, 0), + (6, 5), ], entries: &[ + ("spalis", 10), + ("vasaris", 2), + ("liepa", 7), + ("rugpjūtis", 8), + ("gruodis", 12), + ("rugsėjis", 9), + ("balandis", 4), + ("birželis", 6), + ("sausis", 1), + ("gegužė", 5), + ("lapkritis", 11), + ("kovas", 3), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (0, 0), + (9, 2), + (0, 7), + (4, 0), ], entries: &[ + ("šeštadienis", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("praėjusią savaitę", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("šiandien", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("trečiadienis", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("sekmadienis", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("penktadienis", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("pirmadienis", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("šią savaitę", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("ketvirtadienis", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), ("vakar", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("antradienis", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -4155,35 +5125,58 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (3, 11), - (0, 6), (0, 0), + (3, 18), + (0, 1), + (15, 18), + (1, 18), ], entries: &[ - ("sept", 9), - ("marts", 3), + ("jūnijs", 6), ("febr", 2), + ("janvāris", 1), + ("februāris", 2), + ("aug", 8), + ("jūl", 7), + ("oktobris", 10), + ("marts", 3), + ("apr", 4), + ("okt", 10), + ("decembris", 12), + ("jūlijs", 7), + ("sept", 9), + ("augusts", 8), + ("janv", 1), + ("nov", 11), + ("novembris", 11), ("jūn", 6), ("dec", 12), - ("nov", 11), - ("apr", 4), - ("jūl", 7), + ("septembris", 9), ("maijs", 5), - ("janv", 1), - ("aug", 8), - ("okt", 10), + ("aprīlis", 4), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ + (3, 5), (0, 0), + (0, 7), ], entries: &[ - ("šodien", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("iepriekšējā nedēļā", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("vakar", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("otrdiena", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("pirmdiena", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("sestdiena", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("ceturtdiena", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("piektdiena", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("svētdiena", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("šodien", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("trešdiena", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("šajā nedēļā", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ], }, comma_decimal: true, @@ -4256,18 +5249,44 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 12913932095322966823, disps: &[ + (5, 0), + (4, 10), + (0, 10), ], entries: &[ + ("ноември", 11), + ("март", 3), + ("декември", 12), + ("октомври", 10), + ("мај", 5), + ("јуни", 6), + ("август", 8), + ("април", 4), + ("јануари", 1), + ("јули", 7), + ("септември", 9), + ("февруари", 2), ], }, timeago_nd_tokens: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (0, 0), + (2, 0), + (0, 7), + (3, 4), ], entries: &[ ("вчера", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("оваа седмица", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("сабота", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("четврток", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("вторник", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("минатата недела", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("петок", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ("денес", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("понеделник", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("среда", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("недела", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -4330,35 +5349,57 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (10, 0), - (1, 11), + (0, 10), (1, 6), + (1, 14), + (6, 0), + (0, 2), ], entries: &[ - ("ഫെബ\u{d4d}ര\u{d41}", 2), - ("മേയ\u{d4d}", 5), + ("ജ\u{d42}ൺ", 6), + ("സെപ\u{d4d}റ\u{d4d}റം", 9), + ("മ\u{d3e}ർച\u{d4d}ച\u{d4d}", 3), + ("ഒക\u{d4d}\u{200c}ടോബർ", 10), + ("ഡിസംബർ", 12), ("ഓഗ", 8), - ("ഒക\u{d4d}ടോ", 10), + ("ഡിസം", 12), + ("സെപ\u{d4d}റ\u{d4d}റംബർ", 9), + ("നവംബർ", 11), + ("ജന\u{d41}", 1), + ("ഏപ\u{d4d}രിൽ", 4), + ("ഓഗസ\u{d4d}റ\u{d4d}റ\u{d4d}", 8), ("ജ\u{d42}ലൈ", 7), ("മ\u{d3e}ർ", 3), - ("ഏപ\u{d4d}രി", 4), - ("ജന\u{d41}", 1), - ("ജ\u{d42}ൺ", 6), ("നവം", 11), - ("സെപ\u{d4d}റ\u{d4d}റം", 9), - ("ഡിസം", 12), + ("ഫെബ\u{d4d}ര\u{d41}", 2), + ("മേയ\u{d4d}", 5), + ("ഏപ\u{d4d}രി", 4), + ("ജന\u{d41}വരി", 1), + ("ഒക\u{d4d}ടോ", 10), + ("ഫെബ\u{d4d}ര\u{d41}വരി", 2), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (0, 2), + (1, 0), + (10, 4), ], entries: &[ - ("ഇന\u{d4d}ന\u{d4d}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("വെള\u{d4d}ളിയ\u{d3e}ഴ\u{d4d}\u{200c}ച", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("കഴിഞ\u{d4d}ഞ ആഴ\u{d4d}ച", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("തിങ\u{d4d}കള\u{d3e}ഴ\u{d4d}\u{200c}ച", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("ചൊവ\u{d4d}വ\u{d3e}ഴ\u{d4d}\u{200c}ച", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("ശനിയ\u{d3e}ഴ\u{d4d}\u{200c}ച", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("ഈ ആഴ\u{d4d}\u{200c}ച", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("ഞ\u{d3e}യറ\u{d3e}ഴ\u{d4d}\u{200c}ച", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ("ഇന\u{d4d}നലെ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ബ\u{d41}ധന\u{d3e}ഴ\u{d4d}\u{200c}ച", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("ഇന\u{d4d}ന\u{d4d}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("വ\u{d4d}യ\u{d3e}ഴ\u{d3e}ഴ\u{d4d}\u{200c}ച", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -4423,20 +5464,43 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], months: ::phf::Map { - key: 12913932095322966823, + key: 14108922650502679131, disps: &[ + (5, 0), + (2, 9), ], entries: &[ + ("наймдугаар", 8), + ("есдүгээр", 9), + ("долоодугаар", 7), + ("тавдугаар", 5), + ("аравдугаар", 10), + ("хоёрдугаар", 12), + ("дөрөвдүгээр", 4), + ("зургаадугаар", 6), + ("нэгдүгээр", 11), + ("гуравдугаар", 3), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 0), + (8, 0), + (1, 6), + (0, 8), ], entries: &[ + ("баасан", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ("өнөөдөр", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("даваа", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("энэ долоо хоног", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("ням", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("өнгөрсөн долоо хоног", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("өчигдөр", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("лхагва", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("бямба", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("пүрэв", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("мягмар", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -4512,34 +5576,54 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 15467950696543387533, disps: &[ - (2, 4), - (0, 0), - (10, 10), + (2, 2), + (0, 14), + (6, 0), + (1, 14), ], entries: &[ - ("जान\u{947},", 1), - ("ऑक\u{94d}टो,", 10), - ("मार\u{94d}च,", 3), - ("ज\u{941}ल\u{948},", 7), - ("एप\u{94d}रि,", 4), - ("नोव\u{94d}ह\u{947}\u{902},", 11), - ("ज\u{942}न,", 6), - ("ऑग,", 8), - ("म\u{947},", 5), - ("सप\u{94d}ट\u{947}\u{902},", 9), - ("फ\u{947}ब\u{94d}र\u{941},", 2), - ("डिस\u{947}\u{902},", 12), + ("सप\u{94d}ट\u{947}\u{902}", 9), + ("नोव\u{94d}ह\u{947}\u{902}", 11), + ("एप\u{94d}रिल", 4), + ("ऑगस\u{94d}ट", 8), + ("डिस\u{947}\u{902}", 12), + ("ऑक\u{94d}टोबर", 10), + ("फ\u{947}ब\u{94d}र\u{941}", 2), + ("नोव\u{94d}ह\u{947}\u{902}बर", 11), + ("ज\u{941}ल\u{948}", 7), + ("एप\u{94d}रि", 4), + ("सप\u{94d}ट\u{947}\u{902}बर", 9), + ("जान\u{947}", 1), + ("मार\u{94d}च", 3), + ("फ\u{947}ब\u{94d}र\u{941}वारी", 2), + ("ज\u{942}न", 6), + ("ऑक\u{94d}टो", 10), + ("म\u{947}", 5), + ("डिस\u{947}\u{902}बर", 12), + ("ऑग", 8), + ("जान\u{947}वारी", 1), ], }, timeago_nd_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ + (1, 8), + (8, 3), (0, 0), ], entries: &[ - ("आज", TaToken { n: 0, unit: Some(TimeUnit::Day) }), - ("today", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("म\u{902}गळवार", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("ग\u{941}र\u{941}वार", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), ("काल", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("today", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("या आठवड\u{94d}यात", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("श\u{941}क\u{94d}रवार", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("आज", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("मागील आठवड\u{94d}यात", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("ब\u{941}धवार", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("रविवार", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("सोमवार", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("शनिवार", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -4604,35 +5688,57 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (2, 1), - (3, 3), + (2, 17), + (15, 4), + (0, 7), (0, 0), + (0, 11), ], entries: &[ - ("jan", 1), - ("sep", 9), + ("feb", 2), + ("dis", 12), + ("november", 11), + ("september", 9), ("mac", 3), + ("januari", 1), + ("sep", 9), + ("julai", 7), ("jun", 6), + ("ogos", 8), + ("februari", 2), + ("okt", 10), + ("jul", 7), + ("disember", 12), + ("apr", 4), + ("jan", 1), + ("oktober", 10), + ("ogo", 8), + ("april", 4), ("mei", 5), ("nov", 11), - ("apr", 4), - ("feb", 2), - ("ogo", 8), - ("jul", 7), - ("dis", 12), - ("okt", 10), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (0, 0), + (0, 10), + (4, 0), + (5, 9), ], entries: &[ - ("semalam", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ahad", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ("ini", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("minggu ini", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("rabu", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("sabtu", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("minggu lepas", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("semalam", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("selasa", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("khamis", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("jumaat", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("isnin", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -4695,33 +5801,55 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 7485420634051515786, disps: &[ - (1, 2), - (5, 4), - (0, 0), + (6, 18), + (0, 18), + (7, 20), + (2, 0), + (2, 14), ], entries: &[ - ("မေ", 5), - ("ဩ", 8), - ("ဇ\u{103d}န\u{103a}", 6), - ("ဒ\u{102e}", 12), - ("စက\u{103a}", 9), - ("မတ\u{103a}", 3), - ("ဇန\u{103a}", 1), - ("ဇ\u{1030}", 7), - ("အောက\u{103a}", 10), ("န\u{102d}\u{102f}", 11), - ("ဖေ", 2), ("ဧ", 4), + ("ဒ\u{102e}ဇင\u{103a}ဘာ", 12), + ("စက\u{103a}တင\u{103a}ဘာ", 9), + ("ဇ\u{1030}လ\u{102d}\u{102f}င\u{103a}", 7), + ("ဇ\u{103d}န\u{103a}", 6), + ("ဖေ", 2), + ("ဧပြ\u{102e}", 4), + ("စက\u{103a}", 9), + ("ဒ\u{102e}", 12), + ("ဇန\u{103a}", 1), + ("န\u{102d}\u{102f}ဝင\u{103a}ဘာ", 11), + ("မတ\u{103a}", 3), + ("ဩဂ\u{102f}တ\u{103a}", 8), + ("ဩ", 8), + ("ဇန\u{103a}နဝါရ\u{102e}", 1), + ("အောက\u{103a}တ\u{102d}\u{102f}ဘာ", 10), + ("မေ", 5), + ("ဖေဖော\u{103a}ဝါရ\u{102e}", 2), + ("အောက\u{103a}", 10), + ("ဇ\u{1030}", 7), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ (0, 0), + (0, 0), + (5, 9), ], entries: &[ + ("တနင\u{103a}\u{1039}လာ", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("ကြာသပတေး", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("တနင\u{103a}\u{1039}ဂန\u{103d}ေ", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("စနေ", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), ("ယနေ\u{1037}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ဗ\u{102f}ဒ\u{1039}ဓဟ\u{1030}း", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("သောကြာ", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("အင\u{103a}\u{1039}ဂါ", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ("မနေ\u{1037}က", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ယခ\u{102f}အပတ\u{103a}", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("ယခင\u{103a}အပတ\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ], }, comma_decimal: false, @@ -4808,13 +5936,24 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, timeago_nd_tokens: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (1, 0), + (0, 4), + (7, 0), + (2, 9), ], entries: &[ + ("सोमबार", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("पछिल\u{94d}लो हप\u{94d}ता", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("यस हप\u{94d}ता", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("मङ\u{94d}गलबार", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("श\u{941}क\u{94d}रबार", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ("आज", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ब\u{941}धबार", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ("हिजो", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("बिहिबार", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("शनिबार", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("आइतबार", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -4883,35 +6022,59 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 7485420634051515786, disps: &[ - (7, 0), - (0, 6), - (0, 0), + (1, 18), + (12, 5), + (15, 21), + (5, 0), + (5, 16), ], entries: &[ - ("feb", 2), - ("sep", 9), ("mrt", 3), - ("jun", 6), - ("mei", 5), - ("nov", 11), - ("apr", 4), - ("aug", 8), - ("jul", 7), ("dec", 12), - ("jan", 1), + ("januari", 1), + ("feb", 2), + ("jul", 7), + ("juli", 7), + ("aug", 8), + ("november", 11), + ("maart", 3), + ("apr", 4), + ("juni", 6), + ("december", 12), + ("jun", 6), + ("april", 4), + ("nov", 11), + ("oktober", 10), + ("september", 9), + ("sep", 9), ("okt", 10), + ("augustus", 8), + ("februari", 2), + ("jan", 1), + ("mei", 5), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ (0, 0), + (3, 2), + (5, 10), ], entries: &[ - ("gisteren", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("afgelopen week", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("vandaag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("donderdag", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("vrijdag", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("maandag", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("zondag", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("woensdag", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("zaterdag", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("deze week", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("dinsdag", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("gisteren", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: true, @@ -4984,38 +6147,59 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 1937371814602216758, + key: 12913932095322966823, disps: &[ - (14, 0), - (10, 3), - (1, 8), + (0, 0), + (2, 3), + (0, 11), + (0, 17), + (7, 0), ], entries: &[ - ("jan", 1), + ("mai", 5), + ("september", 9), + ("nov", 11), + ("januar", 1), + ("november", 11), + ("desember", 12), ("mar", 3), - ("apr", 4), - ("jul", 7), - ("des", 12), - ("juli", 7), - ("okt", 10), - ("mars", 3), ("juni", 6), + ("jul", 7), + ("oktober", 10), + ("aug", 8), + ("mars", 3), + ("april", 4), + ("februar", 2), + ("apr", 4), + ("jan", 1), ("jun", 6), ("feb", 2), - ("aug", 8), - ("nov", 11), + ("des", 12), + ("juli", 7), + ("august", 8), ("sep", 9), - ("mai", 5), + ("okt", 10), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 0), + (0, 2), + (2, 0), + (8, 8), ], entries: &[ - ("dag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ("går", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("mandag", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("lørdag", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("torsdag", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("fredag", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("søndag", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("tirsdag", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("onsdag", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("forrige uke", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("dag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("denne uken", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ], }, comma_decimal: true, @@ -5106,11 +6290,22 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 0), + (4, 0), + (0, 8), + (1, 2), ], entries: &[ + ("ମଙ\u{b4d}ଗଳବ\u{b3e}ର", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("ଏହ\u{b3f} ସପ\u{b4d}ତ\u{b3e}ହ", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("ଗତ ସପ\u{b4d}ତ\u{b3e}ହ", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("ଶ\u{b41}କ\u{b4d}ରବ\u{b3e}ର", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("ରବ\u{b3f}ବ\u{b3e}ର", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ("ଆଜ\u{b3f}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ଗ\u{b41}ର\u{b41}ବ\u{b3e}ର", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("ସୋମବ\u{b3e}ର", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ("ଗତକ\u{b3e}ଲ\u{b3f}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ଶନ\u{b3f}ବ\u{b3e}ର", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("ବ\u{b41}ଧବ\u{b3e}ର", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -5179,35 +6374,57 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 8694567506910003252, + key: 7485420634051515786, disps: &[ - (1, 0), - (0, 0), - (0, 6), + (0, 5), + (0, 15), + (3, 0), + (4, 20), + (12, 7), ], entries: &[ - ("ਮਾਰਚ", 3), - ("ਜ\u{a42}ਨ", 6), - ("ਜਨ", 1), + ("ਅਗਸਤ", 8), + ("ਜ\u{a41}ਲਾ", 7), + ("ਅਪ\u{a4d}ਰ\u{a48}ਲ", 4), + ("ਨਵ\u{a70}ਬਰ", 11), + ("ਮਈ", 5), + ("ਸਤ\u{a70}ਬਰ", 9), + ("ਅਪ\u{a4d}ਰ\u{a48}", 4), ("ਨਵ\u{a70}", 11), ("ਦਸ\u{a70}", 12), - ("ਅਪ\u{a4d}ਰ\u{a48}", 4), - ("ਮਈ", 5), - ("ਜ\u{a41}ਲਾ", 7), + ("ਜਨਵਰੀ", 1), + ("ਜ\u{a42}ਨ", 6), + ("ਮਾਰਚ", 3), + ("ਦਸ\u{a70}ਬਰ", 12), + ("ਸਤ\u{a70}", 9), ("ਫ\u{a3c}ਰ", 2), ("ਅਗ", 8), - ("ਸਤ\u{a70}", 9), + ("ਅਕਤ\u{a42}ਬਰ", 10), + ("ਜਨ", 1), + ("ਫ\u{a3c}ਰਵਰੀ", 2), ("ਅਕਤ\u{a42}", 10), + ("ਜ\u{a41}ਲਾਈ", 7), ], }, timeago_nd_tokens: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (1, 0), + (2, 6), + (2, 0), + (0, 6), ], entries: &[ - ("ਅ\u{a71}ਜ", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ਮ\u{a70}ਗਲਵਾਰ", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("ਸ\u{a3c}\u{a41}\u{a71}ਕਰਵਾਰ", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ("ਕ\u{a71}ਲ\u{a4d}ਹ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ਅ\u{a71}ਜ", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ਬ\u{a41}\u{a71}ਧਵਾਰ", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("ਐਤਵਾਰ", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("ਪਿਛਲ\u{a47} ਹਫ\u{a3c}ਤ\u{a47}", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("ਸ\u{a4b}ਮਵਾਰ", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("ਵੀਰਵਾਰ", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("ਸ\u{a3c}ਨਿ\u{a71}ਚਰਵਾਰ", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("ਇਸ ਹਫ\u{a3c}ਤ\u{a47}", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ], }, comma_decimal: false, @@ -5297,35 +6514,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (1, 4), - (10, 8), - (2, 0), + (1, 7), + (1, 8), + (4, 0), + (1, 7), + (13, 13), ], entries: &[ - ("lis", 11), - ("sty", 1), - ("wrz", 9), - ("lip", 7), + ("lipiec", 7), + ("kwiecień", 4), + ("grudzień", 12), + ("luty", 2), + ("sierpień", 8), + ("styczeń", 1), ("lut", 2), + ("czerwiec", 6), + ("kwi", 4), + ("wrzesień", 9), + ("lip", 7), ("paź", 10), + ("maj", 5), + ("październik", 10), + ("mar", 3), + ("wrz", 9), + ("marzec", 3), ("cze", 6), ("gru", 12), + ("sty", 1), + ("listopad", 11), + ("lis", 11), ("sie", 8), - ("maj", 5), - ("kwi", 4), - ("mar", 3), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 8694567506910003252, disps: &[ + (6, 8), + (0, 8), (0, 0), ], entries: &[ + ("sobota", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("poniedziałek", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("piątek", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("niedziela", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("w\u{a0}tym tygodniu", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ("dzisiaj", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("wtorek", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("w zeszłym tygodniu", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("wczoraj", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("czwartek", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("środa", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("dziś", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: true, @@ -5398,34 +6640,59 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 7485420634051515786, disps: &[ - (1, 0), - (0, 3), - (3, 8), + (2, 9), + (16, 21), + (1, 1), + (4, 0), + (5, 4), ], entries: &[ - ("jan", 1), - ("out", 10), - ("nov", 11), ("dez", 12), - ("set", 9), - ("jul", 7), - ("fev", 2), - ("mar", 3), ("abr", 4), - ("mai", 5), - ("jun", 6), + ("novembro", 11), + ("mar", 3), ("ago", 8), + ("fev", 2), + ("dezembro", 12), + ("jun", 6), + ("mai", 5), + ("outubro", 10), + ("março", 3), + ("set", 9), + ("jan", 1), + ("julho", 7), + ("junho", 6), + ("nov", 11), + ("setembro", 9), + ("janeiro", 1), + ("out", 10), + ("abril", 4), + ("jul", 7), + ("maio", 5), + ("agosto", 8), + ("fevereiro", 2), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 0), + (6, 3), + (2, 0), + (4, 3), ], entries: &[ + ("quarta feira", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("terça feira", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("esta semana", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("sábado", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("sexta feira", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ("hoje", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("domingo", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("segunda feira", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("quinta feira", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("semana passada", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("ontem", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, @@ -5498,19 +6765,45 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ + (1, 5), + (0, 6), + (6, 0), ], entries: &[ + ("setembro", 9), + ("julho", 7), + ("março", 3), + ("novembro", 11), + ("janeiro", 1), + ("maio", 5), + ("fevereiro", 2), + ("outubro", 10), + ("abril", 4), + ("dezembro", 12), + ("agosto", 8), + ("junho", 6), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 0), + (6, 3), + (2, 0), + (1, 4), ], entries: &[ + ("quarta feira", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("segunda feira", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("esta semana", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("sábado", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("sexta feira", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ("hoje", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("domingo", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("a semana passada", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("quinta feira", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("terça feira", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ("ontem", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, @@ -5582,35 +6875,59 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 10121458955350035957, + key: 15467950696543387533, disps: &[ - (10, 3), - (1, 7), - (1, 0), + (0, 22), + (8, 3), + (2, 0), + (13, 8), + (2, 18), ], entries: &[ + ("martie", 3), + ("ianuarie", 1), + ("noiembrie", 11), + ("aprilie", 4), + ("sept", 9), + ("octombrie", 10), + ("aug", 8), ("iul", 7), - ("oct", 10), - ("apr", 4), + ("august", 8), + ("ian", 1), + ("iun", 6), ("dec", 12), - ("mai", 5), + ("apr", 4), ("feb", 2), ("mar", 3), + ("mai", 5), + ("februarie", 2), + ("iulie", 7), + ("septembrie", 9), + ("iunie", 6), + ("decembrie", 12), ("nov", 11), - ("sept", 9), - ("iun", 6), - ("aug", 8), - ("ian", 1), + ("oct", 10), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 0), + (0, 5), + (0, 0), + (9, 7), ], entries: &[ - ("astăzi", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("miercuri", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("marți", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ("ieri", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("săptămâna trecută", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("astăzi", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("luni", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("săptămâna aceasta", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("vineri", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("duminică", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("joi", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("sâmbătă", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -5699,35 +7016,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 8694567506910003252, + key: 12913932095322966823, disps: &[ - (1, 9), - (7, 3), - (1, 0), + (0, 15), + (7, 22), + (9, 18), + (4, 6), + (2, 0), ], entries: &[ - ("янв", 1), - ("сент", 9), - ("авг", 8), - ("июн", 6), - ("мая", 5), - ("апр", 4), + ("нояб", 11), + ("июнь", 6), ("февр", 2), + ("январь", 1), + ("июн", 6), + ("май", 5), + ("ноябрь", 11), + ("апр", 4), + ("сентябрь", 9), + ("мая", 5), + ("янв", 1), + ("март", 3), + ("октябрь", 10), + ("авг", 8), + ("апрель", 4), ("дек", 12), + ("август", 8), + ("декабрь", 12), + ("июль", 7), + ("февраль", 2), + ("мар", 3), + ("сент", 9), ("окт", 10), ("июл", 7), - ("нояб", 11), - ("мар", 3), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (0, 0), + (1, 3), + (3, 7), + (4, 0), ], entries: &[ - ("сегодня", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("на этой неделе", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("четверг", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), ("вчера", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("вторник", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("пятница", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("понедельник", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("воскресенье", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("среда", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("суббота", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("на прошлой неделе", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("сегодня", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: true, @@ -5788,33 +7130,52 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 2), - (0, 0), - (0, 6), + (11, 13), + (13, 13), + (9, 0), + (10, 0), ], entries: &[ + ("ජනව\u{dcf}ර\u{dd2}", 1), + ("ජ\u{dd6}න\u{dd2}", 6), + ("පෙබරව\u{dcf}ර\u{dd2}", 2), + ("ඔක\u{dca}", 10), ("නොවැ", 11), - ("මැය\u{dd2}", 5), + ("දෙසැ", 12), + ("ජ\u{dd6}ල\u{dd2}", 7), + ("නොවැම\u{dca}බර\u{dca}", 11), + ("සැප\u{dca}තැම\u{dca}බර\u{dca}", 9), + ("දෙසැම\u{dca}බර\u{dca}", 12), + ("ජන", 1), + ("ම\u{dcf}ර\u{dca}ත\u{dd4}", 3), ("සැප\u{dca}", 9), ("අගෝ", 8), - ("ම\u{dcf}ර\u{dca}ත\u{dd4}", 3), - ("ජ\u{dd6}ල\u{dd2}", 7), - ("ඔක\u{dca}", 10), - ("පෙබ", 2), - ("ජන", 1), - ("දෙසැ", 12), - ("ජ\u{dd6}න\u{dd2}", 6), + ("මැය\u{dd2}", 5), + ("ඔක\u{dca}තෝබර\u{dca}", 10), ("අප\u{dca}\u{200d}රේල\u{dca}", 4), + ("පෙබ", 2), + ("අගෝස\u{dca}ත\u{dd4}", 8), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ (0, 0), + (0, 6), + (1, 0), ], entries: &[ - ("අද", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("මෙම සත\u{dd2}ය", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ("ඊයේ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("පස\u{dd4}ග\u{dd2}ය සත\u{dd2}ය", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("ඉර\u{dd2}ද\u{dcf}", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("බ\u{dca}\u{200d}රහස\u{dca}පත\u{dd2}න\u{dca}ද\u{dcf}", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("සඳ\u{dd4}ද\u{dcf}", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("අද", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("අඟහර\u{dd4}ව\u{dcf}ද\u{dcf}", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("බද\u{dcf}ද\u{dcf}", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("සෙනස\u{dd4}ර\u{dcf}ද\u{dcf}", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("ස\u{dd2}ක\u{dd4}ර\u{dcf}ද\u{dcf}", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -5902,20 +7263,46 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ + (1, 0), + (3, 5), + (1, 0), ], entries: &[ + ("jún", 6), + ("október", 10), + ("august", 8), + ("marec", 3), + ("december", 12), + ("november", 11), + ("máj", 5), + ("apríl", 4), + ("september", 9), + ("júl", 7), + ("február", 2), + ("január", 1), ], }, timeago_nd_tokens: ::phf::Map { - key: 10121458955350035957, + key: 12913932095322966823, disps: &[ - (0, 0), + (0, 4), + (0, 7), + (4, 0), ], entries: &[ - ("včera", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("piatok", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), ("dnes", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("utorok", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("minulý týždeň", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("pondelok", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("štvrtok", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("včera", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("nedeľa", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("sobota", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("streda", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("tento týždeň", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ], }, comma_decimal: true, @@ -6011,33 +7398,57 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 15467950696543387533, disps: &[ - (3, 0), - (3, 4), - (0, 11), + (1, 16), + (2, 12), + (0, 1), + (0, 0), + (7, 8), ], entries: &[ - ("apr", 4), - ("jan", 1), - ("jul", 7), - ("jun", 6), - ("maj", 5), - ("mar", 3), - ("nov", 11), + ("januar", 1), ("feb", 2), - ("sep", 9), + ("mar", 3), + ("avgust", 8), + ("maj", 5), + ("oktober", 10), ("dec", 12), + ("nov", 11), + ("junij", 6), + ("sep", 9), + ("november", 11), + ("apr", 4), + ("julij", 7), + ("jan", 1), + ("april", 4), ("avg", 8), + ("jul", 7), + ("marec", 3), + ("februar", 2), + ("jun", 6), + ("september", 9), + ("december", 12), ("okt", 10), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ + (0, 3), + (0, 8), (0, 0), ], entries: &[ ("danes", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ta teden", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("petek", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("ponedeljek", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("torek", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("nedelja", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ("včeraj", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sreda", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("četrtek", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("sobota", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("prejšnji teden", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ], }, comma_decimal: true, @@ -6102,24 +7513,37 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 7485420634051515786, + key: 12913932095322966823, disps: &[ - (1, 0), - (1, 1), - (6, 6), + (2, 6), + (0, 9), + (2, 6), + (16, 2), + (3, 0), ], entries: &[ - ("shk", 2), ("dhj", 12), - ("mar", 3), - ("sht", 9), + ("shkurt", 2), ("gush", 8), - ("pri", 4), - ("qer", 6), + ("qershor", 6), + ("prill", 4), ("korr", 7), - ("maj", 5), + ("korrik", 7), + ("shtator", 9), + ("shk", 2), ("tet", 10), + ("gusht", 8), + ("nëntor", 11), + ("maj", 5), + ("qer", 6), + ("mar", 3), ("nën", 11), + ("pri", 4), + ("sht", 9), + ("tetor", 10), + ("janar", 1), + ("mars", 3), + ("dhjetor", 12), ("jan", 1), ], }, @@ -6127,10 +7551,21 @@ pub(crate) fn entry(lang: Language) -> Entry { key: 12913932095322966823, disps: &[ (1, 0), + (3, 8), + (1, 7), ], entries: &[ ("dje", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("këtë javë", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("enjte", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("javën e kaluar", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("sot", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("premte", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("hënë", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("martë", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("diel", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("shtunë", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("mërkurë", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -6207,20 +7642,46 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, - disps: &[ - ], - entries: &[ - ], - }, - timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ + (2, 8), + (1, 0), (0, 0), ], entries: &[ - ("јуче", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("мај", 5), + ("јануар", 1), + ("август", 8), + ("март", 3), + ("фебруар", 2), + ("новембар", 11), + ("јун", 6), + ("октобар", 10), + ("април", 4), + ("децембар", 12), + ("јул", 7), + ("септембар", 9), + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (3, 10), + (0, 9), + (3, 0), + ], + entries: &[ ("данас", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("петак", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("субота", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("јуче", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("среда", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("ове недеље", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("понедељак", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("прошле недеље", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("уторак", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("четвртак", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("недеља", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -6297,20 +7758,46 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ + (1, 3), + (5, 11), + (0, 0), ], entries: &[ + ("decembar", 12), + ("april", 4), + ("februar", 2), + ("jul", 7), + ("novembar", 11), + ("maj", 5), + ("jun", 6), + ("avgust", 8), + ("januar", 1), + ("septembar", 9), + ("oktobar", 10), + ("mart", 3), ], }, timeago_nd_tokens: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ + (1, 3), + (10, 3), (1, 0), ], entries: &[ + ("sreda", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ("juče", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("prošle nedelje", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("petak", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("nedelja", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ("danas", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("utorak", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("ove nedelje", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("subota", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("ponedeljak", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("četvrtak", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -6383,35 +7870,55 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (0, 0), - (5, 5), - (4, 11), + (19, 6), + (2, 19), + (1, 0), + (10, 14), ], entries: &[ - ("sep", 9), - ("jan", 1), + ("januari", 1), ("okt", 10), - ("dec", 12), - ("nov", 11), - ("apr", 4), - ("feb", 2), - ("mars", 3), - ("aug", 8), ("juli", 7), + ("oktober", 10), + ("sep", 9), + ("mars", 3), + ("apr", 4), + ("april", 4), + ("feb", 2), ("maj", 5), + ("september", 9), + ("december", 12), + ("dec", 12), + ("augusti", 8), + ("februari", 2), + ("nov", 11), ("juni", 6), + ("november", 11), + ("aug", 8), + ("jan", 1), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (1, 0), + (2, 8), + (10, 3), + (4, 0), ], entries: &[ - ("dag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("tisdag", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("lördag", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("onsdag", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("måndag", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("söndag", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("förra veckan", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("går", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("dag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("den här veckan", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("fredag", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("torsdag", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -6471,35 +7978,59 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (4, 0), - (1, 4), - (6, 1), + (0, 17), + (2, 2), + (0, 0), + (11, 2), + (1, 10), ], entries: &[ - ("jan", 1), - ("jul", 7), - ("mac", 3), - ("feb", 2), + ("aprili", 4), ("nov", 11), - ("okt", 10), + ("januari", 1), + ("machi", 3), ("apr", 4), ("jun", 6), - ("sep", 9), - ("ago", 8), + ("feb", 2), + ("jul", 7), + ("septemba", 9), + ("jan", 1), + ("desemba", 12), + ("okt", 10), ("des", 12), + ("ago", 8), + ("sep", 9), ("mei", 5), + ("julai", 7), + ("mac", 3), + ("agosti", 8), + ("juni", 6), + ("februari", 2), + ("oktoba", 10), + ("novemba", 11), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ (1, 0), + (0, 0), + (2, 9), ], entries: &[ - ("leo", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ("jana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("jumatano", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("ijumaa", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("jumatatu", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("leo", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("jumamosi", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("alhamisi", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("wiki hii", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("jumanne", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("wiki iliyopita", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("jumapili", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -6577,35 +8108,57 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 10121458955350035957, + key: 12913932095322966823, disps: &[ - (0, 10), - (9, 8), - (3, 0), + (8, 2), + (0, 0), + (0, 3), + (1, 9), + (1, 16), ], entries: &[ - ("ஆக,", 8), - ("பிப\u{bcd},", 2), - ("ஏப\u{bcd},", 4), - ("அக\u{bcd},", 10), - ("டிச,", 12), - ("நவ,", 11), - ("ஜூலை,", 7), - ("ம\u{bbe}ர\u{bcd},", 3), - ("ஜன,", 1), - ("மே,", 5), - ("ஜூன\u{bcd},", 6), - ("செப\u{bcd},", 9), + ("ஆக", 8), + ("பிப\u{bcd}", 2), + ("டிச", 12), + ("ஏப\u{bcd}ரல\u{bcd}", 4), + ("நவ", 11), + ("ஜூன\u{bcd}", 6), + ("டிசம\u{bcd}பர\u{bcd}", 12), + ("மே", 5), + ("ம\u{bbe}ர\u{bcd}", 3), + ("அக\u{bcd}டோபர\u{bcd}", 10), + ("செப\u{bcd}டம\u{bcd}பர\u{bcd}", 9), + ("ஏப\u{bcd}", 4), + ("அக\u{bcd}", 10), + ("செப\u{bcd}", 9), + ("ஆகஸ\u{bcd}ட\u{bcd}", 8), + ("ஜன", 1), + ("நவம\u{bcd}பர\u{bcd}", 11), + ("ஜூலை", 7), + ("ஜனவரி", 1), + ("ம\u{bbe}ர\u{bcd}ச\u{bcd}", 3), + ("பிப\u{bcd}ரவரி", 2), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ (0, 0), + (0, 6), + (5, 1), ], entries: &[ + ("கடந\u{bcd}த வ\u{bbe}ரம\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("புதன\u{bcd}", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ("நேற\u{bcd}று", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("திங\u{bcd}கள\u{bcd}", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("செவ\u{bcd}வ\u{bbe}ய\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("சனி", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("வெள\u{bcd}ளி", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("விய\u{bbe}ழன\u{bcd}", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("இந\u{bcd}த வ\u{bbe}ரம\u{bcd}", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ("இன\u{bcd}று", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ஞ\u{bbe}யிறு", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -6678,35 +8231,56 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 7485420634051515786, disps: &[ - (5, 6), - (0, 0), - (1, 0), + (3, 0), + (0, 13), + (3, 6), + (15, 9), ], entries: &[ - ("ఏప\u{c4d}ర\u{c3f},", 4), - ("జన,", 1), - ("డ\u{c3f}స\u{c46}ం,", 12), - ("ఫ\u{c3f}బ\u{c4d}ర,", 2), - ("అక\u{c4d}ట\u{c4b},", 10), - ("నవం,", 11), - ("మ\u{c47},", 5), - ("జూన\u{c4d},", 6), - ("స\u{c46}ప\u{c4d}ట\u{c46}ం,", 9), - ("ఆగ,", 8), - ("జుల\u{c48},", 7), - ("మ\u{c3e}ర\u{c4d}చ\u{c3f},", 3), + ("నవం", 11), + ("ఆగస\u{c4d}టు", 8), + ("మ\u{c47}", 5), + ("జుల\u{c48}", 7), + ("నవంబర\u{c4d}", 11), + ("ఏప\u{c4d}ర\u{c3f}ల\u{c4d}", 4), + ("ఫ\u{c3f}బ\u{c4d}ర", 2), + ("ఫ\u{c3f}బ\u{c4d}రవర\u{c3f}", 2), + ("డ\u{c3f}స\u{c46}ంబర\u{c4d}", 12), + ("మ\u{c3e}ర\u{c4d}చ\u{c3f}", 3), + ("జనవర\u{c3f}", 1), + ("డ\u{c3f}స\u{c46}ం", 12), + ("స\u{c46}ప\u{c4d}ట\u{c46}ం", 9), + ("స\u{c46}ప\u{c4d}ట\u{c46}ంబర\u{c4d}", 9), + ("ఆగ", 8), + ("జూన\u{c4d}", 6), + ("జన", 1), + ("అక\u{c4d}ట\u{c4b}", 10), + ("ఏప\u{c4d}ర\u{c3f}", 4), + ("అక\u{c4d}ట\u{c4b}బర\u{c4d}", 10), ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 2980949210194914378, disps: &[ - (1, 0), + (3, 10), + (2, 9), + (2, 0), ], entries: &[ - ("ఈ", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("శుక\u{c4d}రవ\u{c3e}రం", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("గురువ\u{c3e}రం", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("మంగళవ\u{c3e}రం", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ("న\u{c3f}న\u{c4d}న", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("న\u{c47}డు", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("శన\u{c3f}వ\u{c3e}రం", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("బుధవ\u{c3e}రం", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("స\u{c4b}మవ\u{c3e}రం", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("గత వ\u{c3e}రం", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("ఈ వ\u{c3e}రం", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("ఆద\u{c3f}వ\u{c3e}రం", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("ఈ", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: false, @@ -6777,35 +8351,62 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 10121458955350035957, + key: 12913932095322966823, disps: &[ - (2, 0), - (2, 0), - (0, 11), + (0, 2), + (0, 4), + (12, 15), + (0, 0), + (22, 10), ], entries: &[ - ("สค", 8), - ("มค", 1), - ("ตค", 10), - ("ม\u{e34}ย", 6), - ("เมย", 4), - ("ม\u{e35}ค", 3), - ("กพ", 2), - ("กย", 9), - ("กค", 7), - ("ธค", 12), ("พค", 5), + ("ต\u{e38}ลาคม", 10), + ("กย", 9), + ("เมษายน", 4), + ("สค", 8), + ("ธค", 12), + ("ม\u{e35}นาคม", 3), + ("กค", 7), + ("มค", 1), + ("ม\u{e35}ค", 3), + ("พฤษภาคม", 5), + ("ธ\u{e31}นวาคม", 12), + ("พฤศจ\u{e34}กายน", 11), + ("ก\u{e38}มภาพ\u{e31}นธ\u{e4c}", 2), + ("ม\u{e34}ย", 6), + ("กพ", 2), + ("ก\u{e31}นยายน", 9), + ("ส\u{e34}งหาคม", 8), + ("เมย", 4), ("พย", 11), + ("มกราคม", 1), + ("ตค", 10), + ("ม\u{e34}ถ\u{e38}นายน", 6), + ("กรกฎาคม", 7), ], }, timeago_nd_tokens: ::phf::Map { - key: 10121458955350035957, + key: 7485420634051515786, disps: &[ + (5, 12), + (3, 9), (0, 0), ], entries: &[ - ("อ\u{e31}ปเดตเม\u{e37}\u{e48}อวานน\u{e35}\u{e49}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ว\u{e31}นจ\u{e31}นทร\u{e4c}", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("ว\u{e31}นอ\u{e31}งคาร", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("ว\u{e31}นศ\u{e38}กร\u{e4c}", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("เม\u{e37}\u{e48}อวานน\u{e35}\u{e49}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ว\u{e31}นน\u{e35}\u{e49}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ว\u{e31}นเสาร\u{e4c}", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("ว\u{e31}นพ\u{e38}ธ", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("ส\u{e31}ปดาห\u{e4c}น\u{e35}\u{e49}", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ("อ\u{e31}ปเดตแล\u{e49}วว\u{e31}นน\u{e35}\u{e49}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ส\u{e31}ปดาห\u{e4c}ท\u{e35}\u{e48}แล\u{e49}ว", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("อ\u{e31}ปเดตเม\u{e37}\u{e48}อวานน\u{e35}\u{e49}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ว\u{e31}นพฤห\u{e31}สบด\u{e35}", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("ว\u{e31}นอาท\u{e34}ตย\u{e4c}", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -6873,35 +8474,60 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 10121458955350035957, + key: 3599879742736855518, disps: &[ - (0, 0), - (6, 9), - (0, 3), + (6, 0), + (8, 6), + (0, 14), + (13, 16), + (1, 12), ], entries: &[ - ("haz", 6), - ("ağu", 8), - ("oca", 1), - ("nis", 4), - ("eyl", 9), - ("mar", 3), - ("ara", 12), - ("eki", 10), - ("kas", 11), ("şub", 2), + ("kasım", 11), + ("ocak", 1), + ("kas", 11), + ("mart", 3), + ("ara", 12), ("tem", 7), + ("nis", 4), + ("aralık", 12), ("may", 5), + ("ağustos", 8), + ("nisan", 4), + ("eki", 10), + ("eyl", 9), + ("oca", 1), + ("haz", 6), + ("temmuz", 7), + ("mar", 3), + ("haziran", 6), + ("mayıs", 5), + ("eylül", 9), + ("şubat", 2), + ("ağu", 8), + ("ekim", 10), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (0, 1), + (0, 4), + (5, 0), ], entries: &[ - ("dün", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("pazartesi", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("çarşamba", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("perşembe", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("bu hafta", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("cumartesi", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), ("bugün", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("geçen hafta", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("dün", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("salı", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("cuma", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("pazar", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -6992,35 +8618,61 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 10121458955350035957, + key: 7485420634051515786, disps: &[ - (3, 5), - (3, 0), - (0, 11), + (4, 23), + (1, 8), + (0, 0), + (0, 0), + (11, 1), ], entries: &[ - ("бер", 3), - ("лют", 2), - ("жовт", 10), - ("квіт", 4), - ("серп", 8), - ("вер", 9), - ("груд", 12), - ("черв", 6), - ("лип", 7), ("січ", 1), - ("лист", 11), + ("червень", 6), + ("бер", 3), + ("січень", 1), + ("листопад", 11), + ("травень", 5), + ("березень", 3), + ("серпень", 8), + ("липень", 7), + ("жовт", 10), ("трав", 5), + ("вер", 9), + ("черв", 6), + ("жовтень", 10), + ("серп", 8), + ("лист", 11), + ("грудень", 12), + ("лип", 7), + ("квітень", 4), + ("лют", 2), + ("груд", 12), + ("вересень", 9), + ("лютий", 2), + ("квіт", 4), ], }, timeago_nd_tokens: ::phf::Map { - key: 15467950696543387533, + key: 7485420634051515786, disps: &[ - (1, 0), + (2, 0), + (4, 11), + (3, 0), ], entries: &[ + ("пʼятниця", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("цього тижня", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), ("вчора", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("сьогодні", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("понеділок", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("неділя", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("середа", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("четвер", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("минулого тижня", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("субота", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("учора", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("вівторок", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: true, @@ -7088,34 +8740,59 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 10121458955350035957, disps: &[ - (1, 0), - (10, 7), - (8, 7), + (0, 15), + (2, 0), + (1, 7), + (1, 7), + (8, 6), ], entries: &[ - ("فروری،", 2), - ("اکتوبر،", 10), - ("جنوری،", 1), ("اپریل،", 4), + ("ستمبر", 9), + ("نومبر", 11), ("ستمبر،", 9), - ("دسمبر،", 12), - ("نومبر،", 11), - ("مارچ،", 3), - ("اگست،", 8), - ("جون،", 6), - ("جولائی،", 7), ("مئی،", 5), + ("جنوری،", 1), + ("دسمبر", 12), + ("جنوری", 1), + ("دسمبر،", 12), + ("جولائی", 7), + ("اگست", 8), + ("مارچ", 3), + ("اپریل", 4), + ("جون", 6), + ("نومبر،", 11), + ("جولائی،", 7), + ("فروری،", 2), + ("فروری", 2), + ("اکتوبر،", 10), + ("اکتوبر", 10), + ("اگست،", 8), + ("مئی", 5), + ("مارچ،", 3), + ("جون،", 6), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (3, 0), + (4, 7), + (1, 0), ], entries: &[ + ("پیر", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("جمعرات", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("منگل", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("ہفتہ", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("گزشتہ ہفتہ", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), ("آج", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("اس ہفتے", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("اتوار", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("جمعہ", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("بدھ", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ("کل", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, @@ -7180,33 +8857,57 @@ pub(crate) fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 12913932095322966823, disps: &[ - (2, 5), - (0, 0), - (9, 6), + (5, 12), + (1, 0), + (3, 21), + (1, 0), + (3, 21), ], entries: &[ - ("mar,", 3), - ("may,", 5), - ("noy,", 11), - ("avg,", 8), - ("iyl,", 7), - ("iyn,", 6), - ("yan,", 1), - ("fev,", 2), - ("dek,", 12), - ("okt,", 10), - ("sen,", 9), - ("apr,", 4), + ("mar", 3), + ("oktabr", 10), + ("yan", 1), + ("noyabr", 11), + ("sen", 9), + ("iyun", 6), + ("fev", 2), + ("mart", 3), + ("avg", 8), + ("okt", 10), + ("avgust", 8), + ("apr", 4), + ("dek", 12), + ("fevral", 2), + ("noy", 11), + ("iyul", 7), + ("may", 5), + ("iyn", 6), + ("dekabr", 12), + ("yanvar", 1), + ("iyl", 7), + ("sentabr", 9), + ("aprel", 4), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (2, 8), + (8, 0), + (6, 10), ], entries: &[ - ("kecha", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("seshanba", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ("bugun", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("shu haftada", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("shanba", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("juma", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("dushanba", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("yakshanba", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("payshanba", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("chorshanba", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("o‘tgan hafta", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("kecha", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: true, @@ -7270,12 +8971,23 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (0, 0), + (0, 10), + (1, 0), + (10, 6), ], entries: &[ + ("thứ hai", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ("qua", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("thứ sáu", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("thứ năm", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("tuần này", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("thứ tư", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("thứ bảy", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("tuần trước", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("chủ nhật", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("thứ ba", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), ("nay", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, @@ -7333,19 +9045,45 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], months: ::phf::Map { - key: 12913932095322966823, + key: 106375038446233661, disps: &[ + (0, 10), + (1, 0), + (0, 11), ], entries: &[ + ("二月", 2), + ("七月", 7), + ("三月", 3), + ("六月", 6), + ("五月", 5), + ("十月", 10), + ("十一月", 11), + ("十二月", 12), + ("九月", 9), + ("四月", 4), + ("八月", 8), + ("一月", 1), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ + (3, 9), (1, 0), + (6, 9), ], entries: &[ + ("二", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("三", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("本周", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("五", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("四", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("六", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), ("今", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("上周", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("一", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("日", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ("昨", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, @@ -7412,13 +9150,24 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, timeago_nd_tokens: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (1, 0), + (5, 0), + (0, 9), + (1, 6), ], entries: &[ - ("今", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ("昨", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("本星期", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("六", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("一", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("二", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("上星期", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("五", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("三", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("今", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("四", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("日", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ], }, comma_decimal: false, @@ -7483,11 +9232,22 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 0), + (4, 3), + (4, 0), + (1, 8), ], entries: &[ - ("今", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("上週", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("本週", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("一", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), ("昨", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("二", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("四", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("日", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), + ("三", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), + ("六", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("五", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("今", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: false, @@ -7563,35 +9323,61 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 7485420634051515786, + key: 2126027241312876569, disps: &[ - (2, 0), - (1, 9), - (1, 10), + (2, 9), + (1, 19), + (2, 19), + (18, 21), + (3, 0), ], entries: &[ - ("dis", 12), ("jul", 7), - ("aga", 8), - ("okt", 10), ("feb", 2), + ("mashi", 3), + ("jan", 1), + ("aga", 8), + ("februwari", 2), + ("disemba", 12), ("nov", 11), ("sep", 9), - ("mas", 3), - ("eph", 4), + ("juni", 6), + ("agasti", 8), ("mey", 5), - ("jan", 1), + ("okthoba", 10), + ("ephreli", 4), + ("okt", 10), + ("januwari", 1), + ("julayi", 7), + ("novemba", 11), + ("mas", 3), + ("meyi", 5), + ("eph", 4), ("jun", 6), + ("septhemba", 9), + ("dis", 12), ], }, timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ (0, 0), + (0, 2), + (0, 7), ], entries: &[ + ("umsombuluko", TaToken { n: 0, unit: Some(TimeUnit::LastWeekday) }), + ("ulwesihlanu", TaToken { n: 4, unit: Some(TimeUnit::LastWeekday) }), + ("iviki eledlule", TaToken { n: 1, unit: Some(TimeUnit::LastWeek) }), + ("ulwesithathu", TaToken { n: 2, unit: Some(TimeUnit::LastWeekday) }), ("izolo", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ulwesibili", TaToken { n: 1, unit: Some(TimeUnit::LastWeekday) }), + ("umgqibelo", TaToken { n: 5, unit: Some(TimeUnit::LastWeekday) }), + ("ulwesine", TaToken { n: 3, unit: Some(TimeUnit::LastWeekday) }), + ("isonto", TaToken { n: 6, unit: Some(TimeUnit::LastWeekday) }), ("namuhla", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("leli viki", TaToken { n: 0, unit: Some(TimeUnit::LastWeek) }), + ("namhlanje", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: false, diff --git a/src/util/mod.rs b/src/util/mod.rs index a50cb7d..4241262 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -4,7 +4,7 @@ mod protobuf; pub mod dictionary; pub mod timeago; -pub use date::{now_sec, shift_months, shift_years}; +pub use date::{now_sec, shift_months, shift_weeks_mo, shift_years}; pub use protobuf::{string_from_pb, ProtoBuilder}; use std::{ diff --git a/src/util/timeago.rs b/src/util/timeago.rs index 7e1913f..b1c2006 100644 --- a/src/util/timeago.rs +++ b/src/util/timeago.rs @@ -61,6 +61,8 @@ pub enum TimeUnit { Week, Month, Year, + LastWeek, + LastWeekday, } /// Value of a parsed TimeAgo token, used in the dictionary @@ -86,10 +88,17 @@ impl TimeUnit { TimeUnit::Week => 7 * 24 * 3600, TimeUnit::Month => 30 * 24 * 3600, TimeUnit::Year => 365 * 24 * 3600, + TimeUnit::LastWeekday | TimeUnit::LastWeek => 0, } } } +impl TaToken { + fn into_timeago(self) -> Option { + self.unit.map(|unit| TimeAgo { n: self.n, unit }) + } +} + impl TimeAgo { fn secs(self) -> u32 { u32::from(self.n) * self.unit.secs() @@ -119,6 +128,17 @@ impl From for OffsetDateTime { match ta.unit { TimeUnit::Month => ts.replace_date(util::shift_months(ts.date(), -i32::from(ta.n))), TimeUnit::Year => ts.replace_date(util::shift_years(ts.date(), -i32::from(ta.n))), + TimeUnit::LastWeek => { + ts.replace_date(util::shift_weeks_mo(ts.date(), -i32::from(ta.n))) + } + TimeUnit::LastWeekday => ts.replace_date( + Date::from_iso_week_date( + ts.year(), + ts.iso_week(), + time::Weekday::Monday.nth_next(ta.n), + ) + .unwrap(), + ), _ => ts - Duration::from(ta), } } @@ -139,7 +159,7 @@ fn filter_datestr(string: &str) -> String { .to_lowercase() .chars() .filter_map(|c| { - if matches!(c, '\u{200b}' | '.') || c.is_ascii_digit() { + if matches!(c, '\u{200b}' | '.' | ',') || c.is_ascii_digit() { None } else if c == '-' { Some(' ') @@ -249,57 +269,86 @@ pub fn parse_textual_date(lang: Language, textual_date: &str) -> Option(textual_date); - match nums.len() { - 0 => match TaTokenParser::new(&entry, by_char, true, &filtered_str).next() { - Some(timeago) => Some(ParsedDate::Relative(timeago)), - None => TaTokenParser::new(&entry, by_char, false, &filtered_str) - .next() - .map(ParsedDate::Relative), - }, - 1 => TaTokenParser::new(&entry, by_char, false, &filtered_str) - .next() - .map(|timeago| ParsedDate::Relative(timeago * nums[0] as u8)), - 2..=3 => { - if nums.len() == entry.date_order.len() { - let mut y: Option = None; - let mut m: Option = None; - let mut d: Option = None; - - nums.iter() - .enumerate() - .for_each(|(i, n)| match entry.date_order[i] { - DateCmp::Y => y = Some(*n), - DateCmp::M => m = Some(*n), - DateCmp::D => d = Some(*n), - }); - - // Chinese/Japanese dont use textual months - if m.is_none() && !by_char { - m = parse_textual_month(&entry, &filtered_str).map(u16::from); - } - - match (y, m, d) { - (Some(y), Some(m), Some(d)) => Month::try_from(m as u8) - .ok() - .and_then(|m| Date::from_calendar_date(y.into(), m, d as u8).ok()) - .map(ParsedDate::Absolute), - _ => None, - } - } else { - None + if nums.is_empty() { + entry + .timeago_nd_tokens + .get(&filtered_str) + .and_then(|t| t.into_timeago()) + .or_else(|| TaTokenParser::new(&entry, by_char, true, &filtered_str).next()) + .or_else(|| TaTokenParser::new(&entry, by_char, false, &filtered_str).next()) + .map(ParsedDate::Relative) + } else { + if nums.len() == 1 { + if let Some(timeago) = TaTokenParser::new(&entry, by_char, false, &filtered_str).next() + { + return Some(ParsedDate::Relative(timeago * nums[0] as u8)); } } - _ => None, + + let mut date_order = entry.date_order; + let with_day = if entry.date_order.len() == nums.len() { + true + } else if entry.date_order.len() - 1 == nums.len() { + false + } else if nums.len() == 1 { + date_order = &[DateCmp::Y]; + false + } else { + return None; + }; + + let mut y: Option = None; + let mut m: Option = None; + let mut d: Option = None; + + let mut i = 0; + for dc in date_order.iter() { + match dc { + DateCmp::Y => y = Some(nums[i]), + DateCmp::M => m = Some(nums[i]), + DateCmp::D => { + if with_day { + d = Some(nums[i]); + } else { + continue; + } + } + } + i += 1; + } + + if m.is_none() { + m = parse_textual_month(&entry, &filtered_str).map(u16::from); + } + + match (y, m, d) { + (Some(y), Some(m), d) => Month::try_from(m as u8) + .ok() + .and_then(|m| Date::from_calendar_date(y.into(), m, d.unwrap_or(1) as u8).ok()) + .map(ParsedDate::Absolute), + _ => None, + } } } -/// Parse a textual date (e.g. "29 minutes ago" or "Jul 2, 2014") into a Chrono DateTime object. +/// Parse a textual date (e.g. "29 minutes ago" or "Jul 2, 2014") into a OffsetDateTime object. /// /// Returns None if the date could not be parsed. pub fn parse_textual_date_to_dt(lang: Language, textual_date: &str) -> Option { parse_textual_date(lang, textual_date).map(OffsetDateTime::from) } +/// Parse a textual date (e.g. "29 minutes ago" "Jul 2, 2014") into a Date object. +/// +/// Returns None if the date could not be parsed. +pub fn parse_textual_date_to_d( + lang: Language, + textual_date: &str, + warnings: &mut Vec, +) -> Option { + parse_textual_date_or_warn(lang, textual_date, warnings).map(OffsetDateTime::date) +} + pub fn parse_textual_date_or_warn( lang: Language, textual_date: &str, @@ -845,6 +894,8 @@ mod tests { "যোগ দিয়েছেন 24 সেপ, 2013", Some(ParsedDate::Absolute(date!(2013-9-24))) )] + #[case(Language::Ja, "2023年7月", Some(ParsedDate::Absolute(date!(2023-07-01))))] + #[case(Language::De, "Juli 2023", Some(ParsedDate::Absolute(date!(2023-07-01))))] fn t_parse_date( #[case] lang: Language, #[case] textual_date: &str, @@ -949,6 +1000,39 @@ mod tests { } } + #[test] + fn t_parse_history_date_samples() { + #[derive(Deserialize)] + struct HistoryDates { + this_week: String, + last_week: String, + } + + let json_path = path!(*TESTFILES / "dict" / "history_date_samples.json"); + let json_file = File::open(json_path).unwrap(); + let date_samples: BTreeMap = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + + for (lang, samples) in date_samples { + assert_eq!( + parse_textual_date(lang, &samples.this_week), + Some(ParsedDate::Relative(TimeAgo { + n: 0, + unit: TimeUnit::LastWeek + })), + "lang: {lang}" + ); + assert_eq!( + parse_textual_date(lang, &samples.last_week), + Some(ParsedDate::Relative(TimeAgo { + n: 1, + unit: TimeUnit::LastWeek + })), + "lang: {lang}" + ); + } + } + #[test] fn t_parse_video_duration() { let json_path = path!(*TESTFILES / "dict" / "video_duration_samples.json"); diff --git a/testfiles/dict/cldr_data/collect_day_names.js b/testfiles/dict/cldr_data/collect_day_names.js new file mode 100644 index 0000000..ea09c4d --- /dev/null +++ b/testfiles/dict/cldr_data/collect_day_names.js @@ -0,0 +1,87 @@ +const fs = require("fs"); + +const DICT_PATH = "../dictionary.json"; + +function translateLang(lang) { + switch (lang) { + case "iw": // Hebrew + return "he"; + case "zh-CN": // Simplified Chinese + return "zh-Hans"; + case "zh-HK": + return "zh-Hant-HK"; + case "zh-TW": + return "zh-Hant"; + default: + return lang; + } +} + +function collectMonthNames(lang, by_char, monthNames, weekdayNames) { + const cldrLang = translateLang(lang); + const dates = require(`cldr-dates-modern/main/${cldrLang}/ca-gregorian.json`); + const dateFields = dates.main[cldrLang].dates.calendars.gregorian; + + const months = dateFields.months["stand-alone"].wide; + + for (const [n, name] of Object.entries(months)) { + let name2 = name.toLowerCase(); + if (name2.includes(n)) { + // Some languages dont have named months + console.log(`${lang}: month name '${name2}' includes number; skipped`); + continue; + } + if (lang === "mn") { + name2 = name2.replace(" сар", "").replace("арван ", ""); + } + if (/\s/g.test(name2)) { + throw new Error(`${lang}: month name '${name2}' contains whitespace`); + } + monthNames[name2.toLowerCase()] = parseInt(n); + } + + const weekdays = dateFields.days["stand-alone"].wide; + for (const [id, name] of Object.entries(weekdays)) { + let name2 = name.toLowerCase(); + + if (by_char) { + name2 = name2.replace("曜日", "").replace("星期", ""); + if (name2.length != 1) { + throw new Error(`${lang}: single-char name '${name2}' has invalid length`); + } + } else { + if (lang === "iw") { + name2 = name2.replace("יום ", ""); + } else if (lang === "sq") { + name2 = name2.replace("e ", ""); + } + if (/\s/g.test(name2)) { + // throw new Error(`${lang}: name '${name2}' contains whitespace`); + console.log(`${lang}: weekday name '${name2}' contains whitespace`); + } + } + + const ids = { mon: 0, tue: 1, wed: 2, thu: 3, fri: 4, sat: 5, sun: 6 }; + const n = ids[id]; + weekdayNames[name2] = `${n}Wd`; + } +} + +const dict = JSON.parse(fs.readFileSync(DICT_PATH)); + +for (const [mainLang, entry] of Object.entries(dict)) { + const langs = [mainLang, ...entry["equivalent"]]; + let monthNames = {}; + let weekdayNames = {}; + + for (lang of langs) { + collectMonthNames(lang, entry["by_char"], monthNames, weekdayNames); + } + dict[mainLang]["months"] = { ...dict[mainLang]["months"], ...monthNames }; + dict[mainLang]["timeago_nd_tokens"] = { + ...dict[mainLang]["timeago_nd_tokens"], + ...weekdayNames, + }; +} + +fs.writeFileSync(DICT_PATH, JSON.stringify(dict, null, 2)); diff --git a/testfiles/dict/cldr_data/package.json b/testfiles/dict/cldr_data/package.json index 18d5cae..26af44d 100644 --- a/testfiles/dict/cldr_data/package.json +++ b/testfiles/dict/cldr_data/package.json @@ -6,7 +6,7 @@ "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { - "cldr-dates-modern": "^43.0.0", - "cldr-numbers-modern": "^43.0.0" + "cldr-dates-modern": "^45.0.0", + "cldr-numbers-modern": "^45.0.0" } } diff --git a/testfiles/dict/dictionary.json b/testfiles/dict/dictionary.json index a7d2a58..deae2c9 100644 --- a/testfiles/dict/dictionary.json +++ b/testfiles/dict/dictionary.json @@ -25,21 +25,41 @@ "date_order": "DY", "months": { "jan": 1, + "januarie": 1, "feb": 2, + "februarie": 2, + "maart": 3, "mrt": 3, "apr": 4, + "april": 4, "mei": 5, "jun": 6, + "junie": 6, "jul": 7, + "julie": 7, "aug": 8, + "augustus": 8, "sep": 9, + "september": 9, "okt": 10, + "oktober": 10, "nov": 11, - "des": 12 + "november": 11, + "des": 12, + "desember": 12 }, "timeago_nd_tokens": { "vandag": "0D", - "gister": "1D" + "maandag": "0Wd", + "vandeesweek": "0Wl", + "gister": "1D", + "dinsdag": "1Wd", + "verlede week": "1Wl", + "woensdag": "2Wd", + "donderdag": "3Wd", + "vrydag": "4Wd", + "saterdag": "5Wd", + "sondag": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -86,23 +106,40 @@ "date_order": "DY", "months": { "ጃን": 1, + "ጃንዋሪ": 1, "ጃንዩ": 1, "ፌብ": 2, "ፌብሩ": 2, + "ፌብሩዋሪ": 2, "ማርች": 3, "ኤፕሪ": 4, + "ኤፕሪል": 4, "ሜይ": 5, "ጁን": 6, "ጁላይ": 7, "ኦገስ": 8, + "ኦገስት": 8, "ሴፕቴ": 9, + "ሴፕቴምበር": 9, "ኦክቶ": 10, + "ኦክቶበር": 10, "ኖቬም": 11, - "ዲሴም": 12 + "ኖቬምበር": 11, + "ዲሴም": 12, + "ዲሴምበር": 12 }, "timeago_nd_tokens": { "ዛሬ": "0D", - "ትላንት": "1D" + "ሰኞ": "0Wd", + "በዚህ ሳምንት": "0Wl", + "ትላንት": "1D", + "ማክሰኞ": "1Wd", + "ያለፈው ሳምንት": "1Wl", + "ረቡዕ": "2Wd", + "ሐሙስ": "3Wd", + "ዓርብ": "4Wd", + "ቅዳሜ": "5Wd", + "እሑድ": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -162,10 +199,33 @@ "سنتين": "2Y" }, "date_order": "DMY", - "months": {}, + "months": { + "يناير": 1, + "فبراير": 2, + "مارس": 3, + "أبريل": 4, + "مايو": 5, + "يونيو": 6, + "يوليو": 7, + "أغسطس": 8, + "سبتمبر": 9, + "أكتوبر": 10, + "نوفمبر": 11, + "ديسمبر": 12 + }, "timeago_nd_tokens": { "اليوم": "0D", - "البارحة": "1D" + "الاثنين": "0Wd", + "هذا الأسبوع": "0Wl", + "أمس": "1D", + "البارحة": "1D", + "الثلاثاء": "1Wd", + "الأسبوع الماضي": "1Wl", + "الأربعاء": "2Wd", + "الخميس": "3Wd", + "الجمعة": "4Wd", + "السبت": "5Wd", + "الأحد": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -201,10 +261,32 @@ "বছৰৰ": "Y" }, "date_order": "DMY", - "months": {}, + "months": { + "জানুৱাৰী": 1, + "ফেব্ৰুৱাৰী": 2, + "মাৰ্চ": 3, + "এপ্ৰিল": 4, + "মে’": 5, + "জুন": 6, + "জুলাই": 7, + "আগষ্ট": 8, + "ছেপ্তেম্বৰ": 9, + "অক্টোবৰ": 10, + "নৱেম্বৰ": 11, + "ডিচেম্বৰ": 12 + }, "timeago_nd_tokens": { "আজি": "0D", - "কালি": "1D" + "সোমবাৰ": "0Wd", + "এই সপ্তাহৰ": "0Wl", + "কালি": "1D", + "মঙ্গলবাৰ": "1Wd", + "যোৱা সপ্তাহৰ": "1Wl", + "বুধবাৰ": "2Wd", + "বৃহস্পতিবাৰ": "3Wd", + "শুক্ৰবাৰ": "4Wd", + "শনিবাৰ": "5Wd", + "দেওবাৰ": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -253,21 +335,41 @@ "date_order": "DY", "months": { "yan": 1, + "yanvar": 1, "fev": 2, + "fevral": 2, "mar": 3, + "mart": 3, "apr": 4, + "aprel": 4, "may": 5, "iyn": 6, + "iyun": 6, "iyl": 7, + "iyul": 7, "avq": 8, + "avqust": 8, "sen": 9, + "sentyabr": 9, "okt": 10, + "oktyabr": 10, "noy": 11, - "dek": 12 + "noyabr": 11, + "dek": 12, + "dekabr": 12 }, "timeago_nd_tokens": { "bugün": "0D", - "dünən": "1D" + "bazar ertəsi": "0Wd", + "bu həftə": "0Wl", + "dünən": "1D", + "çərşənbə axşamı": "1Wd", + "ötən həftə": "1Wl", + "çərşənbə": "2Wd", + "cümə axşamı": "3Wd", + "cümə": "4Wd", + "şənbə": "5Wd", + "bazar": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -328,21 +430,43 @@ "date_order": "DY", "months": { "сту": 1, + "студзень": 1, "лют": 2, + "люты": 2, "сак": 3, + "сакавік": 3, "кра": 4, + "красавік": 4, + "май": 5, "мая": 5, "чэр": 6, + "чэрвень": 6, "ліп": 7, + "ліпень": 7, "жні": 8, + "жнівень": 8, "вер": 9, + "верасень": 9, "кас": 10, + "кастрычнік": 10, "ліс": 11, - "сне": 12 + "лістапад": 11, + "сне": 12, + "снежань": 12 }, "timeago_nd_tokens": { "сёння": "0D", - "ўчора": "1D" + "панядзелак": "0Wd", + "на гэтым тыдні": "0Wl", + "учора": "1D", + "ўчора": "1D", + "аўторак": "1Wd", + "на мінулым тыдні": "1Wl", + "серада": "2Wd", + "чацвер": "3Wd", + "пятніца": "4Wd", + "субота": "5Wd", + "нядзеля": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -389,10 +513,32 @@ "години": "Y" }, "date_order": "DMY", - "months": {}, + "months": { + "януари": 1, + "февруари": 2, + "март": 3, + "април": 4, + "май": 5, + "юни": 6, + "юли": 7, + "август": 8, + "септември": 9, + "октомври": 10, + "ноември": 11, + "декември": 12 + }, "timeago_nd_tokens": { "днес": "0D", - "вчера": "1D" + "понеделник": "0Wd", + "тази седмица": "0Wl", + "вчера": "1D", + "вторник": "1Wd", + "последната седмица": "1Wl", + "сряда": "2Wd", + "четвъртък": "3Wd", + "петък": "4Wd", + "събота": "5Wd", + "неделя": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -427,22 +573,40 @@ }, "date_order": "DY", "months": { - "জানু,": 1, - "ফেব,": 2, - "মার্চ,": 3, - "এপ্রি,": 4, - "মে,": 5, - "জুন,": 6, - "জুল,": 7, - "আগ,": 8, - "সেপ,": 9, - "অক্টো,": 10, - "নভে,": 11, - "ডিসে,": 12 + "জানু": 1, + "জানুয়ারী": 1, + "ফেব": 2, + "ফেব্রুয়ারী": 2, + "মার্চ": 3, + "এপ্রি": 4, + "এপ্রিল": 4, + "মে": 5, + "জুন": 6, + "জুল": 7, + "জুলাই": 7, + "আগ": 8, + "আগস্ট": 8, + "সেপ": 9, + "সেপ্টেম্বর": 9, + "অক্টো": 10, + "অক্টোবর": 10, + "নভে": 11, + "নভেম্বর": 11, + "ডিসে": 12, + "ডিসেম্বর": 12 }, "timeago_nd_tokens": { "আজ": "0D", - "গতকাল": "1D" + "সোমবার": "0Wd", + "এই সপ্তাহে": "0Wl", + "গতকাল": "1D", + "মঙ্গলবার": "1Wd", + "গত সপ্তাহ": "1Wl", + "বুধবার": "2Wd", + "বৃহস্পতিবার": "3Wd", + "শুক্রবার": "4Wd", + "শনিবার": "5Wd", + "রবিবার": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -503,21 +667,41 @@ "date_order": "DY", "months": { "jan": 1, + "januar": 1, "feb": 2, + "februar": 2, "mar": 3, + "mart": 3, "apr": 4, + "april": 4, "maj": 5, "jun": 6, + "juni": 6, "jul": 7, + "juli": 7, "aug": 8, + "august": 8, "sep": 9, + "septembar": 9, "okt": 10, + "oktobar": 10, "nov": 11, - "dec": 12 + "novembar": 11, + "dec": 12, + "decembar": 12 }, "timeago_nd_tokens": { "danas": "0D", - "jučer": "1D" + "ponedjeljak": "0Wd", + "ova sedmica": "0Wl", + "jučer": "1D", + "utorak": "1Wd", + "prošla sedmica": "1Wl", + "srijeda": "2Wd", + "četvrtak": "3Wd", + "petak": "4Wd", + "subota": "5Wd", + "nedjelja": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -565,21 +749,39 @@ "date_order": "DY", "months": { "gen": 1, + "gener": 1, "febr": 2, + "febrer": 2, "març": 3, + "abril": 4, "d’abr": 4, "maig": 5, "juny": 6, "jul": 7, + "juliol": 7, + "agost": 8, "d’ag": 8, "set": 9, + "setembre": 9, "d’oct": 10, + "octubre": 10, "nov": 11, - "des": 12 + "novembre": 11, + "des": 12, + "desembre": 12 }, "timeago_nd_tokens": { "avui": "0D", - "ahir": "1D" + "dilluns": "0Wd", + "aquesta setmana": "0Wl", + "ahir": "1D", + "dimarts": "1Wd", + "la setmana passada": "1Wl", + "dimecres": "2Wd", + "dijous": "3Wd", + "divendres": "4Wd", + "dissabte": "5Wd", + "diumenge": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -638,10 +840,32 @@ "roky": "Y" }, "date_order": "DMY", - "months": {}, + "months": { + "leden": 1, + "únor": 2, + "březen": 3, + "duben": 4, + "květen": 5, + "červen": 6, + "červenec": 7, + "srpen": 8, + "září": 9, + "říjen": 10, + "listopad": 11, + "prosinec": 12 + }, "timeago_nd_tokens": { "dnes": "0D", - "včera": "1D" + "pondělí": "0Wd", + "tento týden": "0Wl", + "včera": "1D", + "úterý": "1Wd", + "minulý týden": "1Wl", + "středa": "2Wd", + "čtvrtek": "3Wd", + "pátek": "4Wd", + "sobota": "5Wd", + "neděle": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -685,21 +909,41 @@ "date_order": "DY", "months": { "jan": 1, + "januar": 1, "feb": 2, + "februar": 2, "mar": 3, + "marts": 3, "apr": 4, + "april": 4, "maj": 5, "jun": 6, + "juni": 6, "jul": 7, + "juli": 7, "aug": 8, + "august": 8, "sep": 9, + "september": 9, "okt": 10, + "oktober": 10, "nov": 11, - "dec": 12 + "november": 11, + "dec": 12, + "december": 12 }, "timeago_nd_tokens": { "dag": "0D", - "går": "1D" + "mandag": "0Wd", + "denne uge": "0Wl", + "går": "1D", + "tirsdag": "1Wd", + "sidste uge": "1Wl", + "onsdag": "2Wd", + "torsdag": "3Wd", + "fredag": "4Wd", + "lørdag": "5Wd", + "søndag": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -742,10 +986,32 @@ "jahren": "Y" }, "date_order": "DMY", - "months": {}, + "months": { + "januar": 1, + "februar": 2, + "märz": 3, + "april": 4, + "mai": 5, + "juni": 6, + "juli": 7, + "august": 8, + "september": 9, + "oktober": 10, + "november": 11, + "dezember": 12 + }, "timeago_nd_tokens": { "heute": "0D", - "gestern": "1D" + "montag": "0Wd", + "diese woche": "0Wl", + "gestern": "1D", + "dienstag": "1Wd", + "letzte woche": "1Wl", + "mittwoch": "2Wd", + "donnerstag": "3Wd", + "freitag": "4Wd", + "samstag": "5Wd", + "sonntag": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -793,21 +1059,43 @@ "date_order": "DY", "months": { "ιαν": 1, + "ιανουάριος": 1, "φεβ": 2, + "φεβρουάριος": 2, "μαρ": 3, + "μάρτιος": 3, "απρ": 4, + "απρίλιος": 4, "μαΐ": 5, + "μάιος": 5, "ιουν": 6, + "ιούνιος": 6, "ιουλ": 7, + "ιούλιος": 7, "αυγ": 8, + "αύγουστος": 8, "σεπ": 9, + "σεπτέμβριος": 9, "οκτ": 10, + "οκτώβριος": 10, "νοε": 11, - "δεκ": 12 + "νοέμβριος": 11, + "δεκ": 12, + "δεκέμβριος": 12 }, "timeago_nd_tokens": { "σήμερα": "0D", - "χτες": "1D" + "δευτέρα": "0Wd", + "αυτήν την εβδομάδα": "0Wl", + "χθες": "1D", + "χτες": "1D", + "τρίτη": "1Wd", + "τελευταία εβδομάδα": "1Wl", + "τετάρτη": "2Wd", + "πέμπτη": "3Wd", + "παρασκευή": "4Wd", + "σάββατο": "5Wd", + "κυριακή": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -867,22 +1155,42 @@ "date_order": "DY", "months": { "jan": 1, + "january": 1, "feb": 2, + "february": 2, "mar": 3, + "march": 3, "apr": 4, + "april": 4, "may": 5, "jun": 6, + "june": 6, "jul": 7, + "july": 7, "aug": 8, + "august": 8, "sep": 9, "sept": 9, + "september": 9, "oct": 10, + "october": 10, "nov": 11, - "dec": 12 + "november": 11, + "dec": 12, + "december": 12 }, "timeago_nd_tokens": { "today": "0D", - "yesterday": "1D" + "monday": "0Wd", + "this week": "0Wl", + "yesterday": "1D", + "tuesday": "1Wd", + "last week": "1Wl", + "wednesday": "2Wd", + "thursday": "3Wd", + "friday": "4Wd", + "saturday": "5Wd", + "sunday": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -932,21 +1240,42 @@ "date_order": "DY", "months": { "ene": 1, + "enero": 1, "feb": 2, + "febrero": 2, "mar": 3, + "marzo": 3, "abr": 4, + "abril": 4, "may": 5, + "mayo": 5, "jun": 6, + "junio": 6, "jul": 7, + "julio": 7, "ago": 8, + "agosto": 8, "sept": 9, + "septiembre": 9, "oct": 10, + "octubre": 10, "nov": 11, - "dic": 12 + "noviembre": 11, + "dic": 12, + "diciembre": 12 }, "timeago_nd_tokens": { "hoy": "0D", - "ayer": "1D" + "lunes": "0Wd", + "esta semana": "0Wl", + "ayer": "1D", + "martes": "1Wd", + "la semana pasada": "1Wl", + "miércoles": "2Wd", + "jueves": "3Wd", + "viernes": "4Wd", + "sábado": "5Wd", + "domingo": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -993,21 +1322,42 @@ "date_order": "DY", "months": { "ene": 1, + "enero": 1, "feb": 2, + "febrero": 2, "mar": 3, + "marzo": 3, "abr": 4, + "abril": 4, "may": 5, + "mayo": 5, "jun": 6, + "junio": 6, "jul": 7, + "julio": 7, "ago": 8, + "agosto": 8, "sept": 9, + "septiembre": 9, "oct": 10, + "octubre": 10, "nov": 11, - "dic": 12 + "noviembre": 11, + "dic": 12, + "diciembre": 12 }, "timeago_nd_tokens": { "hoy": "0D", - "ayer": "1D" + "lunes": "0Wd", + "esta semana": "0Wl", + "ayer": "1D", + "martes": "1Wd", + "la semana pasada": "1Wl", + "miércoles": "2Wd", + "jueves": "3Wd", + "viernes": "4Wd", + "sábado": "5Wd", + "domingo": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -1055,21 +1405,38 @@ "date_order": "DY", "months": { "jaan": 1, + "jaanuar": 1, "veebr": 2, + "veebruar": 2, "märts": 3, "apr": 4, + "aprill": 4, "mai": 5, "juuni": 6, "juuli": 7, "aug": 8, + "august": 8, "sept": 9, + "september": 9, "okt": 10, + "oktoober": 10, "nov": 11, - "dets": 12 + "november": 11, + "dets": 12, + "detsember": 12 }, "timeago_nd_tokens": { "täna": "0D", - "eile": "1D" + "esmaspäev": "0Wd", + "sellel nädalal": "0Wl", + "eile": "1D", + "teisipäev": "1Wd", + "eelmisel nädalal": "1Wl", + "kolmapäev": "2Wd", + "neljapäev": "3Wd", + "reede": "4Wd", + "laupäev": "5Wd", + "pühapäev": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -1108,21 +1475,42 @@ "date_order": "YD", "months": { "urt": 1, + "urtarrila": 1, "ots": 2, + "otsaila": 2, "mar": 3, + "martxoa": 3, "api": 4, + "apirila": 4, "mai": 5, + "maiatza": 5, "eka": 6, + "ekaina": 6, "uzt": 7, + "uztaila": 7, "abu": 8, + "abuztua": 8, "ira": 9, + "iraila": 9, "urr": 10, + "urria": 10, "aza": 11, - "abe": 12 + "azaroa": 11, + "abe": 12, + "abendua": 12 }, "timeago_nd_tokens": { "gaur": "0D", - "atzo": "1D" + "astelehena": "0Wd", + "aste hau": "0Wl", + "atzo": "1D", + "asteartea": "1Wd", + "joan den astea": "1Wl", + "asteazkena": "2Wd", + "osteguna": "3Wd", + "ostirala": "4Wd", + "larunbata": "5Wd", + "igandea": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -1156,12 +1544,16 @@ "date_order": "DY", "months": { "ژانویه": 1, + "ژانویهٔ": 1, "فوریه": 2, + "فوریهٔ": 2, "مارس": 3, "آوریل": 4, "مه": 5, + "مهٔ": 5, "ژوئن": 6, "ژوئیه": 7, + "ژوئیهٔ": 7, "اوت": 8, "سپتامبر": 9, "اکتبر": 10, @@ -1170,7 +1562,16 @@ }, "timeago_nd_tokens": { "امروز": "0D", - "دیروز": "1D" + "دوشنبه": "0Wd", + "این هفته": "0Wl", + "دیروز": "1D", + "سه‌شنبه": "1Wd", + "هفته قبل": "1Wl", + "چهارشنبه": "2Wd", + "پنجشنبه": "3Wd", + "جمعه": "4Wd", + "شنبه": "5Wd", + "یکشنبه": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -1219,10 +1620,32 @@ "vuotta": "Y" }, "date_order": "DMY", - "months": {}, + "months": { + "tammikuu": 1, + "helmikuu": 2, + "maaliskuu": 3, + "huhtikuu": 4, + "toukokuu": 5, + "kesäkuu": 6, + "heinäkuu": 7, + "elokuu": 8, + "syyskuu": 9, + "lokakuu": 10, + "marraskuu": 11, + "joulukuu": 12 + }, "timeago_nd_tokens": { "tänään": "0D", - "eilen": "1D" + "maanantai": "0Wd", + "tällä viikolla": "0Wl", + "eilen": "1D", + "tiistai": "1Wd", + "viime viikolla": "1Wl", + "keskiviikko": "2Wd", + "torstai": "3Wd", + "perjantai": "4Wd", + "lauantai": "5Wd", + "sunnuntai": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -1261,21 +1684,43 @@ "date_order": "DY", "months": { "ene": 1, + "enero": 1, "peb": 2, + "pebrero": 2, "mar": 3, + "marso": 3, "abr": 4, + "abril": 4, "may": 5, + "mayo": 5, "hun": 6, + "hunyo": 6, "hul": 7, + "hulyo": 7, "ago": 8, + "agosto": 8, "set": 9, + "setyembre": 9, "okt": 10, + "oktubre": 10, "nob": 11, - "dis": 12 + "nobyembre": 11, + "dis": 12, + "disyembre": 12 }, "timeago_nd_tokens": { + "ngayon": "0D", "ngayong": "0D", - "kahapon": "1D" + "lunes": "0Wd", + "ngayong linggo": "0Wl", + "kahapon": "1D", + "martes": "1Wd", + "nakaraang linggo": "1Wl", + "miyerkules": "2Wd", + "huwebes": "3Wd", + "biyernes": "4Wd", + "sabado": "5Wd", + "linggo": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -1324,22 +1769,40 @@ "date_order": "DY", "months": { "janv": 1, + "janvier": 1, "févr": 2, + "février": 2, "mars": 3, "avr": 4, + "avril": 4, "mai": 5, "juin": 6, "juil": 7, "juill": 7, + "juillet": 7, "août": 8, "sept": 9, + "septembre": 9, "oct": 10, + "octobre": 10, "nov": 11, - "déc": 12 + "novembre": 11, + "déc": 12, + "décembre": 12 }, "timeago_nd_tokens": { "aujourd'hui": "0D", - "hier": "1D" + "aujourd’hui": "0D", + "lundi": "0Wd", + "cette semaine": "0Wl", + "hier": "1D", + "mardi": "1Wd", + "la semaine dernière": "1Wl", + "mercredi": "2Wd", + "jeudi": "3Wd", + "vendredi": "4Wd", + "samedi": "5Wd", + "dimanche": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -1389,21 +1852,40 @@ "date_order": "DY", "months": { "xan": 1, + "xaneiro": 1, "feb": 2, + "febreiro": 2, "mar": 3, + "marzo": 3, "abr": 4, + "abril": 4, "maio": 5, "xuño": 6, "xul": 7, + "xullo": 7, "ago": 8, + "agosto": 8, "set": 9, + "setembro": 9, "out": 10, + "outubro": 10, "nov": 11, - "dec": 12 + "novembro": 11, + "dec": 12, + "decembro": 12 }, "timeago_nd_tokens": { "hoxe": "0D", - "onte": "1D" + "luns": "0Wd", + "esta semana": "0Wl", + "onte": "1D", + "martes": "1Wd", + "a semana pasada": "1Wl", + "mércores": "2Wd", + "xoves": "3Wd", + "venres": "4Wd", + "sábado": "5Wd", + "domingo": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -1437,22 +1919,37 @@ }, "date_order": "DY", "months": { - "જાન્યુ,": 1, - "ફેબ્રુ,": 2, - "માર્ચ,": 3, - "એપ્રિલ,": 4, - "મે,": 5, - "જૂન,": 6, - "જુલાઈ,": 7, - "ઑગસ્ટ,": 8, - "સપ્ટે,": 9, - "ઑક્ટો,": 10, - "નવે,": 11, - "ડિસે,": 12 + "જાન્યુ": 1, + "જાન્યુઆરી": 1, + "ફેબ્રુ": 2, + "ફેબ્રુઆરી": 2, + "માર્ચ": 3, + "એપ્રિલ": 4, + "મે": 5, + "જૂન": 6, + "જુલાઈ": 7, + "ઑગસ્ટ": 8, + "સપ્ટે": 9, + "સપ્ટેમ્બર": 9, + "ઑક્ટો": 10, + "ઑક્ટોબર": 10, + "નવે": 11, + "નવેમ્બર": 11, + "ડિસે": 12, + "ડિસેમ્બર": 12 }, "timeago_nd_tokens": { "આજે": "0D", - "ગઈકાલે": "1D" + "સોમવાર": "0Wd", + "આ અઠવાડિયે": "0Wl", + "ગઈકાલે": "1D", + "મંગળવાર": "1Wd", + "છેલ્લું અઠવાડિયું": "1Wl", + "બુધવાર": "2Wd", + "ગુરુવાર": "3Wd", + "શુક્રવાર": "4Wd", + "શનિવાર": "5Wd", + "રવિવાર": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -1490,21 +1987,40 @@ "date_order": "DY", "months": { "जन॰": 1, + "जनवरी": 1, "फ़र॰": 2, + "फ़रवरी": 2, "मार्च": 3, "अप्रैल": 4, "मई": 5, "जून": 6, "जुल॰": 7, + "जुलाई": 7, "अग॰": 8, + "अगस्त": 8, "सित॰": 9, + "सितंबर": 9, + "अक्टू॰": 10, + "अक्टूबर": 10, "अक्तू॰": 10, + "अक्तूबर": 10, "नव॰": 11, - "दिस॰": 12 + "नवंबर": 11, + "दिस॰": 12, + "दिसंबर": 12 }, "timeago_nd_tokens": { "आज": "0D", - "कल": "1D" + "सोमवार": "0Wd", + "इस हफ़्ते": "0Wl", + "कल": "1D", + "मंगलवार": "1Wd", + "पिछले हफ़्ते": "1Wl", + "बुधवार": "2Wd", + "गुरुवार": "3Wd", + "शुक्रवार": "4Wd", + "शनिवार": "5Wd", + "रविवार": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -1561,21 +2077,42 @@ "date_order": "DY", "months": { "sij": 1, + "siječanj": 1, "velj": 2, + "veljača": 2, "ožu": 3, + "ožujak": 3, "tra": 4, + "travanj": 4, "svi": 5, + "svibanj": 5, "lip": 6, + "lipanj": 6, "srp": 7, + "srpanj": 7, "kol": 8, + "kolovoz": 8, "ruj": 9, + "rujan": 9, "lis": 10, + "listopad": 10, "stu": 11, - "pro": 12 + "studeni": 11, + "pro": 12, + "prosinac": 12 }, "timeago_nd_tokens": { "danas": "0D", - "jučer": "1D" + "ponedjeljak": "0Wd", + "ovaj tjedan": "0Wl", + "jučer": "1D", + "utorak": "1Wd", + "prošli tjedan": "1Wl", + "srijeda": "2Wd", + "četvrtak": "3Wd", + "petak": "4Wd", + "subota": "5Wd", + "nedjelja": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -1623,21 +2160,42 @@ "date_order": "YD", "months": { "jan": 1, + "január": 1, "febr": 2, + "február": 2, "márc": 3, + "március": 3, "ápr": 4, + "április": 4, "máj": 5, + "május": 5, "jún": 6, + "június": 6, "júl": 7, + "július": 7, "aug": 8, + "augusztus": 8, "szept": 9, + "szeptember": 9, "okt": 10, + "október": 10, "nov": 11, - "dec": 12 + "november": 11, + "dec": 12, + "december": 12 }, "timeago_nd_tokens": { "ma": "0D", - "tegnap": "1D" + "hétfő": "0Wd", + "ezen a héten": "0Wl", + "tegnap": "1D", + "kedd": "1Wd", + "múlt héten": "1Wl", + "szerda": "2Wd", + "csütörtök": "3Wd", + "péntek": "4Wd", + "szombat": "5Wd", + "vasárnap": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -1677,22 +2235,43 @@ }, "date_order": "DY", "months": { - "հնվ,": 1, - "փտվ,": 2, - "մրտ,": 3, - "ապր,": 4, - "մյս,": 5, - "հնս,": 6, - "հլս,": 7, - "օգս,": 8, - "սեպ,": 9, - "հոկ,": 10, - "նոյ,": 11, - "դեկ,": 12 + "հնվ": 1, + "հունվար": 1, + "փետրվար": 2, + "փտվ": 2, + "մարտ": 3, + "մրտ": 3, + "ապր": 4, + "ապրիլ": 4, + "մայիս": 5, + "մյս": 5, + "հնս": 6, + "հունիս": 6, + "հլս": 7, + "հուլիս": 7, + "օգոստոս": 8, + "օգս": 8, + "սեպ": 9, + "սեպտեմբեր": 9, + "հոկ": 10, + "հոկտեմբեր": 10, + "նոյ": 11, + "նոյեմբեր": 11, + "դեկ": 12, + "դեկտեմբեր": 12 }, "timeago_nd_tokens": { "այսօր": "0D", - "երեկ": "1D" + "երկուշաբթի": "0Wd", + "այս շաբաթ": "0Wl", + "երեկ": "1D", + "երեքշաբթի": "1Wd", + "անցյալ շաբաթ": "1Wl", + "չորեքշաբթի": "2Wd", + "հինգշաբթի": "3Wd", + "ուրբաթ": "4Wd", + "շաբաթ": "5Wd", + "կիրակի": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -1735,21 +2314,41 @@ "date_order": "DY", "months": { "jan": 1, + "januari": 1, "feb": 2, + "februari": 2, "mar": 3, + "maret": 3, "apr": 4, + "april": 4, "mei": 5, "jun": 6, + "juni": 6, "jul": 7, + "juli": 7, "agu": 8, + "agustus": 8, "sep": 9, + "september": 9, "okt": 10, + "oktober": 10, "nov": 11, - "des": 12 + "november": 11, + "des": 12, + "desember": 12 }, "timeago_nd_tokens": { "ini": "0D", - "kemarin": "1D" + "senin": "0Wd", + "minggu ini": "0Wl", + "kemarin": "1D", + "selasa": "1Wd", + "minggu lalu": "1Wl", + "rabu": "2Wd", + "kamis": "3Wd", + "jumat": "4Wd", + "sabtu": "5Wd", + "minggu": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -1800,21 +2399,41 @@ "date_order": "DY", "months": { "jan": 1, + "janúar": 1, "feb": 2, + "febrúar": 2, "mar": 3, + "mars": 3, "apr": 4, + "apríl": 4, "maí": 5, "jún": 6, + "júní": 6, "júl": 7, + "júlí": 7, "ágú": 8, + "ágúst": 8, "sep": 9, + "september": 9, "okt": 10, + "október": 10, "nóv": 11, - "des": 12 + "nóvember": 11, + "des": 12, + "desember": 12 }, "timeago_nd_tokens": { "dag": "0D", - "gær": "1D" + "mánudagur": "0Wd", + "í vikunni": "0Wl", + "gær": "1D", + "þriðjudagur": "1Wd", + "í síðustu viku": "1Wl", + "miðvikudagur": "2Wd", + "fimmtudagur": "3Wd", + "föstudagur": "4Wd", + "laugardagur": "5Wd", + "sunnudagur": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -1866,21 +2485,42 @@ "date_order": "DY", "months": { "gen": 1, + "gennaio": 1, "feb": 2, + "febbraio": 2, "mar": 3, + "marzo": 3, "apr": 4, + "aprile": 4, "mag": 5, + "maggio": 5, "giu": 6, + "giugno": 6, "lug": 7, + "luglio": 7, "ago": 8, + "agosto": 8, "set": 9, + "settembre": 9, "ott": 10, + "ottobre": 10, "nov": 11, - "dic": 12 + "novembre": 11, + "dic": 12, + "dicembre": 12 }, "timeago_nd_tokens": { "oggi": "0D", - "ieri": "1D" + "lunedì": "0Wd", + "questa settimana": "0Wl", + "ieri": "1D", + "martedì": "1Wd", + "ultima settimana": "1Wl", + "mercoledì": "2Wd", + "giovedì": "3Wd", + "venerdì": "4Wd", + "sabato": "5Wd", + "domenica": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -1935,21 +2575,42 @@ "date_order": "DY", "months": { "בינו׳": 1, + "ינואר": 1, "בפבר׳": 2, + "פברואר": 2, "במרץ": 3, + "מרץ": 3, + "אפריל": 4, "באפר׳": 4, "במאי": 5, + "מאי": 5, "ביוני": 6, + "יוני": 6, "ביולי": 7, + "יולי": 7, + "אוגוסט": 8, "באוג׳": 8, "בספט׳": 9, + "ספטמבר": 9, + "אוקטובר": 10, "באוק׳": 10, "בנוב׳": 11, - "בדצמ׳": 12 + "נובמבר": 11, + "בדצמ׳": 12, + "דצמבר": 12 }, "timeago_nd_tokens": { "היום": "0D", - "אתמול": "1D" + "שני": "0Wd", + "השבוע": "0Wl", + "אתמול": "1D", + "שלישי": "1Wd", + "בשבוע שעבר": "1Wl", + "רביעי": "2Wd", + "חמישי": "3Wd", + "שישי": "4Wd", + "שבת": "5Wd", + "ראשון": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -1986,7 +2647,16 @@ "months": {}, "timeago_nd_tokens": { "本": "0D", - "昨": "1D" + "月": "0Wd", + "今週": "0Wl", + "昨": "1D", + "火": "1Wd", + "先週": "1Wl", + "水": "2Wd", + "木": "3Wd", + "金": "4Wd", + "土": "5Wd", + "日": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -2025,21 +2695,42 @@ "date_order": "DY", "months": { "იან": 1, + "იანვარი": 1, "თებ": 2, + "თებერვალი": 2, "მარ": 3, + "მარტი": 3, "აპრ": 4, + "აპრილი": 4, "მაი": 5, + "მაისი": 5, "ივნ": 6, + "ივნისი": 6, "ივლ": 7, + "ივლისი": 7, "აგვ": 8, + "აგვისტო": 8, "სექ": 9, + "სექტემბერი": 9, "ოქტ": 10, + "ოქტომბერი": 10, "ნოე": 11, - "დეკ": 12 + "ნოემბერი": 11, + "დეკ": 12, + "დეკემბერი": 12 }, "timeago_nd_tokens": { "დღეს": "0D", - "გუშინ": "1D" + "ორშაბათი": "0Wd", + "ამ კვირაში": "0Wl", + "გუშინ": "1D", + "სამშაბათი": "1Wd", + "გასულ კვირაში": "1Wl", + "ოთხშაბათი": "2Wd", + "ხუთშაბათი": "3Wd", + "პარასკევი": "4Wd", + "შაბათი": "5Wd", + "კვირა": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -2081,21 +2772,42 @@ "date_order": "YD", "months": { "қаң": 1, + "қаңтар": 1, "ақп": 2, + "ақпан": 2, "нау": 3, + "наурыз": 3, "сәу": 4, + "сәуір": 4, "мам": 5, + "мамыр": 5, "мау": 6, + "маусым": 6, "шіл": 7, + "шілде": 7, "там": 8, + "тамыз": 8, "қыр": 9, + "қыркүйек": 9, "қаз": 10, + "қазан": 10, "қар": 11, - "жел": 12 + "қараша": 11, + "жел": 12, + "желтоқсан": 12 }, "timeago_nd_tokens": { "бүгін": "0D", - "кеше": "1D" + "дүйсенбі": "0Wd", + "осы аптада": "0Wl", + "кеше": "1D", + "сейсенбі": "1Wd", + "өткен аптада": "1Wl", + "сәрсенбі": "2Wd", + "бейсенбі": "3Wd", + "жұма": "4Wd", + "сенбі": "5Wd", + "жексенбі": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -2147,8 +2859,19 @@ "ធ្នូ": 12 }, "timeago_nd_tokens": { + "ថ្ងៃនេះ": "0D", "បានធ្វើបច្ចុប្បន្នភាពនៅថ្ងៃនេះ": "0D", - "បានធ្វើបច្ចុប្បន្នភាពម្សិលមិញ": "1D" + "ចន្ទ": "0Wd", + "សប្ដាហ៍នេះ": "0Wl", + "បានធ្វើបច្ចុប្បន្នភាពម្សិលមិញ": "1D", + "ម្សិលមិញ": "1D", + "អង្គារ": "1Wd", + "សប្ដាហ៍មុន": "1Wl", + "ពុធ": "2Wd", + "ព្រហស្បតិ៍": "3Wd", + "សុក្រ": "4Wd", + "សៅរ៍": "5Wd", + "អាទិត្យ": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -2199,18 +2922,32 @@ "ಫೆಬ್ರವರಿ": 2, "ಮಾರ್ಚ್": 3, "ಏಪ್ರಿ": 4, + "ಏಪ್ರಿಲ್": 4, "ಮೇ": 5, "ಜೂನ್": 6, "ಜುಲೈ": 7, "ಆಗಸ್ಟ್": 8, "ಸೆಪ್ಟೆಂ": 9, + "ಸೆಪ್ಟೆಂಬರ್": 9, "ಅಕ್ಟೋ": 10, + "ಅಕ್ಟೋಬರ್": 10, "ನವೆಂ": 11, - "ಡಿಸೆಂ": 12 + "ನವೆಂಬರ್": 11, + "ಡಿಸೆಂ": 12, + "ಡಿಸೆಂಬರ್": 12 }, "timeago_nd_tokens": { "ಇಂದು": "0D", - "ನಿನ್ನೆ": "1D" + "ಸೋಮವಾರ": "0Wd", + "ಈ ವಾರ": "0Wl", + "ನಿನ್ನೆ": "1D", + "ಮಂಗಳವಾರ": "1Wd", + "ಕಳೆದ ವಾರ": "1Wl", + "ಬುಧವಾರ": "2Wd", + "ಗುರುವಾರ": "3Wd", + "ಶುಕ್ರವಾರ": "4Wd", + "ಶನಿವಾರ": "5Wd", + "ಭಾನುವಾರ": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -2246,7 +2983,16 @@ "months": {}, "timeago_nd_tokens": { "오늘": "0D", - "어제": "1D" + "월요일": "0Wd", + "이번 주": "0Wl", + "어제": "1D", + "화요일": "1Wd", + "지난주": "1Wl", + "수요일": "2Wd", + "목요일": "3Wd", + "금요일": "4Wd", + "토요일": "5Wd", + "일요일": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -2285,21 +3031,42 @@ "date_order": "YD", "months": { "янв": 1, + "январь": 1, "фев": 2, + "февраль": 2, "мар": 3, + "март": 3, "апр": 4, + "апрель": 4, "май": 5, "июн": 6, + "июнь": 6, "июл": 7, + "июль": 7, "авг": 8, + "август": 8, "сен": 9, + "сентябрь": 9, "окт": 10, + "октябрь": 10, "ноя": 11, - "дек": 12 + "ноябрь": 11, + "дек": 12, + "декабрь": 12 }, "timeago_nd_tokens": { "бүгүн": "0D", - "кечээ": "1D" + "бүгүнкү": "0D", + "дүйшөмбү": "0Wd", + "ушул аптадагы": "0Wl", + "кечээ": "1D", + "шейшемби": "1Wd", + "өткөн аптадагы": "1Wl", + "шаршемби": "2Wd", + "бейшемби": "3Wd", + "жума": "4Wd", + "ишемби": "5Wd", + "жекшемби": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -2342,21 +3109,44 @@ "date_order": "DY", "months": { "ມກ": 1, + "ມັງກອນ": 1, "ກພ": 2, + "ກຸມພາ": 2, "ມນ": 3, + "ມີນາ": 3, "ມສ": 4, + "ເມສາ": 4, "ພພ": 5, + "ພຶດສະພາ": 5, "ມິຖ": 6, + "ມິຖຸນາ": 6, "ກລ": 7, + "ກໍລະກົດ": 7, "ສຫ": 8, + "ສິງຫາ": 8, "ກຍ": 9, + "ກັນຍາ": 9, "ຕລ": 10, + "ຕຸລາ": 10, "ພຈ": 11, - "ທວ": 12 + "ພະຈິກ": 11, + "ທວ": 12, + "ທັນວາ": 12 }, "timeago_nd_tokens": { + "ມື້ນີ້": "0D", "ອັບເດດມື້ນີ້": "0D", - "ອັດເດດມື້ວານນີ້": "1D" + "ວັນຈັນ": "0Wd", + "ອາທິດນີ້": "0Wl", + "ມື້ວານນີ້": "1D", + "ອັດເດດມື້ວານນີ້": "1D", + "ວັນອັງຄານ": "1Wd", + "ອາທິດຜ່ານມາ": "1Wl", + "ວັນພຸດ": "2Wd", + "ວັນພະຫັດ": "3Wd", + "ວັນສຸກ": "4Wd", + "ວັນເສົາ": "5Wd", + "ວັນອາທິດ": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -2419,10 +3209,32 @@ "metus": "Y" }, "date_order": "YMD", - "months": {}, + "months": { + "sausis": 1, + "vasaris": 2, + "kovas": 3, + "balandis": 4, + "gegužė": 5, + "birželis": 6, + "liepa": 7, + "rugpjūtis": 8, + "rugsėjis": 9, + "spalis": 10, + "lapkritis": 11, + "gruodis": 12 + }, "timeago_nd_tokens": { "šiandien": "0D", - "vakar": "1D" + "pirmadienis": "0Wd", + "šią savaitę": "0Wl", + "vakar": "1D", + "antradienis": "1Wd", + "praėjusią savaitę": "1Wl", + "trečiadienis": "2Wd", + "ketvirtadienis": "3Wd", + "penktadienis": "4Wd", + "šeštadienis": "5Wd", + "sekmadienis": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -2476,21 +3288,40 @@ "date_order": "YD", "months": { "janv": 1, + "janvāris": 1, "febr": 2, + "februāris": 2, "marts": 3, "apr": 4, + "aprīlis": 4, "maijs": 5, "jūn": 6, + "jūnijs": 6, "jūl": 7, + "jūlijs": 7, "aug": 8, + "augusts": 8, "sept": 9, + "septembris": 9, "okt": 10, + "oktobris": 10, "nov": 11, - "dec": 12 + "novembris": 11, + "dec": 12, + "decembris": 12 }, "timeago_nd_tokens": { "šodien": "0D", - "vakar": "1D" + "pirmdiena": "0Wd", + "šajā nedēļā": "0Wl", + "vakar": "1D", + "otrdiena": "1Wd", + "iepriekšējā nedēļā": "1Wl", + "trešdiena": "2Wd", + "ceturtdiena": "3Wd", + "piektdiena": "4Wd", + "sestdiena": "5Wd", + "svētdiena": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -2534,10 +3365,32 @@ "години": "Y" }, "date_order": "DMY", - "months": {}, + "months": { + "јануари": 1, + "февруари": 2, + "март": 3, + "април": 4, + "мај": 5, + "јуни": 6, + "јули": 7, + "август": 8, + "септември": 9, + "октомври": 10, + "ноември": 11, + "декември": 12 + }, "timeago_nd_tokens": { "денес": "0D", - "вчера": "1D" + "понеделник": "0Wd", + "оваа седмица": "0Wl", + "вчера": "1D", + "вторник": "1Wd", + "минатата недела": "1Wl", + "среда": "2Wd", + "четврток": "3Wd", + "петок": "4Wd", + "сабота": "5Wd", + "недела": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -2577,21 +3430,39 @@ "date_order": "YD", "months": { "ജനു": 1, + "ജനുവരി": 1, "ഫെബ്രു": 2, + "ഫെബ്രുവരി": 2, "മാർ": 3, + "മാർച്ച്": 3, "ഏപ്രി": 4, + "ഏപ്രിൽ": 4, "മേയ്": 5, "ജൂൺ": 6, "ജൂലൈ": 7, "ഓഗ": 8, + "ഓഗസ്റ്റ്": 8, "സെപ്റ്റം": 9, + "സെപ്റ്റംബർ": 9, "ഒക്ടോ": 10, + "ഒക്‌ടോബർ": 10, "നവം": 11, - "ഡിസം": 12 + "നവംബർ": 11, + "ഡിസം": 12, + "ഡിസംബർ": 12 }, "timeago_nd_tokens": { "ഇന്ന്": "0D", - "ഇന്നലെ": "1D" + "തിങ്കളാഴ്‌ച": "0Wd", + "ഈ ആഴ്‌ച": "0Wl", + "ഇന്നലെ": "1D", + "ചൊവ്വാഴ്‌ച": "1Wd", + "കഴിഞ്ഞ ആഴ്ച": "1Wl", + "ബുധനാഴ്‌ച": "2Wd", + "വ്യാഴാഴ്‌ച": "3Wd", + "വെള്ളിയാഴ്‌ച": "4Wd", + "ശനിയാഴ്‌ച": "5Wd", + "ഞായറാഴ്‌ച": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -2630,10 +3501,30 @@ "жилийн": "Y" }, "date_order": "YMD", - "months": {}, + "months": { + "гуравдугаар": 3, + "дөрөвдүгээр": 4, + "тавдугаар": 5, + "зургаадугаар": 6, + "долоодугаар": 7, + "наймдугаар": 8, + "есдүгээр": 9, + "аравдугаар": 10, + "нэгдүгээр": 11, + "хоёрдугаар": 12 + }, "timeago_nd_tokens": { "өнөөдөр": "0D", - "өчигдөр": "1D" + "даваа": "0Wd", + "энэ долоо хоног": "0Wl", + "өчигдөр": "1D", + "мягмар": "1Wd", + "өнгөрсөн долоо хоног": "1Wl", + "лхагва": "2Wd", + "пүрэв": "3Wd", + "баасан": "4Wd", + "бямба": "5Wd", + "ням": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -2681,23 +3572,40 @@ }, "date_order": "DY", "months": { - "जाने,": 1, - "फेब्रु,": 2, - "मार्च,": 3, - "एप्रि,": 4, - "मे,": 5, - "जून,": 6, - "जुलै,": 7, - "ऑग,": 8, - "सप्टें,": 9, - "ऑक्टो,": 10, - "नोव्हें,": 11, - "डिसें,": 12 + "जाने": 1, + "जानेवारी": 1, + "फेब्रु": 2, + "फेब्रुवारी": 2, + "मार्च": 3, + "एप्रि": 4, + "एप्रिल": 4, + "मे": 5, + "जून": 6, + "जुलै": 7, + "ऑग": 8, + "ऑगस्ट": 8, + "सप्टें": 9, + "सप्टेंबर": 9, + "ऑक्टो": 10, + "ऑक्टोबर": 10, + "नोव्हें": 11, + "नोव्हेंबर": 11, + "डिसें": 12, + "डिसेंबर": 12 }, "timeago_nd_tokens": { "today": "0D", "आज": "0D", - "काल": "1D" + "सोमवार": "0Wd", + "या आठवड्यात": "0Wl", + "काल": "1D", + "मंगळवार": "1Wd", + "मागील आठवड्यात": "1Wl", + "बुधवार": "2Wd", + "गुरुवार": "3Wd", + "शुक्रवार": "4Wd", + "शनिवार": "5Wd", + "रविवार": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -2738,21 +3646,39 @@ "date_order": "DY", "months": { "jan": 1, + "januari": 1, "feb": 2, + "februari": 2, "mac": 3, "apr": 4, + "april": 4, "mei": 5, "jun": 6, "jul": 7, + "julai": 7, "ogo": 8, + "ogos": 8, "sep": 9, + "september": 9, "okt": 10, + "oktober": 10, "nov": 11, - "dis": 12 + "november": 11, + "dis": 12, + "disember": 12 }, "timeago_nd_tokens": { "ini": "0D", - "semalam": "1D" + "isnin": "0Wd", + "minggu ini": "0Wl", + "semalam": "1D", + "selasa": "1Wd", + "minggu lepas": "1Wl", + "rabu": "2Wd", + "khamis": "3Wd", + "jumaat": "4Wd", + "sabtu": "5Wd", + "ahad": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -2790,21 +3716,39 @@ "date_order": "YD", "months": { "ဇန်": 1, + "ဇန်နဝါရီ": 1, "ဖေ": 2, + "ဖေဖော်ဝါရီ": 2, "မတ်": 3, "ဧ": 4, + "ဧပြီ": 4, "မေ": 5, "ဇွန်": 6, "ဇူ": 7, + "ဇူလိုင်": 7, "ဩ": 8, + "ဩဂုတ်": 8, "စက်": 9, + "စက်တင်ဘာ": 9, "အောက်": 10, + "အောက်တိုဘာ": 10, "နို": 11, - "ဒီ": 12 + "နိုဝင်ဘာ": 11, + "ဒီ": 12, + "ဒီဇင်ဘာ": 12 }, "timeago_nd_tokens": { "ယနေ့": "0D", - "မနေ့က": "1D" + "တနင်္လာ": "0Wd", + "ယခုအပတ်": "0Wl", + "မနေ့က": "1D", + "အင်္ဂါ": "1Wd", + "ယခင်အပတ်": "1Wl", + "ဗုဒ္ဓဟူး": "2Wd", + "ကြာသပတေး": "3Wd", + "သောကြာ": "4Wd", + "စနေ": "5Wd", + "တနင်္ဂနွေ": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -2859,7 +3803,16 @@ }, "timeago_nd_tokens": { "आज": "0D", - "हिजो": "1D" + "सोमबार": "0Wd", + "यस हप्ता": "0Wl", + "हिजो": "1D", + "मङ्गलबार": "1Wd", + "पछिल्लो हप्ता": "1Wl", + "बुधबार": "2Wd", + "बिहिबार": "3Wd", + "शुक्रबार": "4Wd", + "शनिबार": "5Wd", + "आइतबार": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -2904,21 +3857,41 @@ "date_order": "DY", "months": { "jan": 1, + "januari": 1, "feb": 2, + "februari": 2, + "maart": 3, "mrt": 3, "apr": 4, + "april": 4, "mei": 5, "jun": 6, + "juni": 6, "jul": 7, + "juli": 7, "aug": 8, + "augustus": 8, "sep": 9, + "september": 9, "okt": 10, + "oktober": 10, "nov": 11, - "dec": 12 + "november": 11, + "dec": 12, + "december": 12 }, "timeago_nd_tokens": { "vandaag": "0D", - "gisteren": "1D" + "maandag": "0Wd", + "deze week": "0Wl", + "gisteren": "1D", + "dinsdag": "1Wd", + "afgelopen week": "1Wl", + "woensdag": "2Wd", + "donderdag": "3Wd", + "vrijdag": "4Wd", + "zaterdag": "5Wd", + "zondag": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -2966,24 +3939,41 @@ "date_order": "DY", "months": { "jan": 1, + "januar": 1, "feb": 2, + "februar": 2, "mar": 3, "mars": 3, "apr": 4, + "april": 4, "mai": 5, "jun": 6, "juni": 6, "jul": 7, "juli": 7, "aug": 8, + "august": 8, "sep": 9, + "september": 9, "okt": 10, + "oktober": 10, "nov": 11, - "des": 12 + "november": 11, + "des": 12, + "desember": 12 }, "timeago_nd_tokens": { "dag": "0D", - "går": "1D" + "mandag": "0Wd", + "denne uken": "0Wl", + "går": "1D", + "tirsdag": "1Wd", + "forrige uke": "1Wl", + "onsdag": "2Wd", + "torsdag": "3Wd", + "fredag": "4Wd", + "lørdag": "5Wd", + "søndag": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -3040,7 +4030,16 @@ }, "timeago_nd_tokens": { "ଆଜି": "0D", - "ଗତକାଲି": "1D" + "ସୋମବାର": "0Wd", + "ଏହି ସପ୍ତାହ": "0Wl", + "ଗତକାଲି": "1D", + "ମଙ୍ଗଳବାର": "1Wd", + "ଗତ ସପ୍ତାହ": "1Wl", + "ବୁଧବାର": "2Wd", + "ଗୁରୁବାର": "3Wd", + "ଶୁକ୍ରବାର": "4Wd", + "ଶନିବାର": "5Wd", + "ରବିବାର": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -3085,21 +4084,39 @@ "date_order": "DY", "months": { "ਜਨ": 1, + "ਜਨਵਰੀ": 1, "ਫ਼ਰ": 2, + "ਫ਼ਰਵਰੀ": 2, "ਮਾਰਚ": 3, "ਅਪ੍ਰੈ": 4, + "ਅਪ੍ਰੈਲ": 4, "ਮਈ": 5, "ਜੂਨ": 6, "ਜੁਲਾ": 7, + "ਜੁਲਾਈ": 7, "ਅਗ": 8, + "ਅਗਸਤ": 8, "ਸਤੰ": 9, + "ਸਤੰਬਰ": 9, "ਅਕਤੂ": 10, + "ਅਕਤੂਬਰ": 10, "ਨਵੰ": 11, - "ਦਸੰ": 12 + "ਨਵੰਬਰ": 11, + "ਦਸੰ": 12, + "ਦਸੰਬਰ": 12 }, "timeago_nd_tokens": { "ਅੱਜ": "0D", - "ਕੱਲ੍ਹ": "1D" + "ਸੋਮਵਾਰ": "0Wd", + "ਇਸ ਹਫ਼ਤੇ": "0Wl", + "ਕੱਲ੍ਹ": "1D", + "ਮੰਗਲਵਾਰ": "1Wd", + "ਪਿਛਲੇ ਹਫ਼ਤੇ": "1Wl", + "ਬੁੱਧਵਾਰ": "2Wd", + "ਵੀਰਵਾਰ": "3Wd", + "ਸ਼ੁੱਕਰਵਾਰ": "4Wd", + "ਸ਼ਨਿੱਚਰਵਾਰ": "5Wd", + "ਐਤਵਾਰ": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -3161,21 +4178,42 @@ "date_order": "DY", "months": { "sty": 1, + "styczeń": 1, "lut": 2, + "luty": 2, "mar": 3, + "marzec": 3, "kwi": 4, + "kwiecień": 4, "maj": 5, "cze": 6, + "czerwiec": 6, "lip": 7, + "lipiec": 7, "sie": 8, + "sierpień": 8, "wrz": 9, + "wrzesień": 9, "paź": 10, + "październik": 10, "lis": 11, - "gru": 12 + "listopad": 11, + "gru": 12, + "grudzień": 12 }, "timeago_nd_tokens": { + "dziś": "0D", "dzisiaj": "0D", - "wczoraj": "1D" + "poniedziałek": "0Wd", + "w tym tygodniu": "0Wl", + "wczoraj": "1D", + "wtorek": "1Wd", + "w zeszłym tygodniu": "1Wl", + "środa": "2Wd", + "czwartek": "3Wd", + "piątek": "4Wd", + "sobota": "5Wd", + "niedziela": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -3223,21 +4261,42 @@ "date_order": "DY", "months": { "jan": 1, + "janeiro": 1, "fev": 2, + "fevereiro": 2, "mar": 3, + "março": 3, "abr": 4, + "abril": 4, "mai": 5, + "maio": 5, "jun": 6, + "junho": 6, "jul": 7, + "julho": 7, "ago": 8, + "agosto": 8, "set": 9, + "setembro": 9, "out": 10, + "outubro": 10, "nov": 11, - "dez": 12 + "novembro": 11, + "dez": 12, + "dezembro": 12 }, "timeago_nd_tokens": { "hoje": "0D", - "ontem": "1D" + "segunda feira": "0Wd", + "esta semana": "0Wl", + "ontem": "1D", + "terça feira": "1Wd", + "semana passada": "1Wl", + "quarta feira": "2Wd", + "quinta feira": "3Wd", + "sexta feira": "4Wd", + "sábado": "5Wd", + "domingo": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -3282,10 +4341,32 @@ "anos": "Y" }, "date_order": "DMY", - "months": {}, + "months": { + "janeiro": 1, + "fevereiro": 2, + "março": 3, + "abril": 4, + "maio": 5, + "junho": 6, + "julho": 7, + "agosto": 8, + "setembro": 9, + "outubro": 10, + "novembro": 11, + "dezembro": 12 + }, "timeago_nd_tokens": { "hoje": "0D", - "ontem": "1D" + "segunda feira": "0Wd", + "esta semana": "0Wl", + "ontem": "1D", + "terça feira": "1Wd", + "a semana passada": "1Wl", + "quarta feira": "2Wd", + "quinta feira": "3Wd", + "sexta feira": "4Wd", + "sábado": "5Wd", + "domingo": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -3331,21 +4412,41 @@ "date_order": "DY", "months": { "ian": 1, + "ianuarie": 1, "feb": 2, + "februarie": 2, "mar": 3, + "martie": 3, "apr": 4, + "aprilie": 4, "mai": 5, "iun": 6, + "iunie": 6, "iul": 7, + "iulie": 7, "aug": 8, + "august": 8, "sept": 9, + "septembrie": 9, "oct": 10, + "octombrie": 10, + "noiembrie": 11, "nov": 11, - "dec": 12 + "dec": 12, + "decembrie": 12 }, "timeago_nd_tokens": { "astăzi": "0D", - "ieri": "1D" + "luni": "0Wd", + "săptămâna aceasta": "0Wl", + "ieri": "1D", + "marți": "1Wd", + "săptămâna trecută": "1Wl", + "miercuri": "2Wd", + "joi": "3Wd", + "vineri": "4Wd", + "sâmbătă": "5Wd", + "duminică": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -3406,21 +4507,42 @@ "date_order": "DY", "months": { "янв": 1, + "январь": 1, "февр": 2, + "февраль": 2, "мар": 3, + "март": 3, "апр": 4, + "апрель": 4, + "май": 5, "мая": 5, "июн": 6, + "июнь": 6, "июл": 7, + "июль": 7, "авг": 8, + "август": 8, "сент": 9, + "сентябрь": 9, "окт": 10, + "октябрь": 10, "нояб": 11, - "дек": 12 + "ноябрь": 11, + "дек": 12, + "декабрь": 12 }, "timeago_nd_tokens": { "сегодня": "0D", - "вчера": "1D" + "понедельник": "0Wd", + "на этой неделе": "0Wl", + "вчера": "1D", + "вторник": "1Wd", + "на прошлой неделе": "1Wl", + "среда": "2Wd", + "четверг": "3Wd", + "пятница": "4Wd", + "суббота": "5Wd", + "воскресенье": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -3456,21 +4578,37 @@ "date_order": "YD", "months": { "ජන": 1, + "ජනවාරි": 1, "පෙබ": 2, + "පෙබරවාරි": 2, "මාර්තු": 3, "අප්‍රේල්": 4, "මැයි": 5, "ජූනි": 6, "ජූලි": 7, "අගෝ": 8, + "අගෝස්තු": 8, "සැප්": 9, + "සැප්තැම්බර්": 9, "ඔක්": 10, + "ඔක්තෝබර්": 10, "නොවැ": 11, - "දෙසැ": 12 + "නොවැම්බර්": 11, + "දෙසැ": 12, + "දෙසැම්බර්": 12 }, "timeago_nd_tokens": { "අද": "0D", - "ඊයේ": "1D" + "සඳුදා": "0Wd", + "මෙම සතිය": "0Wl", + "ඊයේ": "1D", + "අඟහරුවාදා": "1Wd", + "පසුගිය සතිය": "1Wl", + "බදාදා": "2Wd", + "බ්‍රහස්පතින්දා": "3Wd", + "සිකුරාදා": "4Wd", + "සෙනසුරාදා": "5Wd", + "ඉරිදා": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -3528,10 +4666,32 @@ "rokom": "Y" }, "date_order": "DMY", - "months": {}, + "months": { + "január": 1, + "február": 2, + "marec": 3, + "apríl": 4, + "máj": 5, + "jún": 6, + "júl": 7, + "august": 8, + "september": 9, + "október": 10, + "november": 11, + "december": 12 + }, "timeago_nd_tokens": { "dnes": "0D", - "včera": "1D" + "pondelok": "0Wd", + "tento týždeň": "0Wl", + "včera": "1D", + "utorok": "1Wd", + "minulý týždeň": "1Wl", + "streda": "2Wd", + "štvrtok": "3Wd", + "piatok": "4Wd", + "sobota": "5Wd", + "nedeľa": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -3596,21 +4756,41 @@ "date_order": "DY", "months": { "jan": 1, + "januar": 1, "feb": 2, + "februar": 2, "mar": 3, + "marec": 3, "apr": 4, + "april": 4, "maj": 5, "jun": 6, + "junij": 6, "jul": 7, + "julij": 7, "avg": 8, + "avgust": 8, "sep": 9, + "september": 9, "okt": 10, + "oktober": 10, "nov": 11, - "dec": 12 + "november": 11, + "dec": 12, + "december": 12 }, "timeago_nd_tokens": { "danes": "0D", - "včeraj": "1D" + "ponedeljek": "0Wd", + "ta teden": "0Wl", + "včeraj": "1D", + "torek": "1Wd", + "prejšnji teden": "1Wl", + "sreda": "2Wd", + "četrtek": "3Wd", + "petek": "4Wd", + "sobota": "5Wd", + "nedelja": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -3651,21 +4831,41 @@ "date_order": "DY", "months": { "jan": 1, + "janar": 1, "shk": 2, + "shkurt": 2, "mar": 3, + "mars": 3, "pri": 4, + "prill": 4, "maj": 5, "qer": 6, + "qershor": 6, "korr": 7, + "korrik": 7, "gush": 8, + "gusht": 8, "sht": 9, + "shtator": 9, "tet": 10, + "tetor": 10, "nën": 11, - "dhj": 12 + "nëntor": 11, + "dhj": 12, + "dhjetor": 12 }, "timeago_nd_tokens": { "sot": "0D", - "dje": "1D" + "hënë": "0Wd", + "këtë javë": "0Wl", + "dje": "1D", + "martë": "1Wd", + "javën e kaluar": "1Wl", + "mërkurë": "2Wd", + "enjte": "3Wd", + "premte": "4Wd", + "shtunë": "5Wd", + "diel": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -3714,10 +4914,32 @@ "године": "Y" }, "date_order": "DMY", - "months": {}, + "months": { + "јануар": 1, + "фебруар": 2, + "март": 3, + "април": 4, + "мај": 5, + "јун": 6, + "јул": 7, + "август": 8, + "септембар": 9, + "октобар": 10, + "новембар": 11, + "децембар": 12 + }, "timeago_nd_tokens": { "данас": "0D", - "јуче": "1D" + "понедељак": "0Wd", + "ове недеље": "0Wl", + "јуче": "1D", + "уторак": "1Wd", + "прошле недеље": "1Wl", + "среда": "2Wd", + "четвртак": "3Wd", + "петак": "4Wd", + "субота": "5Wd", + "недеља": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -3766,10 +4988,32 @@ "godine": "Y" }, "date_order": "DMY", - "months": {}, + "months": { + "januar": 1, + "februar": 2, + "mart": 3, + "april": 4, + "maj": 5, + "jun": 6, + "jul": 7, + "avgust": 8, + "septembar": 9, + "oktobar": 10, + "novembar": 11, + "decembar": 12 + }, "timeago_nd_tokens": { "danas": "0D", - "juče": "1D" + "ponedeljak": "0Wd", + "ove nedelje": "0Wl", + "juče": "1D", + "utorak": "1Wd", + "prošle nedelje": "1Wl", + "sreda": "2Wd", + "četvrtak": "3Wd", + "petak": "4Wd", + "subota": "5Wd", + "nedelja": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -3817,21 +5061,38 @@ "date_order": "DY", "months": { "jan": 1, + "januari": 1, "feb": 2, + "februari": 2, "mars": 3, "apr": 4, + "april": 4, "maj": 5, "juni": 6, "juli": 7, "aug": 8, + "augusti": 8, "sep": 9, + "september": 9, "okt": 10, + "oktober": 10, "nov": 11, - "dec": 12 + "november": 11, + "dec": 12, + "december": 12 }, "timeago_nd_tokens": { "dag": "0D", - "går": "1D" + "måndag": "0Wd", + "den här veckan": "0Wl", + "går": "1D", + "tisdag": "1Wd", + "förra veckan": "1Wl", + "onsdag": "2Wd", + "torsdag": "3Wd", + "fredag": "4Wd", + "lördag": "5Wd", + "söndag": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -3868,21 +5129,41 @@ "date_order": "DY", "months": { "jan": 1, + "januari": 1, "feb": 2, + "februari": 2, "mac": 3, + "machi": 3, "apr": 4, + "aprili": 4, "mei": 5, "jun": 6, + "juni": 6, "jul": 7, + "julai": 7, "ago": 8, + "agosti": 8, "sep": 9, + "septemba": 9, "okt": 10, + "oktoba": 10, "nov": 11, - "des": 12 + "novemba": 11, + "des": 12, + "desemba": 12 }, "timeago_nd_tokens": { "leo": "0D", - "jana": "1D" + "jumatatu": "0Wd", + "wiki hii": "0Wl", + "jana": "1D", + "jumanne": "1Wd", + "wiki iliyopita": "1Wl", + "jumatano": "2Wd", + "alhamisi": "3Wd", + "ijumaa": "4Wd", + "jumamosi": "5Wd", + "jumapili": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -3933,22 +5214,40 @@ }, "date_order": "DY", "months": { - "ஜன,": 1, - "பிப்,": 2, - "மார்,": 3, - "ஏப்,": 4, - "மே,": 5, - "ஜூன்,": 6, - "ஜூலை,": 7, - "ஆக,": 8, - "செப்,": 9, - "அக்,": 10, - "நவ,": 11, - "டிச,": 12 + "ஜன": 1, + "ஜனவரி": 1, + "பிப்": 2, + "பிப்ரவரி": 2, + "மார்": 3, + "மார்ச்": 3, + "ஏப்": 4, + "ஏப்ரல்": 4, + "மே": 5, + "ஜூன்": 6, + "ஜூலை": 7, + "ஆக": 8, + "ஆகஸ்ட்": 8, + "செப்": 9, + "செப்டம்பர்": 9, + "அக்": 10, + "அக்டோபர்": 10, + "நவ": 11, + "நவம்பர்": 11, + "டிச": 12, + "டிசம்பர்": 12 }, "timeago_nd_tokens": { "இன்று": "0D", - "நேற்று": "1D" + "திங்கள்": "0Wd", + "இந்த வாரம்": "0Wl", + "நேற்று": "1D", + "செவ்வாய்": "1Wd", + "கடந்த வாரம்": "1Wl", + "புதன்": "2Wd", + "வியாழன்": "3Wd", + "வெள்ளி": "4Wd", + "சனி": "5Wd", + "ஞாயிறு": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -3995,22 +5294,40 @@ }, "date_order": "DY", "months": { - "జన,": 1, - "ఫిబ్ర,": 2, - "మార్చి,": 3, - "ఏప్రి,": 4, - "మే,": 5, - "జూన్,": 6, - "జులై,": 7, - "ఆగ,": 8, - "సెప్టెం,": 9, - "అక్టో,": 10, - "నవం,": 11, - "డిసెం,": 12 + "జన": 1, + "జనవరి": 1, + "ఫిబ్ర": 2, + "ఫిబ్రవరి": 2, + "మార్చి": 3, + "ఏప్రి": 4, + "ఏప్రిల్": 4, + "మే": 5, + "జూన్": 6, + "జులై": 7, + "ఆగ": 8, + "ఆగస్టు": 8, + "సెప్టెం": 9, + "సెప్టెంబర్": 9, + "అక్టో": 10, + "అక్టోబర్": 10, + "నవం": 11, + "నవంబర్": 11, + "డిసెం": 12, + "డిసెంబర్": 12 }, "timeago_nd_tokens": { "ఈ": "0D", - "నిన్న": "1D" + "నేడు": "0D", + "సోమవారం": "0Wd", + "ఈ వారం": "0Wl", + "నిన్న": "1D", + "మంగళవారం": "1Wd", + "గత వారం": "1Wl", + "బుధవారం": "2Wd", + "గురువారం": "3Wd", + "శుక్రవారం": "4Wd", + "శనివారం": "5Wd", + "ఆదివారం": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -4055,22 +5372,45 @@ }, "date_order": "DY", "months": { + "มกราคม": 1, "มค": 1, "กพ": 2, + "กุมภาพันธ์": 2, "มีค": 3, + "มีนาคม": 3, "เมย": 4, + "เมษายน": 4, "พค": 5, + "พฤษภาคม": 5, + "มิถุนายน": 6, "มิย": 6, "กค": 7, + "กรกฎาคม": 7, "สค": 8, + "สิงหาคม": 8, "กย": 9, + "กันยายน": 9, "ตค": 10, + "ตุลาคม": 10, "พย": 11, - "ธค": 12 + "พฤศจิกายน": 11, + "ธค": 12, + "ธันวาคม": 12 }, "timeago_nd_tokens": { + "วันนี้": "0D", "อัปเดตแล้ววันนี้": "0D", - "อัปเดตเมื่อวานนี้": "1D" + "วันจันทร์": "0Wd", + "สัปดาห์นี้": "0Wl", + "เมื่อวานนี้": "1D", + "อัปเดตเมื่อวานนี้": "1D", + "วันอังคาร": "1Wd", + "สัปดาห์ที่แล้ว": "1Wl", + "วันพุธ": "2Wd", + "วันพฤหัสบดี": "3Wd", + "วันศุกร์": "4Wd", + "วันเสาร์": "5Wd", + "วันอาทิตย์": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -4113,21 +5453,42 @@ "date_order": "DY", "months": { "oca": 1, + "ocak": 1, "şub": 2, + "şubat": 2, "mar": 3, + "mart": 3, "nis": 4, + "nisan": 4, "may": 5, + "mayıs": 5, "haz": 6, + "haziran": 6, "tem": 7, + "temmuz": 7, "ağu": 8, + "ağustos": 8, "eyl": 9, + "eylül": 9, "eki": 10, + "ekim": 10, "kas": 11, - "ara": 12 + "kasım": 11, + "ara": 12, + "aralık": 12 }, "timeago_nd_tokens": { "bugün": "0D", - "dün": "1D" + "pazartesi": "0Wd", + "bu hafta": "0Wl", + "dün": "1D", + "salı": "1Wd", + "geçen hafta": "1Wl", + "çarşamba": "2Wd", + "perşembe": "3Wd", + "cuma": "4Wd", + "cumartesi": "5Wd", + "pazar": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -4190,21 +5551,43 @@ "date_order": "DY", "months": { "січ": 1, + "січень": 1, "лют": 2, + "лютий": 2, "бер": 3, + "березень": 3, "квіт": 4, + "квітень": 4, "трав": 5, + "травень": 5, "черв": 6, + "червень": 6, "лип": 7, + "липень": 7, "серп": 8, + "серпень": 8, "вер": 9, + "вересень": 9, "жовт": 10, + "жовтень": 10, "лист": 11, - "груд": 12 + "листопад": 11, + "груд": 12, + "грудень": 12 }, "timeago_nd_tokens": { "сьогодні": "0D", - "вчора": "1D" + "понеділок": "0Wd", + "цього тижня": "0Wl", + "вчора": "1D", + "учора": "1D", + "вівторок": "1Wd", + "минулого тижня": "1Wl", + "середа": "2Wd", + "четвер": "3Wd", + "пʼятниця": "4Wd", + "субота": "5Wd", + "неділя": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -4247,22 +5630,43 @@ }, "date_order": "DY", "months": { + "جنوری": 1, "جنوری،": 1, + "فروری": 2, "فروری،": 2, + "مارچ": 3, "مارچ،": 3, + "اپریل": 4, "اپریل،": 4, + "مئی": 5, "مئی،": 5, + "جون": 6, "جون،": 6, + "جولائی": 7, "جولائی،": 7, + "اگست": 8, "اگست،": 8, + "ستمبر": 9, "ستمبر،": 9, + "اکتوبر": 10, "اکتوبر،": 10, + "نومبر": 11, "نومبر،": 11, + "دسمبر": 12, "دسمبر،": 12 }, "timeago_nd_tokens": { "آج": "0D", - "کل": "1D" + "پیر": "0Wd", + "اس ہفتے": "0Wl", + "کل": "1D", + "منگل": "1Wd", + "گزشتہ ہفتہ": "1Wl", + "بدھ": "2Wd", + "جمعرات": "3Wd", + "جمعہ": "4Wd", + "ہفتہ": "5Wd", + "اتوار": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -4300,22 +5704,42 @@ }, "date_order": "DY", "months": { - "yan,": 1, - "fev,": 2, - "mar,": 3, - "apr,": 4, - "may,": 5, - "iyn,": 6, - "iyl,": 7, - "avg,": 8, - "sen,": 9, - "okt,": 10, - "noy,": 11, - "dek,": 12 + "yan": 1, + "yanvar": 1, + "fev": 2, + "fevral": 2, + "mar": 3, + "mart": 3, + "apr": 4, + "aprel": 4, + "may": 5, + "iyn": 6, + "iyun": 6, + "iyl": 7, + "iyul": 7, + "avg": 8, + "avgust": 8, + "sen": 9, + "sentabr": 9, + "okt": 10, + "oktabr": 10, + "noy": 11, + "noyabr": 11, + "dek": 12, + "dekabr": 12 }, "timeago_nd_tokens": { "bugun": "0D", - "kecha": "1D" + "dushanba": "0Wd", + "shu haftada": "0Wl", + "kecha": "1D", + "seshanba": "1Wd", + "o‘tgan hafta": "1Wl", + "chorshanba": "2Wd", + "payshanba": "3Wd", + "juma": "4Wd", + "shanba": "5Wd", + "yakshanba": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -4350,7 +5774,16 @@ "months": {}, "timeago_nd_tokens": { "nay": "0D", - "qua": "1D" + "thứ hai": "0Wd", + "tuần này": "0Wl", + "qua": "1D", + "thứ ba": "1Wd", + "tuần trước": "1Wl", + "thứ tư": "2Wd", + "thứ năm": "3Wd", + "thứ sáu": "4Wd", + "thứ bảy": "5Wd", + "chủ nhật": "6Wd" }, "comma_decimal": true, "number_tokens": { @@ -4382,10 +5815,32 @@ "年": "Y" }, "date_order": "YMD", - "months": {}, + "months": { + "一月": 1, + "二月": 2, + "三月": 3, + "四月": 4, + "五月": 5, + "六月": 6, + "七月": 7, + "八月": 8, + "九月": 9, + "十月": 10, + "十一月": 11, + "十二月": 12 + }, "timeago_nd_tokens": { "今": "0D", - "昨": "1D" + "一": "0Wd", + "本周": "0Wl", + "昨": "1D", + "二": "1Wd", + "上周": "1Wl", + "三": "2Wd", + "四": "3Wd", + "五": "4Wd", + "六": "5Wd", + "日": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -4422,7 +5877,16 @@ "months": {}, "timeago_nd_tokens": { "今": "0D", - "昨": "1D" + "一": "0Wd", + "本星期": "0Wl", + "昨": "1D", + "二": "1Wd", + "上星期": "1Wl", + "三": "2Wd", + "四": "3Wd", + "五": "4Wd", + "六": "5Wd", + "日": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -4456,7 +5920,16 @@ "months": {}, "timeago_nd_tokens": { "今": "0D", - "昨": "1D" + "一": "0Wd", + "本週": "0Wl", + "昨": "1D", + "二": "1Wd", + "上週": "1Wl", + "三": "2Wd", + "四": "3Wd", + "五": "4Wd", + "六": "5Wd", + "日": "6Wd" }, "comma_decimal": false, "number_tokens": { @@ -4506,21 +5979,43 @@ "date_order": "DY", "months": { "jan": 1, + "januwari": 1, "feb": 2, + "februwari": 2, "mas": 3, + "mashi": 3, "eph": 4, + "ephreli": 4, "mey": 5, + "meyi": 5, "jun": 6, + "juni": 6, "jul": 7, + "julayi": 7, "aga": 8, + "agasti": 8, "sep": 9, + "septhemba": 9, "okt": 10, + "okthoba": 10, "nov": 11, - "dis": 12 + "novemba": 11, + "dis": 12, + "disemba": 12 }, "timeago_nd_tokens": { + "namhlanje": "0D", "namuhla": "0D", - "izolo": "1D" + "umsombuluko": "0Wd", + "leli viki": "0Wl", + "izolo": "1D", + "ulwesibili": "1Wd", + "iviki eledlule": "1Wl", + "ulwesithathu": "2Wd", + "ulwesine": "3Wd", + "ulwesihlanu": "4Wd", + "umgqibelo": "5Wd", + "isonto": "6Wd" }, "comma_decimal": false, "number_tokens": { diff --git a/testfiles/dict/history_date_samples.json b/testfiles/dict/history_date_samples.json new file mode 100644 index 0000000..0d6668c --- /dev/null +++ b/testfiles/dict/history_date_samples.json @@ -0,0 +1,334 @@ +{ + "af": { + "this_week": "Vandeesweek", + "last_week": "Verlede week" + }, + "am": { + "this_week": "በዚህ ሳምንት", + "last_week": "ያለፈው ሳምንት" + }, + "ar": { + "this_week": "هذا الأسبوع", + "last_week": "الأسبوع الماضي" + }, + "as": { + "this_week": "এই সপ্তাহৰ", + "last_week": "যোৱা সপ্তাহৰ" + }, + "az": { + "this_week": "Bu həftə", + "last_week": "Ötən həftə" + }, + "be": { + "this_week": "На гэтым тыдні", + "last_week": "На мінулым тыдні" + }, + "bg": { + "this_week": "Тази седмица", + "last_week": "Последната седмица" + }, + "bn": { + "this_week": "এই সপ্তাহে", + "last_week": "গত সপ্তাহ" + }, + "bs": { + "this_week": "Ova sedmica", + "last_week": "Prošla sedmica" + }, + "ca": { + "this_week": "Aquesta setmana", + "last_week": "La setmana passada" + }, + "cs": { + "this_week": "Tento týden", + "last_week": "Minulý týden" + }, + "da": { + "this_week": "Denne uge", + "last_week": "Sidste uge" + }, + "de": { + "this_week": "Diese Woche", + "last_week": "Letzte Woche" + }, + "el": { + "this_week": "Αυτήν την εβδομάδα", + "last_week": "Τελευταία εβδομάδα" + }, + "en": { + "this_week": "This week", + "last_week": "Last week" + }, + "en-GB": { + "this_week": "This week", + "last_week": "Last week" + }, + "en-IN": { + "this_week": "This week", + "last_week": "Last week" + }, + "es": { + "this_week": "Esta semana", + "last_week": "La semana pasada" + }, + "es-419": { + "this_week": "Esta semana", + "last_week": "La semana pasada" + }, + "es-US": { + "this_week": "Esta semana", + "last_week": "La semana pasada" + }, + "et": { + "this_week": "Sellel nädalal", + "last_week": "Eelmisel nädalal" + }, + "eu": { + "this_week": "Aste hau", + "last_week": "Joan den astea" + }, + "fa": { + "this_week": "این هفته", + "last_week": "هفته قبل" + }, + "fi": { + "this_week": "Tällä viikolla", + "last_week": "Viime viikolla" + }, + "fil": { + "this_week": "Ngayong linggo", + "last_week": "Nakaraang linggo" + }, + "fr": { + "this_week": "Cette semaine", + "last_week": "La semaine dernière" + }, + "fr-CA": { + "this_week": "Cette semaine", + "last_week": "La semaine dernière" + }, + "gl": { + "this_week": "Esta semana", + "last_week": "A semana pasada" + }, + "gu": { + "this_week": "આ અઠવાડિયે", + "last_week": "છેલ્લું અઠવાડિયું" + }, + "hi": { + "this_week": "इस हफ़्ते", + "last_week": "पिछले हफ़्ते" + }, + "hr": { + "this_week": "Ovaj tjedan", + "last_week": "Prošli tjedan" + }, + "hu": { + "this_week": "Ezen a héten", + "last_week": "Múlt héten" + }, + "hy": { + "this_week": "Այս շաբաթ", + "last_week": "Անցյալ շաբաթ" + }, + "id": { + "this_week": "Minggu ini", + "last_week": "Minggu lalu" + }, + "is": { + "this_week": "Í vikunni", + "last_week": "Í síðustu viku" + }, + "it": { + "this_week": "Questa settimana", + "last_week": "Ultima settimana" + }, + "iw": { + "this_week": "השבוע", + "last_week": "בשבוע שעבר" + }, + "ja": { + "this_week": "今週", + "last_week": "先週" + }, + "ka": { + "this_week": "ამ კვირაში", + "last_week": "გასულ კვირაში" + }, + "kk": { + "this_week": "Осы аптада", + "last_week": "Өткен аптада" + }, + "km": { + "this_week": "សប្ដាហ៍​នេះ", + "last_week": "សប្ដាហ៍​មុន" + }, + "kn": { + "this_week": "ಈ ವಾರ", + "last_week": "ಕಳೆದ ವಾರ" + }, + "ko": { + "this_week": "이번 주", + "last_week": "지난주" + }, + "ky": { + "this_week": "Ушул аптадагы", + "last_week": "Өткөн аптадагы" + }, + "lo": { + "this_week": "ອາທິດນີ້", + "last_week": "ອາທິດຜ່ານ​ມາ" + }, + "lt": { + "this_week": "Šią savaitę", + "last_week": "Praėjusią savaitę" + }, + "lv": { + "this_week": "Šajā nedēļā", + "last_week": "Iepriekšējā nedēļā" + }, + "mk": { + "this_week": "Оваа седмица", + "last_week": "Минатата недела" + }, + "ml": { + "this_week": "ഈ ആഴ്‌ച", + "last_week": "കഴിഞ്ഞ ആഴ്ച" + }, + "mn": { + "this_week": "Энэ долоо хоног", + "last_week": "Өнгөрсөн долоо хоног" + }, + "mr": { + "this_week": "या आठवड्यात", + "last_week": "मागील आठवड्यात" + }, + "ms": { + "this_week": "Minggu ini", + "last_week": "Minggu lepas" + }, + "my": { + "this_week": "ယခုအပတ်", + "last_week": "ယခင်အပတ်" + }, + "ne": { + "this_week": "यस हप्ता", + "last_week": "पछिल्लो हप्ता" + }, + "nl": { + "this_week": "Deze week", + "last_week": "Afgelopen week" + }, + "no": { + "this_week": "Denne uken", + "last_week": "Forrige uke" + }, + "or": { + "this_week": "ଏହି ସପ୍ତାହ", + "last_week": "ଗତ ସପ୍ତାହ" + }, + "pa": { + "this_week": "ਇਸ ਹਫ਼ਤੇ", + "last_week": "ਪਿਛਲੇ ਹਫ਼ਤੇ" + }, + "pl": { + "this_week": "W tym tygodniu", + "last_week": "W zeszłym tygodniu" + }, + "pt": { + "this_week": "Esta semana", + "last_week": "Semana passada" + }, + "pt-PT": { + "this_week": "Esta semana", + "last_week": "A semana passada" + }, + "ro": { + "this_week": "Săptămâna aceasta", + "last_week": "Săptămâna trecută" + }, + "ru": { + "this_week": "На этой неделе", + "last_week": "На прошлой неделе" + }, + "si": { + "this_week": "මෙම සතිය", + "last_week": "පසුගිය සතිය" + }, + "sk": { + "this_week": "Tento týždeň", + "last_week": "Minulý týždeň" + }, + "sl": { + "this_week": "Ta teden", + "last_week": "Prejšnji teden" + }, + "sq": { + "this_week": "Këtë javë", + "last_week": "Javën e kaluar" + }, + "sr": { + "this_week": "Ове недеље", + "last_week": "Прошле недеље" + }, + "sr-Latn": { + "this_week": "Ove nedelje", + "last_week": "Prošle nedelje" + }, + "sv": { + "this_week": "Den här veckan", + "last_week": "Förra veckan" + }, + "sw": { + "this_week": "Wiki hii", + "last_week": "Wiki iliyopita" + }, + "ta": { + "this_week": "இந்த வாரம்", + "last_week": "கடந்த வாரம்" + }, + "te": { + "this_week": "ఈ వారం", + "last_week": "గత వారం" + }, + "th": { + "this_week": "สัปดาห์นี้", + "last_week": "สัปดาห์ที่แล้ว" + }, + "tr": { + "this_week": "Bu hafta", + "last_week": "Geçen hafta" + }, + "uk": { + "this_week": "Цього тижня", + "last_week": "Минулого тижня" + }, + "ur": { + "this_week": "اس ہفتے", + "last_week": "گزشتہ ہفتہ" + }, + "uz": { + "this_week": "Shu haftada", + "last_week": "O‘tgan hafta" + }, + "vi": { + "this_week": "Tuần này", + "last_week": "Tuần trước" + }, + "zh-CN": { + "this_week": "本周", + "last_week": "上周" + }, + "zh-HK": { + "this_week": "本星期", + "last_week": "上星期" + }, + "zh-TW": { + "this_week": "本週", + "last_week": "上週" + }, + "zu": { + "this_week": "Leli viki", + "last_week": "Iviki eledlule" + } +} diff --git a/tests/youtube.rs b/tests/youtube.rs index 8c5b2d6..ca9e69b 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -5,7 +5,7 @@ use std::fmt::Display; use std::str::FromStr; use rstest::{fixture, rstest}; -use rustypipe::model::TrackType; +use rustypipe::model::{HistoryItem, TrackItem, TrackType, VideoItem}; use rustypipe::param::{AlbumOrder, LANGUAGES}; use time::{macros::date, OffsetDateTime}; @@ -2751,7 +2751,7 @@ async fn history(rp: RustyPipe, cookie_auth_enabled: bool) { } let videos = rp.query().history().await.unwrap(); - assert_next_items(videos, rp.query(), 100).await; + assert_next_history(videos, rp.query(), 100).await; } #[rstest] @@ -2762,7 +2762,7 @@ async fn history_search(rp: RustyPipe, cookie_auth_enabled: bool) { } let videos = rp.query().history_search("a").await.unwrap(); - assert_next_items(videos, rp.query(), 5).await; + assert_next_history(videos, rp.query(), 5).await; } #[rstest] @@ -2817,7 +2817,7 @@ async fn music_history(rp: RustyPipe, cookie_auth_enabled: bool) { } let tracks = rp.query().music_history().await.unwrap(); - assert_next_items(tracks, rp.query(), 150).await; + assert_next_music_history(tracks, rp.query(), 150).await; } #[rstest] @@ -2998,6 +2998,30 @@ async fn assert_next_items>( assert_gte(p.items.len(), n_items, "items"); } +/// Assert that the history paginator produces at least n items +async fn assert_next_history>( + paginator: Paginator>, + query: Q, + n_items: usize, +) { + let mut p = paginator; + let query = query.as_ref(); + p.extend_limit(query, n_items).await.unwrap(); + assert_gte(p.items.len(), n_items, "items"); +} + +/// Assert that the music history paginator produces at least n items +async fn assert_next_music_history>( + paginator: Paginator>, + query: Q, + n_items: usize, +) { + let mut p = paginator; + let query = query.as_ref(); + p.extend_limit(query, n_items).await.unwrap(); + assert_gte(p.items.len(), n_items, "items"); +} + #[track_caller] fn assert_frameset(frameset: &Frameset) { assert_gte(frameset.frame_height, 20, "frame height"); From 63f86b6e186aa1d2dcaf7e9169ccebb2265e5905 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 4 Jan 2025 00:50:29 +0100 Subject: [PATCH 071/191] fix: parsing numbers (it), dates (kn) --- src/util/dictionary.rs | 40 +++++++++++++++++++--------------- src/util/timeago.rs | 6 +++++ testfiles/dict/dictionary.json | 4 ++++ 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/src/util/dictionary.rs b/src/util/dictionary.rs index 52a8ffd..43b0dec 100644 --- a/src/util/dictionary.rs +++ b/src/util/dictionary.rs @@ -3924,14 +3924,15 @@ pub(crate) fn entry(lang: Language) -> Entry { }, comma_decimal: true, number_tokens: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (0, 0), + (3, 0), ], entries: &[ ("mio", 6), - ("mln", 6), ("mrd", 9), + ("mld", 9), + ("mln", 6), ], }, number_nd_tokens: ::phf::Map { @@ -4549,31 +4550,34 @@ pub(crate) fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 10121458955350035957, + key: 8602556344903797927, disps: &[ - (0, 3), - (2, 2), - (5, 2), - (4, 0), + (5, 0), + (0, 0), + (2, 11), + (19, 14), ], entries: &[ - ("ಅಕ\u{ccd}ಟ\u{ccb}", 10), - ("ಅಕ\u{ccd}ಟ\u{ccb}ಬರ\u{ccd}", 10), - ("ಜುಲ\u{cc8}", 7), - ("ನವ\u{cc6}ಂಬರ\u{ccd}", 11), + ("ಆಗ", 8), ("ಫ\u{cc6}ಬ\u{ccd}ರವರ\u{cbf}", 2), - ("ಸ\u{cc6}ಪ\u{ccd}ಟ\u{cc6}ಂ", 9), - ("ಜ\u{cc2}ನ\u{ccd}", 6), + ("ಜನವರ\u{cbf}", 1), + ("ಅಕ\u{ccd}ಟ\u{ccb}", 10), ("ಮ\u{cc7}", 5), ("ನವ\u{cc6}ಂ", 11), + ("ಏಪ\u{ccd}ರ\u{cbf}", 4), + ("ಸ\u{cc6}ಪ\u{ccd}ಟ\u{cc6}ಂ", 9), + ("ಏಪ\u{ccd}ರ\u{cbf}ಲ\u{ccd}", 4), ("ಡ\u{cbf}ಸ\u{cc6}ಂಬರ\u{ccd}", 12), + ("ಜನ", 1), + ("ಜ\u{cc2}ನ\u{ccd}", 6), + ("ಆಗಸ\u{ccd}ಟ\u{ccd}", 8), + ("ಜುಲ\u{cc8}", 7), + ("ಅಕ\u{ccd}ಟ\u{ccb}ಬರ\u{ccd}", 10), ("ಸ\u{cc6}ಪ\u{ccd}ಟ\u{cc6}ಂಬರ\u{ccd}", 9), + ("ಫ\u{cc6}ಬ\u{ccd}ರ", 2), + ("ನವ\u{cc6}ಂಬರ\u{ccd}", 11), ("ಡ\u{cbf}ಸ\u{cc6}ಂ", 12), ("ಮಾರ\u{ccd}ಚ\u{ccd}", 3), - ("ಜನವರ\u{cbf}", 1), - ("ಏಪ\u{ccd}ರ\u{cbf}", 4), - ("ಏಪ\u{ccd}ರ\u{cbf}ಲ\u{ccd}", 4), - ("ಆಗಸ\u{ccd}ಟ\u{ccd}", 8), ], }, timeago_nd_tokens: ::phf::Map { diff --git a/src/util/timeago.rs b/src/util/timeago.rs index b1c2006..5ccb4fa 100644 --- a/src/util/timeago.rs +++ b/src/util/timeago.rs @@ -865,11 +865,17 @@ mod tests { for (t, entry) in entries { entry.cases.iter().for_each(|(txt, n)| { let timeago = parse_timeago(*lang, txt); + let textual_date = parse_textual_date(*lang, txt); assert_eq!( timeago, Some(TimeAgo { n: *n, unit: *t }), "lang: {lang}, txt: {txt}" ); + assert_eq!( + textual_date, + Some(ParsedDate::Relative(TimeAgo { n: *n, unit: *t })), + "textual_date lang: {lang}, txt: {txt}" + ); n_cases += 1; }); diff --git a/testfiles/dict/dictionary.json b/testfiles/dict/dictionary.json index deae2c9..be82dde 100644 --- a/testfiles/dict/dictionary.json +++ b/testfiles/dict/dictionary.json @@ -2526,6 +2526,7 @@ "number_tokens": { "mio": 6, "mln": 6, + "mld": 9, "mrd": 9 }, "number_nd_tokens": { @@ -2918,7 +2919,9 @@ }, "date_order": "DY", "months": { + "ಜನ": 1, "ಜನವರಿ": 1, + "ಫೆಬ್ರ": 2, "ಫೆಬ್ರವರಿ": 2, "ಮಾರ್ಚ್": 3, "ಏಪ್ರಿ": 4, @@ -2926,6 +2929,7 @@ "ಮೇ": 5, "ಜೂನ್": 6, "ಜುಲೈ": 7, + "ಆಗ": 8, "ಆಗಸ್ಟ್": 8, "ಸೆಪ್ಟೆಂ": 9, "ಸೆಪ್ಟೆಂಬರ್": 9, From 3c95b52ceaf0df2d67ee0d2f2ac658f666f29836 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 4 Jan 2025 20:08:51 +0100 Subject: [PATCH 072/191] feat: add session headers when using cookie auth --- src/client/mod.rs | 90 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 84 insertions(+), 6 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index f8e7871..0c6130f 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -277,6 +277,15 @@ struct OauthToken { expires_at: OffsetDateTime, } +#[derive(Debug, Clone, Serialize, Deserialize)] +struct AuthCookie { + cookie: String, + #[serde(skip_serializing_if = "Option::is_none")] + account_syncid: Option, + #[serde(skip_serializing_if = "Option::is_none")] + session_index: Option, +} + impl OauthToken { fn from_response( value: OauthTokenResponseInner, @@ -293,6 +302,16 @@ impl OauthToken { } } +impl AuthCookie { + fn new(cookie: String) -> Self { + Self { + cookie, + account_syncid: None, + session_index: None, + } + } +} + const DEFAULT_UA: &str = "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0"; const MOBILE_UA: &str = "Mozilla/5.0 (Android 14; Mobile; rv:129.0) Gecko/129.0 Firefox/129.0"; const TV_UA: &str = "Mozilla/5.0 (SMART-TV; Linux; Tizen 5.0) AppleWebKit/538.1 (KHTML, like Gecko) Version/5.0 NativeTVAds Safari/538.1"; @@ -489,7 +508,7 @@ struct CacheHolder { clients: HashMap>>, deobf: AsyncRwLock>, oauth_token: RwLock>, - auth_cookie: RwLock>, + auth_cookie: RwLock>, } #[derive(Default, Debug, Clone, Serialize, Deserialize)] @@ -501,7 +520,7 @@ struct CacheData { #[serde(skip_serializing_if = "Option::is_none")] oauth_token: Option, #[serde(skip_serializing_if = "Option::is_none")] - auth_cookie: Option, + auth_cookie: Option, } #[derive(Default, Debug, Clone, Serialize, Deserialize)] @@ -1455,9 +1474,61 @@ impl RustyPipe { /// /// I recommend to log in using Incognito mode, get the cookies from the devtools /// and then close the page. - pub async fn set_auth_cookie>(&self, cookie: S) { + pub async fn set_auth_cookie>(&self, cookie: S) -> Result<(), Error> { + let mut auth_cookie = AuthCookie::new(cookie.into()); + self.extract_session_headers(&mut auth_cookie).await?; + let mut c = self.inner.cache.auth_cookie.write().unwrap(); - *c = Some(cookie.into()); + *c = Some(auth_cookie); + Ok(()) + } + + /// Since YouTube allows multiple channels/profiles per account, cookie-authenticated requests must include + /// the X-Goog-AuthUser and X-Goog-PageId headers to specify which account should be used. + /// + /// The header values are included in the ytcfg object which is embedded in the html code. + async fn extract_session_headers(&self, auth_cookie: &mut AuthCookie) -> Result<(), Error> { + let re_session_id = Regex::new(r#"""USER_SESSION_ID"":"[\d]+?""#).unwrap(); + let re_sync_id = Regex::new(r#""datasyncId":"([\w|]+?)""#).unwrap(); + let re_session_index = Regex::new(r#""SESSION_INDEX":"([\d]+?)""#).unwrap(); + + let req = self + .inner + .http + .get("https://www.youtube.com/results?search_query=") + .header(header::COOKIE, &auth_cookie.cookie) + .build()?; + let html = self.http_request_txt(&req).await?; + + if !re_session_id.is_match(&html) { + return Err(Error::Auth(AuthError::NoLogin)); + } + + let datasync_id = + util::get_cg_from_regex(&re_sync_id, &html, 1).ok_or(Error::Extraction( + ExtractionError::InvalidData("could not find datasyncId on html page".into()), + ))?; + + // datasyncid is of the form "channel_syncid||user_syncid" for secondary channel + // and just "user_syncid||" for primary channel. We only want the channel_syncid + let (channel_syncid, user_syncid) = + datasync_id + .split_once("||") + .ok_or(Error::Extraction(ExtractionError::InvalidData( + "datasyncId does not contain || seperator".into(), + )))?; + auth_cookie.account_syncid = if user_syncid.is_empty() { + None + } else { + Some(channel_syncid.to_owned()) + }; + + auth_cookie.session_index = Some( + util::get_cg_from_regex(&re_session_index, &html, 1).ok_or(Error::Extraction( + ExtractionError::InvalidData("could not find SESSION_INDEX on html page".into()), + ))?, + ); + Ok(()) } } @@ -1842,10 +1913,17 @@ impl RustyPipeQuery { .unwrap() .clone() .ok_or(Error::Auth(AuthError::NoLogin))?; - if let Some(auth_header) = Self::sapisidhash_header(&auth_cookie, ctype) { + + if let Some(auth_header) = Self::sapisidhash_header(&auth_cookie.cookie, ctype) { r = r.header(header::AUTHORIZATION, auth_header); } - cookie = Some(auth_cookie); + if let Some(session_index) = auth_cookie.session_index { + r = r.header("X-Goog-AuthUser", session_index); + } + if let Some(account_syncid) = auth_cookie.account_syncid { + r = r.header("X-Goog-PageId", account_syncid); + } + cookie = Some(auth_cookie.cookie); } else if ctype == ClientType::Tv { let access_token = self.client.user_auth_access_token().await?; r = r.header(header::AUTHORIZATION, format!("Bearer {}", access_token)); From cf498e4a8f9318b0197bc3f0cbaf7043c53adb9d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 5 Jan 2025 02:52:30 +0100 Subject: [PATCH 073/191] feat: add cookies.txt parser, add cookie auth + history cmds to CLI --- cli/src/main.rs | 195 +++++++++++++++++++++++++++++++++++++++------- src/client/mod.rs | 82 +++++++++++++++---- src/util/mod.rs | 94 ++++++++++++++++++++++ 3 files changed, 328 insertions(+), 43 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index 0a1f568..350055f 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -201,12 +201,41 @@ enum Commands { #[clap(short, long)] music: Option, }, + /// Get your playback history + History { + /// Output format + #[clap(short, long, value_parser)] + format: Option, + /// Pretty-print output + #[clap(long)] + pretty: bool, + /// Limit the number of items to fetch + #[clap(short, long, default_value_t = 20)] + limit: usize, + /// Use YouTube Music + #[clap(short, long)] + music: bool, + /// Search YouTube playback history + #[clap(long)] + search: Option, + }, /// Get a YouTube visitor data cookie Vdata, /// Log in using your Google account - Login, + Login { + /// Log in using YouTube cookies (otherwise OAuth is used) + #[clap(long)] + cookie: bool, + /// Path to cookie.txt + #[clap(long)] + cookies_txt: Option, + }, /// Log out from your Google account - Logout, + Logout { + /// Remove stored YouTube cookies (otherwise OAuth is used) + #[clap(long)] + cookie: bool, + }, } #[derive(Default, Copy, Clone, ValueEnum)] @@ -363,19 +392,23 @@ fn print_data(data: &T, format: Format, pretty: bool) { fn print_entities(items: &[impl YtEntity], with_type: bool) { for e in items { - if with_type { - if let Some(t) = e.music_item_type() { - anstream::print!("{: >8} ", format!("{t:?}").dimmed()); - } - } - anstream::print!("[{}] {}", e.id(), e.name().bold()); - if let Some(n) = e.channel_name() { - anstream::print!(" - {}", n.cyan()); - } - println!(); + print_entity(e, with_type); } } +fn print_entity(e: &impl YtEntity, with_type: bool) { + if with_type { + if let Some(t) = e.music_item_type() { + anstream::print!("{: >8} ", format!("{t:?}").dimmed()); + } + } + anstream::print!("[{}] {}", e.id(), e.name().bold()); + if let Some(n) = e.channel_name() { + anstream::print!(" - {}", n.cyan()); + } + println!(); +} + fn print_tracks(tracks: &[TrackItem]) { for t in tracks { if let Some(n) = t.track_nr { @@ -1292,28 +1325,136 @@ async fn run() -> anyhow::Result<()> { print_music_search(&res, format, pretty, false); } }, + Commands::History { + format, + pretty, + limit, + music, + search, + } => { + if music { + let mut history = rp.query().music_history().await?; + history.extend_limit(rp.query(), limit).await?; + + match format { + Some(format) => print_data(&history, format, pretty), + None => { + anstream::println!("{}", "[Music history]".on_green().black()); + + let mut last_date = None; + for item in history.items { + if last_date != item.playback_date { + println!(); + if let Some(dt) = item.playback_date { + anstream::println!("{}", dt.green().underline()); + } + last_date = item.playback_date; + } + + let t = item.item; + anstream::print!("[{}] {} - ", t.id, t.name.bold()); + print_artists(&t.artists); + print_duration(t.duration); + println!(); + } + } + } + } else { + let mut history = match search { + Some(query) => rp.query().history_search(query).await?, + None => rp.query().history().await?, + }; + history.extend_limit(rp.query(), limit).await?; + + match format { + Some(format) => print_data(&history, format, pretty), + None => { + anstream::println!("{}", "[History]".on_green().black()); + + let mut last_date = None; + for item in history.items { + if last_date != item.playback_date { + println!(); + if let Some(dt) = item.playback_date { + anstream::println!("{}", dt.green().underline()); + } + last_date = item.playback_date; + } + print_entity(&item.item, false); + } + } + } + } + } Commands::Vdata => { let vd = rp.query().get_visitor_data().await?; println!("{vd}"); } - Commands::Login => { - match rp.user_auth_check_login().await { - Ok(_) => {} - Err(rustypipe::error::Error::Auth(_)) => { - let device_code = rp.user_auth_get_code().await?; - println!( - "Open {} and enter the following code:", - device_code.verification_url - ); - anstream::println!("{}", device_code.user_code.blue()); - rp.user_auth_wait_for_login(&device_code).await?; + Commands::Login { + cookie, + cookies_txt, + } => { + if cookie || cookies_txt.is_some() { + match rp.user_auth_check_cookie().await { + Ok(_) => { + println!("Already logged in."); + } + Err(rustypipe::error::Error::Auth(_)) => { + let cookie_raw = if let Some(cookie_txt) = cookies_txt { + std::fs::read_to_string(cookie_txt)? + } else { + println!("Enter cookie header or cookies.txt:"); + + // Read until 2 consecutive newlines + let mut line = String::new(); + let mut last_len = 0; + let mut stop = 0; + while stop < 2 { + std::io::stdin().read_line(&mut line)?; + if line.len() <= last_len + 1 { + stop += 1; + } else { + stop = 0; + } + last_len = line.len(); + } + line + }; + + if cookie_raw.contains('\t') { + rp.user_auth_set_cookie_txt(&cookie_raw).await?; + } else { + rp.user_auth_set_cookie(cookie_raw.trim()).await?; + } + anstream::println!("{}", "Logged in.".green()); + } + Err(e) => return Err(e.into()), + } + } else { + match rp.user_auth_check_login().await { + Ok(_) => { + println!("Already logged in."); + } + Err(rustypipe::error::Error::Auth(_)) => { + let device_code = rp.user_auth_get_code().await?; + println!( + "Open {} and enter the following code:", + device_code.verification_url + ); + anstream::println!("{}", device_code.user_code.blue()); + rp.user_auth_wait_for_login(&device_code).await?; + anstream::println!("{}", "Logged in.".green()); + } + Err(e) => return Err(e.into()), } - Err(e) => return Err(e.into()), } - anstream::println!("{}", "Logged in.".green()); } - Commands::Logout => { - rp.user_auth_logout().await?; + Commands::Logout { cookie } => { + if cookie { + rp.user_auth_remove_cookie().await?; + } else { + rp.user_auth_logout().await?; + } anstream::println!("{}", "Logged out.".red()); } }; diff --git a/src/client/mod.rs b/src/client/mod.rs index 0c6130f..0f41bca 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1463,23 +1463,80 @@ impl RustyPipe { } } + /// Get a copy of the authentication cookie from the cache + fn user_auth_cookie(&self) -> Result { + self.inner + .cache + .auth_cookie + .read() + .unwrap() + .clone() + .ok_or(Error::Auth(AuthError::NoLogin)) + } + /// Set the user authentication cookie /// /// The cookie is used for authenticated requests with browser-based clients /// (Desktop, DesktopMusic, Mobile). /// - /// **Note:** YouTube rotates cookies every few minutes when using the web applications. - /// So you should not use the session you obtained cookies from afterwards or it will + /// **Note:** YouTube rotates cookies every few minutes when using the web application. + /// Do not use the session you obtained cookies from afterwards or it will /// become invalid. /// /// I recommend to log in using Incognito mode, get the cookies from the devtools /// and then close the page. - pub async fn set_auth_cookie>(&self, cookie: S) -> Result<(), Error> { - let mut auth_cookie = AuthCookie::new(cookie.into()); + pub async fn user_auth_set_cookie>(&self, cookie: S) -> Result<(), Error> { + let cookie = cookie.into(); + if cookie.is_empty() { + return Err(Error::Auth(AuthError::NoLogin)); + } + let mut auth_cookie = AuthCookie::new(cookie); self.extract_session_headers(&mut auth_cookie).await?; + { + let mut c = self.inner.cache.auth_cookie.write().unwrap(); + *c = Some(auth_cookie); + } + self.store_cache().await; + Ok(()) + } - let mut c = self.inner.cache.auth_cookie.write().unwrap(); - *c = Some(auth_cookie); + /// Parse the user authentication cookie from a Netscape HTTP Cookie File + /// + /// The cookie is used for authenticated requests with browser-based clients + /// (Desktop, DesktopMusic, Mobile). + /// + /// cookie.txt files can be extracted using browser plugins like + /// "Get cookies.txt LOCALLY" ([Firefox](https://addons.mozilla.org/de/firefox/addon/get-cookies-txt-locally/)) + /// ([Chromium](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc)). + /// + /// **Note:** YouTube rotates cookies every few minutes when using the web application. + /// Do not use the session you obtained cookies from afterwards or it will + /// become invalid. + /// + /// I recommend to log in using Incognito mode, obtain the cookies and then close the page. + pub async fn user_auth_set_cookie_txt(&self, cookies: &str) -> Result<(), Error> { + let cookie = util::parse_netscape_cookies(cookies, ".youtube.com")?; + self.user_auth_set_cookie(cookie).await + } + + /// Remove the user authentication cookie from cache storage + pub async fn user_auth_remove_cookie(&self) -> Result<(), Error> { + { + let mut cookie = self.inner.cache.auth_cookie.write().unwrap(); + if cookie.is_none() { + return Err(Error::Auth(AuthError::NoLogin)); + } + *cookie = None; + } + self.store_cache().await; + Ok(()) + } + + /// Attempt to fetch the YouTube website with login cookies to check if the user is successfully logged in + /// and the session is still valid. + pub async fn user_auth_check_cookie(&self) -> Result<(), Error> { + let mut cookie = self.user_auth_cookie()?; + self.extract_session_headers(&mut cookie).await?; Ok(()) } @@ -1488,7 +1545,7 @@ impl RustyPipe { /// /// The header values are included in the ytcfg object which is embedded in the html code. async fn extract_session_headers(&self, auth_cookie: &mut AuthCookie) -> Result<(), Error> { - let re_session_id = Regex::new(r#"""USER_SESSION_ID"":"[\d]+?""#).unwrap(); + let re_session_id = Regex::new(r#""USER_SESSION_ID":"[\d]+?""#).unwrap(); let re_sync_id = Regex::new(r#""datasyncId":"([\w|]+?)""#).unwrap(); let re_session_index = Regex::new(r#""SESSION_INDEX":"([\d]+?)""#).unwrap(); @@ -1501,6 +1558,7 @@ impl RustyPipe { let html = self.http_request_txt(&req).await?; if !re_session_id.is_match(&html) { + tracing::debug!("session check failed: USER_SESSION_ID not found in reponse"); return Err(Error::Auth(AuthError::NoLogin)); } @@ -1904,15 +1962,7 @@ impl RustyPipeQuery { if self.opts.auth == Some(true) { if ctype.is_web() { - let auth_cookie = self - .client - .inner - .cache - .auth_cookie - .read() - .unwrap() - .clone() - .ok_or(Error::Auth(AuthError::NoLogin))?; + let auth_cookie = self.client.user_auth_cookie()?; if let Some(auth_header) = Self::sapisidhash_header(&auth_cookie.cookie, ctype) { r = r.header(header::AUTHORIZATION, auth_header); diff --git a/src/util/mod.rs b/src/util/mod.rs index 4241262..5e53ba7 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -608,6 +608,69 @@ pub fn map_internal_playlist_err(e: Error) -> Error { } } +/// Parse cookies from a Netscape HTTP Cookie File and return a cookie header value +pub fn parse_netscape_cookies(cookies: &str, filter_domain: &str) -> Result { + let mut res = cookies + .lines() + .enumerate() + .map(|(line_n, line)| parse_netscape_cookie_line(line, line_n + 1, filter_domain)) + .try_fold(String::new(), |mut acc, itm| { + if let Some((k, v)) = itm? { + acc += k; + acc.push('='); + acc += v; + acc += "; "; + } + Ok::<_, Error>(acc) + })?; + + if !res.is_empty() { + res.truncate(res.len() - 2); + } + Ok(res) +} + +fn parse_netscape_cookie_line<'a>( + line: &'a str, + line_n: usize, + filter_domain: &str, +) -> Result, Error> { + let mut line = line.trim(); + + if let Some(s) = line.strip_prefix("#HttpOnly_") { + line = s; + } else if line.is_empty() || line.starts_with('#') { + return Ok(None); + } + + let mkerr = || Error::Other(format!("line {line_n}: too few fields, expected 7").into()); + + let mut cols = line.split('\t'); + let domain = cols.next().ok_or_else(mkerr)?; + if domain != filter_domain { + return Ok(None); + } + let include_subdomains = cols.next().ok_or_else(mkerr)?.to_ascii_lowercase() == "true"; + if !include_subdomains { + return Ok(None); + } + let path = cols.next().ok_or_else(mkerr)?; + if path != "/" { + return Ok(None); + } + // skip secure, expire + let name = cols.nth(2).ok_or_else(mkerr)?; + let value = cols.next().ok_or_else(mkerr)?; + + if cols.next().is_some() { + return Err(Error::Other( + format!("line {line_n}: too many fields, expected 7").into(), + )); + } + + Ok(Some((name, value))) +} + #[cfg(test)] pub(crate) mod tests { use std::{fs::File, io::BufReader, path::PathBuf}; @@ -810,4 +873,35 @@ pub(crate) mod tests { Err(0) ); } + + #[test] + fn t_parse_netscape_cookies() { + let cookies = r#"# Netscape HTTP Cookie File +# http://curl.haxx.se/rfc/cookie_spec.html +# This is a generated file! Do not edit. + +# Domain Subdomain Path Secure Expire Name Value +.www.youtube.com TRUE / FALSE 1769704561 yt-dev.storage-integrity true +.youtube.com TRUE / TRUE 1763481937 SOCS Abcdefg +.youtube.com TRUE / TRUE 1744905937 __Secure-BUCKET IE7E +"#; + let filter_domain = ".youtube.com"; + let parsed = parse_netscape_cookies(cookies, filter_domain).unwrap(); + assert_eq!(&parsed, "SOCS=Abcdefg; __Secure-BUCKET=IE7E"); + + let cookies_too_few_cols = r#".youtube.com TRUE / TRUE 1763481937 SOCS"#; + let cookies_too_many_cols = r#".youtube.com TRUE / TRUE 1763481937 SOCS Abcdefg foo"#; + assert_eq!( + parse_netscape_cookies(cookies_too_few_cols, filter_domain) + .unwrap_err() + .to_string(), + "error: line 1: too few fields, expected 7" + ); + assert_eq!( + parse_netscape_cookies(cookies_too_many_cols, filter_domain) + .unwrap_err() + .to_string(), + "error: line 1: too many fields, expected 7" + ); + } } From 97c3f30d180d3e62b7e19f22d191d7fd7614daca Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 5 Jan 2025 03:56:38 +0100 Subject: [PATCH 074/191] fix: accept user-specific playlist ids (LL, WL) --- src/client/url_resolver.rs | 2 +- src/util/mod.rs | 2 ++ src/validate.rs | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/client/url_resolver.rs b/src/client/url_resolver.rs index 40b1b66..3626505 100644 --- a/src/client/url_resolver.rs +++ b/src/client/url_resolver.rs @@ -260,7 +260,7 @@ impl RustyPipeQuery { }) } else if util::CHANNEL_ID_REGEX.is_match(s) { Ok(UrlTarget::Channel { id: s.to_owned() }) - } else if util::PLAYLIST_ID_REGEX.is_match(s) { + } else if util::PLAYLIST_ID_REGEX.is_match(s) || util::USER_PLAYLIST_IDS.contains(&s) { if resolve_albums && s.starts_with(util::PLAYLIST_ID_ALBUM_PREFIX) { self._navigation_resolve_url( &format!("/playlist?list={s}"), diff --git a/src/util/mod.rs b/src/util/mod.rs index 5e53ba7..edebaf9 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -43,6 +43,8 @@ pub const PLAYLIST_ID_ALBUM_PREFIX: &str = "OLAK"; pub const ARTIST_DISCOGRAPHY_PREFIX: &str = "MPAD"; pub const PODCAST_PLAYLIST_PREFIX: &str = "MPSP"; pub const PODCAST_EPISODE_PREFIX: &str = "MPED"; +/// Builtin user-specific playlists (Watch later, Liked videos, Liked tracks, Episodes for later) +pub static USER_PLAYLIST_IDS: [&str; 4] = ["WL", "LL", "LM", "SE"]; const CONTENT_PLAYBACK_NONCE_ALPHABET: &[u8; 64] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; diff --git a/src/validate.rs b/src/validate.rs index 7c43a61..0b3bce5 100644 --- a/src/validate.rs +++ b/src/validate.rs @@ -71,8 +71,9 @@ pub fn channel_id>(channel_id: S) -> Result<(), Error> { /// assert!(validate::playlist_id("Abcd").is_err()); /// ``` pub fn playlist_id>(playlist_id: S) -> Result<(), Error> { + let id = playlist_id.as_ref(); check( - util::PLAYLIST_ID_REGEX.is_match(playlist_id.as_ref()), + util::PLAYLIST_ID_REGEX.is_match(id) || util::USER_PLAYLIST_IDS.contains(&id), "invalid playlist id", ) } From 27f64fc412e833d5bd19ad72913aae19358e98b9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 5 Jan 2025 03:58:05 +0100 Subject: [PATCH 075/191] feat: add method to get saved_playlists --- src/client/history.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/client/history.rs b/src/client/history.rs index cc0f874..2dddc2b 100644 --- a/src/client/history.rs +++ b/src/client/history.rs @@ -7,7 +7,7 @@ use crate::{ error::{Error, ExtractionError}, model::{ paginator::{ContinuationEndpoint, Paginator}, - ChannelItem, HistoryItem, VideoItem, + ChannelItem, HistoryItem, PlaylistItem, VideoItem, }, serializer::MapResult, }; @@ -134,6 +134,18 @@ impl RustyPipeQuery { ) .await } + + /// Get a list of YouTube playlists the current user added to their library + pub async fn saved_playlists(&self) -> Result, Error> { + self.clone() + .authenticated() + .continuation( + "4qmFsgJFEhZGRXBsYXlsaXN0X2FnZ3JlZ2F0aW9uGgRxQUlDmgIkNjc5MjVhZTYtMDAwMC0yYzQyLWFjMjItM2MyODZkNDI1MTQy", + ContinuationEndpoint::Browse, + None, + ) + .await + } } impl MapResponse>> for response::History { From a1b43ad70a66cfcbaba8ef302ac8699f243e56e7 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 5 Jan 2025 04:42:30 +0100 Subject: [PATCH 076/191] feat: add CLI commands to fetch user library and YTM releases/charts --- cli/src/main.rs | 215 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) diff --git a/cli/src/main.rs b/cli/src/main.rs index 350055f..5f216de 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -219,6 +219,86 @@ enum Commands { #[clap(long)] search: Option, }, + /// Get the channels you subscribed to + Subscriptions { + /// Output format + #[clap(short, long, value_parser)] + format: Option, + /// Pretty-print output + #[clap(long)] + pretty: bool, + /// Limit the number of items to fetch + #[clap(short, long, default_value_t = 20)] + limit: usize, + /// Use YouTube Music + #[clap(short, long)] + music: bool, + /// Output YouTube subscription feed + #[clap(long)] + feed: bool, + }, + /// Get the playlists from your library + Playlists { + /// Output format + #[clap(short, long, value_parser)] + format: Option, + /// Pretty-print output + #[clap(long)] + pretty: bool, + /// Limit the number of items to fetch + #[clap(short, long, default_value_t = 20)] + limit: usize, + /// Use YouTube Music + #[clap(short, long)] + music: bool, + }, + /// Get the albums from your library + Albums { + /// Output format + #[clap(short, long, value_parser)] + format: Option, + /// Pretty-print output + #[clap(long)] + pretty: bool, + /// Limit the number of items to fetch + #[clap(short, long, default_value_t = 20)] + limit: usize, + }, + /// Get the tracks from your library + Tracks { + /// Output format + #[clap(short, long, value_parser)] + format: Option, + /// Pretty-print output + #[clap(long)] + pretty: bool, + /// Limit the number of items to fetch + #[clap(short, long, default_value_t = 20)] + limit: usize, + }, + /// Get the latest music releases + Releases { + /// Get latest music videos + #[clap(long)] + videos: bool, + /// Output format + #[clap(short, long, value_parser)] + format: Option, + /// Pretty-print output + #[clap(long)] + pretty: bool, + }, + /// Get YouTube music charts + Charts { + /// Chart country + country: Option, + /// Output format + #[clap(short, long, value_parser)] + format: Option, + /// Pretty-print output + #[clap(long)] + pretty: bool, + }, /// Get a YouTube visitor data cookie Vdata, /// Log in using your Google account @@ -409,6 +489,31 @@ fn print_entity(e: &impl YtEntity, with_type: bool) { println!(); } +fn fmt_print_entities( + items: &[T], + format: Option, + pretty: bool, + title: &str, +) { + match format { + Some(format) => print_data(&items, format, pretty), + None => { + print_h1(title); + print_entities(items, false); + } + } +} + +fn fmt_print_tracks(tracks: &[TrackItem], format: Option, pretty: bool, title: &str) { + match format { + Some(format) => print_data(&tracks, format, pretty), + None => { + print_h1(title); + print_tracks(tracks); + } + } +} + fn print_tracks(tracks: &[TrackItem]) { for t in tracks { if let Some(n) = t.track_nr { @@ -455,6 +560,7 @@ fn print_music_search( match format { Some(format) => print_data(data, format, pretty), None => { + print_h1("Music search"); if let Some(corr) = &data.corrected_query { anstream::println!("Did you mean `{}`?", corr.magenta()); } @@ -472,6 +578,10 @@ fn print_description(desc: Option) { } } +fn print_h1(title: &str) { + anstream::println!("{}", format!("{title}:").on_green().black()); +} + fn print_h2(title: &str) { anstream::println!("\n{}", format!("{title}:").green().underline()); } @@ -1276,6 +1386,7 @@ async fn run() -> anyhow::Result<()> { match format { Some(format) => print_data(&res, format, pretty), None => { + print_h1("Search"); if let Some(corr) = res.corrected_query { anstream::println!("Did you mean `{}`?", corr.magenta()); } @@ -1386,6 +1497,110 @@ async fn run() -> anyhow::Result<()> { } } } + Commands::Subscriptions { + format, + pretty, + limit, + music, + feed, + } => { + if music { + let mut subscriptions = rp.query().music_saved_artists().await?; + subscriptions.extend_limit(rp.query(), limit).await?; + fmt_print_entities(&subscriptions.items, format, pretty, "Music artists"); + } else if feed { + let mut feed = rp.query().subscription_feed().await?; + feed.extend_limit(rp.query(), limit).await?; + fmt_print_entities(&feed.items, format, pretty, "Feed"); + } else { + let mut subscriptions = rp.query().subscriptions().await?; + subscriptions.extend_limit(rp.query(), limit).await?; + fmt_print_entities(&subscriptions.items, format, pretty, "Subscriptions"); + } + } + Commands::Playlists { + format, + pretty, + limit, + music, + } => { + if music { + let mut playlists = rp.query().music_saved_playlists().await?; + playlists.extend_limit(rp.query(), limit).await?; + fmt_print_entities(&playlists.items, format, pretty, "Music playlists"); + } else { + let mut playlists = rp.query().saved_playlists().await?; + playlists.extend_limit(rp.query(), limit).await?; + fmt_print_entities(&playlists.items, format, pretty, "Saved playlists"); + } + } + Commands::Albums { + format, + pretty, + limit, + } => { + let mut albums = rp.query().music_saved_albums().await?; + albums.extend_limit(rp.query(), limit).await?; + fmt_print_entities(&albums.items, format, pretty, "Saved albums"); + } + Commands::Tracks { + format, + pretty, + limit, + } => { + let mut tracks = rp.query().music_saved_tracks().await?; + tracks.extend_limit(rp.query(), limit).await?; + fmt_print_tracks(&tracks.items, format, pretty, "Saved tracks"); + } + Commands::Releases { + videos, + format, + pretty, + } => { + if videos { + let releases = rp.query().music_new_videos().await?; + fmt_print_tracks(&releases, format, pretty, "New music videos"); + } else { + let releases = rp.query().music_new_albums().await?; + fmt_print_entities(&releases, format, pretty, "New albums"); + } + } + Commands::Charts { + country, + format, + pretty, + } => { + let country = match country { + Some(c) => Some(Country::from_str(&c)?), + None => None, + }; + let charts = rp.query().music_charts(country).await?; + match format { + Some(format) => print_data(&charts, format, pretty), + None => { + print_h1("Music charts"); + if let Some(plid) = &charts.top_playlist_id { + print_h2(&format!("Top tracks [{plid}]")); + } else { + print_h2("Top tracks"); + } + print_tracks(&charts.top_tracks); + if let Some(plid) = &charts.trending_playlist_id { + print_h2(&format!("Trending [{plid}]")); + } else { + print_h2("Trending"); + } + print_tracks(&charts.trending_tracks); + print_h2("Artists"); + print_entities(&charts.artists, false); + + if !charts.playlists.is_empty() { + print_h2("Playlists"); + print_entities(&charts.playlists, false); + } + } + } + } Commands::Vdata => { let vd = rp.query().get_visitor_data().await?; println!("{vd}"); From c90d966b17eab24e957d980695888a459707055c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 5 Jan 2025 05:23:18 +0100 Subject: [PATCH 077/191] feat: export subscriptions as OPML / NewPipe JSON --- cli/Cargo.toml | 1 + cli/src/main.rs | 122 ++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 119 insertions(+), 4 deletions(-) diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 1ed00f6..02761bc 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -48,6 +48,7 @@ tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } futures-util.workspace = true serde.workspace = true serde_json.workspace = true +quick-xml.workspace = true indicatif.workspace = true anyhow.workspace = true diff --git a/cli/src/main.rs b/cli/src/main.rs index 5f216de..fee4670 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -223,7 +223,7 @@ enum Commands { Subscriptions { /// Output format #[clap(short, long, value_parser)] - format: Option, + format: Option, /// Pretty-print output #[clap(long)] pretty: bool, @@ -325,6 +325,15 @@ enum Format { Yaml, } +#[derive(Debug, Default, Copy, Clone, ValueEnum)] +enum SubscriptionFormat { + #[default] + Json, + Yaml, + Newpipe, + Opml, +} + #[derive(Debug, Copy, Clone, ValueEnum)] enum ChannelTab { Videos, @@ -402,6 +411,20 @@ enum ClientTypeArg { Ios, } +#[derive(Serialize)] +struct NewpipeSubscriptions { + app_version: &'static str, + app_version_int: u16, + subscriptions: Vec, +} + +#[derive(Serialize)] +struct NewpipeSubscription { + service_id: u16, + url: String, + name: String, +} + impl From for search_filter::ItemType { fn from(value: SearchItemType) -> Self { match value { @@ -456,6 +479,16 @@ impl From for ClientType { } } +impl From for Format { + fn from(value: SubscriptionFormat) -> Self { + match value { + SubscriptionFormat::Json => Self::Json, + SubscriptionFormat::Yaml => Self::Yaml, + _ => Self::default(), + } + } +} + fn print_data(data: &T, format: Format, pretty: bool) { let stdout = std::io::stdout().lock(); match format { @@ -514,6 +547,77 @@ fn fmt_print_tracks(tracks: &[TrackItem], format: Option, pretty: bool, } } +fn fmt_print_subscriptions( + items: &[T], + format: Option, + pretty: bool, + title: &str, +) { + match format { + Some(SubscriptionFormat::Newpipe) => { + let subscriptions = items + .iter() + .map(|itm| NewpipeSubscription { + service_id: 0, + url: format!("https://www.youtube.com/channel/{}", itm.id()), + name: itm.name().to_owned(), + }) + .collect(); + let data = NewpipeSubscriptions { + app_version: "0.24.1", + app_version_int: 991, + subscriptions, + }; + print_data(&data, Format::Json, pretty); + } + Some(SubscriptionFormat::Opml) => { + let mut writer = if pretty { + quick_xml::Writer::new_with_indent(std::io::stdout(), b' ', 2) + } else { + quick_xml::Writer::new(std::io::stdout()) + }; + writer + .create_element("opml") + .with_attribute(("version", "1.1")) + .write_inner_content(|writer| { + writer + .create_element("body") + .write_inner_content(|writer| { + writer + .create_element("outline") + .with_attributes([ + ("text", title), + ("title", title), + ]) + .write_inner_content(|writer| { + for itm in items { + writer + .create_element("outline") + .with_attributes([ + ("text", itm.name()), + ("title", itm.name()), + ("type", "rss"), + ("xmlUrl", &format!("https://www.youtube.com/feeds/videos.xml?channel_id={}", itm.id())), + ]) + .write_empty()?; + } + Ok(()) + })?; + Ok(()) + })?; + Ok(()) + }) + .unwrap(); + println!(); + } + Some(format) => print_data(&items, format.into(), pretty), + None => { + print_h1(title); + print_entities(items, false); + } + } +} + fn print_tracks(tracks: &[TrackItem]) { for t in tracks { if let Some(n) = t.track_nr { @@ -1507,15 +1611,25 @@ async fn run() -> anyhow::Result<()> { if music { let mut subscriptions = rp.query().music_saved_artists().await?; subscriptions.extend_limit(rp.query(), limit).await?; - fmt_print_entities(&subscriptions.items, format, pretty, "Music artists"); + fmt_print_subscriptions( + &subscriptions.items, + format, + pretty, + "YouTube Music artists", + ); } else if feed { let mut feed = rp.query().subscription_feed().await?; feed.extend_limit(rp.query(), limit).await?; - fmt_print_entities(&feed.items, format, pretty, "Feed"); + fmt_print_entities(&feed.items, format.map(Format::from), pretty, "Feed"); } else { let mut subscriptions = rp.query().subscriptions().await?; subscriptions.extend_limit(rp.query(), limit).await?; - fmt_print_entities(&subscriptions.items, format, pretty, "Subscriptions"); + fmt_print_subscriptions( + &subscriptions.items, + format, + pretty, + "YouTube subscriptions", + ); } } Commands::Playlists { From addeb821101aa968b95455604bc13bd24f50328f Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 7 Jan 2025 00:03:33 +0000 Subject: [PATCH 078/191] chore(deps): update rust crate lofty to 0.22.0 --- downloader/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 9a0148a..586f3b8 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -45,7 +45,7 @@ indicatif = { workspace = true, optional = true } filenamify.workspace = true tracing.workspace = true time.workspace = true -lofty = { version = "0.21.0", optional = true } +lofty = { version = "0.22.0", optional = true } image = { version = "0.25.0", optional = true, default-features = false, features = [ "rayon", "jpeg", From 2b2b4af0b26cdd0d4bf2218d3f527abd88658abf Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 6 Jan 2025 02:09:15 +0100 Subject: [PATCH 079/191] fix: only use auth-enabled clients for fetching player with auth option enabled --- src/client/mod.rs | 25 ++++++++++++++++--------- src/client/player.rs | 10 ++++++++-- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 0f41bca..f439d48 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1712,14 +1712,14 @@ impl RustyPipeQuery { } } - /// Return the first client type from the given list which has login credentials available. - /// - /// Returns [`None`] if authentication has been disabled or there are no available client types. - pub fn auth_enabled_client(&self, clients: &[ClientType]) -> Option { - if self.opts.auth == Some(false) { - return None; - } - let (has_cookie, has_token) = { + /// Filter the given list of client types and iterate over those which have login credentials available. + pub fn auth_enabled_clients<'a>( + &self, + clients: &'a [ClientType], + ) -> impl Iterator + 'a { + let (has_cookie, has_token) = if self.opts.auth == Some(false) { + (false, false) + } else { let auth_cookie = self.client.inner.cache.auth_cookie.read().unwrap(); let oauth_token = self.client.inner.cache.oauth_token.read().unwrap(); (auth_cookie.is_some(), oauth_token.is_some()) @@ -1727,7 +1727,7 @@ impl RustyPipeQuery { clients .iter() - .find(|c| { + .filter(move |c| { if c.is_web() { has_cookie } else if **c == ClientType::Tv { @@ -1739,6 +1739,13 @@ impl RustyPipeQuery { .copied() } + /// Return the first client type from the given list which has login credentials available. + /// + /// Returns [`None`] if authentication has been disabled or there are no available client types. + pub fn auth_enabled_client(&self, clients: &[ClientType]) -> Option { + self.auth_enabled_clients(clients).next() + } + /// Create a new context object, which is included in every request to /// the YouTube API and contains language, country and device parameters. /// diff --git a/src/client/player.rs b/src/client/player.rs index 0434a15..f74224f 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -79,8 +79,14 @@ impl RustyPipeQuery { let video_id = video_id.as_ref(); let mut last_e = Error::Other("no clients".into()); - for client in clients { - let res = self.player_from_client(video_id, *client).await; + let clients_iter: Box> = if self.opts.auth == Some(true) { + Box::new(self.auth_enabled_clients(clients)) + } else { + Box::new(clients.iter().cloned()) + }; + + for client in clients_iter { + let res = self.player_from_client(video_id, client).await; match res { Ok(res) => return Ok(res), Err(Error::Extraction(e)) => { From 2af4001c75f2ff4f7c891aa59ac22c2c6b7902a2 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 12 Jan 2025 23:41:55 +0100 Subject: [PATCH 080/191] feat: extract player DRM data --- downloader/tests/tests.rs | 2 +- src/client/history.rs | 2 + src/client/player.rs | 107 ++++++++- src/client/response/mod.rs | 1 + src/client/response/player.rs | 95 +++++++- ...layer__tests__map_player_data_android.snap | 33 +++ ...layer__tests__map_player_data_desktop.snap | 41 ++++ ...__tests__map_player_data_desktopmusic.snap | 29 +++ ...t__player__tests__map_player_data_ios.snap | 9 + ...nt__player__tests__map_player_data_tv.snap | 39 ++++ src/model/mod.rs | 85 +++++++ src/util/mod.rs | 2 +- testfiles/player_model/hdr.json | 136 +++++++---- testfiles/player_model/multilanguage.json | 216 ++++++++++++------ tests/youtube.rs | 4 +- 15 files changed, 673 insertions(+), 128 deletions(-) diff --git a/downloader/tests/tests.rs b/downloader/tests/tests.rs index 3fc035d..aa4a05e 100644 --- a/downloader/tests/tests.rs +++ b/downloader/tests/tests.rs @@ -75,7 +75,7 @@ async fn download_music(rp: RustyPipe) { assert_audio_meta( &res.dest, "Lord of the Riffs", - "Alexander Nakarada - CreatorChords", + "Alexander Nakarada", "Lord of the Riffs", "2022-02-05", ); diff --git a/src/client/history.rs b/src/client/history.rs index 2dddc2b..6852b60 100644 --- a/src/client/history.rs +++ b/src/client/history.rs @@ -136,6 +136,8 @@ impl RustyPipeQuery { } /// Get a list of YouTube playlists the current user added to their library + /// + /// Requires authentication cookies. pub async fn saved_playlists(&self) -> Result, Error> { self.clone() .authenticated() diff --git a/src/client/player.rs b/src/client/player.rs index f74224f..e98142a 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -13,8 +13,9 @@ use crate::{ deobfuscate::{DeobfData, Deobfuscator}, error::{internal::DeobfError, Error, ExtractionError, UnavailabilityReason}, model::{ - traits::QualityOrd, AudioCodec, AudioFormat, AudioStream, AudioTrack, Frameset, Subtitle, - VideoCodec, VideoFormat, VideoPlayer, VideoPlayerDetails, VideoStream, + traits::QualityOrd, AudioCodec, AudioFormat, AudioStream, AudioTrack, DrmLicense, + DrmSystem, Frameset, Subtitle, VideoCodec, VideoFormat, VideoPlayer, VideoPlayerDetails, + VideoPlayerDrm, VideoStream, }, util, }; @@ -57,6 +58,18 @@ struct QContentPlaybackContext<'a> { referer: String, } +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +struct QDrmLicense<'a> { + drm_system: &'a str, + video_id: &'a str, + cpn: &'a str, + session_id: &'a str, + license_request: &'a str, + drm_params: &'a str, + drm_video_feature: &'a str, +} + impl RustyPipeQuery { /// Get YouTube player data (video/audio streams + basic metadata) pub async fn player + Debug>(&self, video_id: S) -> Result { @@ -168,6 +181,43 @@ impl RustyPipeQuery { ) .await } + + /// Get a license to play back DRM protected videos + /// + /// Requires authentication (either via OAuth or cookies). + #[tracing::instrument(skip(self), level = "error")] + pub async fn drm_license( + &self, + video_id: &str, + drm_system: DrmSystem, + session_id: &str, + drm_params: &str, + license_request: &[u8], + ) -> Result { + let client_type = self + .auth_enabled_client(&[ClientType::Desktop, ClientType::Tv]) + .ok_or(Error::Auth(crate::error::AuthError::NoLogin))?; + let request_body = QDrmLicense { + drm_system: drm_system.req_param(), + video_id, + cpn: &util::generate_content_playback_nonce(), + session_id, + license_request: &data_encoding::BASE64.encode(license_request), + drm_params, + drm_video_feature: "DRM_VIDEO_FEATURE_SDR", + }; + + self.clone() + .authenticated() + .execute_request::( + client_type, + "drm_license", + video_id, + "player/get_drm_license", + &request_body, + ) + .await + } } impl MapResponse for response::Player { @@ -352,6 +402,24 @@ impl MapResponse for response::Player { }) .unwrap_or_default(); + let drm = streaming_data + .drm_params + .zip(self.heartbeat_params.drm_session_id) + .map(|(drm_params, drm_session_id)| VideoPlayerDrm { + widevine_service_cert: self + .player_config + .web_drm_config + .and_then(|c| c.widevine_service_cert) + .and_then(|c| data_encoding::BASE64URL.decode(c.as_bytes()).ok()), + drm_params, + authorized_track_types: streaming_data + .initial_authorized_drm_track_types + .into_iter() + .map(|t| t.into()) + .collect(), + drm_session_id, + }); + Ok(MapResult { c: VideoPlayer { details: video_info, @@ -363,6 +431,7 @@ impl MapResponse for response::Player { hls_manifest_url: streaming_data.hls_manifest_url, dash_manifest_url: streaming_data.dash_manifest_url, preview_frames, + drm, client_type: ctx.client_type, visitor_data: self .response_context @@ -587,6 +656,8 @@ impl StreamsMapper { format, codec: get_video_codec(codecs), mime: f.mime_type, + drm_track_type: f.drm_track_type.map(|t| t.into()), + drm_systems: f.drm_families.into_iter().map(|t| t.into()).collect(), }) } @@ -622,6 +693,8 @@ impl StreamsMapper { track: f .audio_track .map(|t| self.map_audio_track(t, map_res.xtags)), + drm_track_type: f.drm_track_type.map(|t| t.into()), + drm_systems: f.drm_families.into_iter().map(|t| t.into()).collect(), }) } @@ -728,6 +801,36 @@ fn get_audio_codec(codecs: Vec<&str>) -> AudioCodec { AudioCodec::Unknown } +impl MapResponse for response::DrmLicense { + fn map_response(self, _ctx: &MapRespCtx<'_>) -> Result, ExtractionError> { + if self.status != "LICENSE_STATUS_OK" { + return Err(ExtractionError::InvalidData(self.status.into())); + } + + let license = DrmLicense { + license: data_encoding::BASE64URL + .decode(self.license.as_bytes()) + .map_err(|_| ExtractionError::InvalidData("license: invalid b64".into()))?, + authorized_formats: self + .authorized_formats + .into_iter() + .filter_map(|f| { + let key: Option<[u8; 16]> = data_encoding::BASE64URL + .decode(f.key_id.as_bytes()) + .ok() + .and_then(|k| k.try_into().ok()); + key.map(|k| (f.track_type.into(), k)) + }) + .collect(), + }; + + Ok(MapResult { + c: license, + warnings: Vec::new(), + }) + } +} + #[cfg(test)] mod tests { use std::{fs::File, io::BufReader}; diff --git a/src/client/response/mod.rs b/src/client/response/mod.rs index e032444..c23c449 100644 --- a/src/client/response/mod.rs +++ b/src/client/response/mod.rs @@ -34,6 +34,7 @@ pub(crate) use music_new::MusicNew; pub(crate) use music_playlist::MusicPlaylist; pub(crate) use music_search::MusicSearch; pub(crate) use music_search::MusicSearchSuggestion; +pub(crate) use player::DrmLicense; pub(crate) use player::Player; pub(crate) use playlist::Playlist; pub(crate) use search::Search; diff --git a/src/client/response/player.rs b/src/client/response/player.rs index 0b2068a..d9ecc42 100644 --- a/src/client/response/player.rs +++ b/src/client/response/player.rs @@ -2,7 +2,7 @@ use std::ops::Range; use serde::Deserialize; use serde_with::serde_as; -use serde_with::{DefaultOnError, DisplayFromStr}; +use serde_with::{DefaultOnError, DisplayFromStr, VecSkipError}; use super::{Empty, ResponseContext, Thumbnails}; use crate::serializer::{text::Text, MapResult}; @@ -19,6 +19,10 @@ pub(crate) struct Player { #[serde_as(deserialize_as = "DefaultOnError")] pub storyboards: Option, pub response_context: ResponseContext, + #[serde(default)] + pub player_config: PlayerConfig, + #[serde(default)] + pub heartbeat_params: HeartbeatParams, } #[serde_as] @@ -85,6 +89,10 @@ pub(crate) struct StreamingData { pub dash_manifest_url: Option, /// Only on livestreams pub hls_manifest_url: Option, + pub drm_params: Option, + #[serde(default)] + #[serde_as(deserialize_as = "VecSkipError<_>")] + pub initial_authorized_drm_track_types: Vec, } #[serde_as] @@ -133,6 +141,11 @@ pub(crate) struct Format { pub audio_track: Option, pub signature_cipher: Option, + + #[serde(default)] + #[serde_as(deserialize_as = "VecSkipError<_>")] + pub drm_families: Vec, + pub drm_track_type: Option, } impl Format { @@ -151,7 +164,7 @@ impl Format { } } -#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, PartialOrd, Ord)] #[serde(rename_all = "lowercase")] pub(crate) enum Quality { Tiny, @@ -165,7 +178,7 @@ pub(crate) enum Quality { Hd2160, } -#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, PartialOrd, Ord)] pub(crate) enum AudioQuality { #[serde(rename = "AUDIO_QUALITY_ULTRALOW")] UltraLow, @@ -177,7 +190,7 @@ pub(crate) enum AudioQuality { High, } -#[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq, Hash)] +#[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq)] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] pub(crate) enum FormatType { #[default] @@ -192,7 +205,7 @@ pub(crate) struct ColorInfo { pub primaries: Primaries, } -#[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq, Hash)] +#[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq)] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] pub(crate) enum Primaries { #[default] @@ -200,6 +213,24 @@ pub(crate) enum Primaries { ColorPrimariesBt2020, } +#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +#[allow(clippy::enum_variant_names)] +pub(crate) enum DrmTrackType { + DrmTrackTypeAudio, + DrmTrackTypeSd, + DrmTrackTypeHd, + DrmTrackTypeUhd1, +} + +#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +pub(crate) enum DrmFamily { + Widevine, + Playready, + Fairplay, +} + #[derive(Default, Debug, Deserialize)] #[serde(default, rename_all = "camelCase")] pub(crate) struct AudioTrack { @@ -261,3 +292,57 @@ pub(crate) struct Storyboards { pub(crate) struct StoryboardRenderer { pub spec: String, } + +#[derive(Default, Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PlayerConfig { + pub web_drm_config: Option, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct WebDrmConfig { + pub widevine_service_cert: Option, +} + +#[derive(Default, Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct HeartbeatParams { + pub drm_session_id: Option, +} + +impl From for crate::model::DrmTrackType { + fn from(value: DrmTrackType) -> Self { + match value { + DrmTrackType::DrmTrackTypeAudio => Self::Audio, + DrmTrackType::DrmTrackTypeSd => Self::Sd, + DrmTrackType::DrmTrackTypeHd => Self::Hd, + DrmTrackType::DrmTrackTypeUhd1 => Self::Uhd1, + } + } +} + +impl From for crate::model::DrmSystem { + fn from(value: DrmFamily) -> Self { + match value { + DrmFamily::Widevine => Self::Widevine, + DrmFamily::Playready => Self::Playready, + DrmFamily::Fairplay => Self::Fairplay, + } + } +} + +#[derive(Default, Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct DrmLicense { + pub status: String, + pub license: String, + pub authorized_formats: Vec, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct AuthorizedFormat { + pub track_type: DrmTrackType, + pub key_id: String, +} diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_android.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_android.snap index 5875d9f..b2f3461 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_android.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_android.snap @@ -77,6 +77,8 @@ VideoPlayer( mime: "video/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\"", format: r#3gp, codec: mp4v, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=11439331&dur=163.096&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=18&lmt=1580005476071743&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&pl=37&ratebypass=yes&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAJAH-tWof01vrs8phEoz51XkWwdMzQ77k1UTrdY5XiuTAiA38z-qANX0jtfCiAl4EVMZaKo1ncrzJFRrCffZ6LagrA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&txp=2211222&vprv=1", @@ -95,6 +97,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), ], video_only_streams: [ @@ -121,6 +125,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.00M.08\"", format: mp4, codec: av01, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=2238952&dur=163.029&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=395&keepalive=yes&lmt=1608045728968690&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAKCXHOCh_P3VlNWebTeWw0WdSln-zYe3BjZeEm2QiltCAiAQNcJBI4G-8dK5z1IUoqBZctk6ddjkl_QYKRFAKXyOcw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -145,6 +151,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.00M.08\"", format: mp4, codec: av01, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=7808990&dur=163.029&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=134&keepalive=yes&lmt=1580005649163759&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAIjjrMvCEzSLlbvbrjItT4V9JdpggnO5IHye9i4PxTyzAiAmbaFCB2hH7evf9JX3JUx-tU9S6zv2IzSKz8ObGSVRjw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=2211222&vprv=1", @@ -169,6 +177,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4d401e\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=4130385&dur=163.029&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=396&keepalive=yes&lmt=1608045761576250&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgBrQhbygTP6RGjUk0lGbxBI5e3NdeR6C_SW8R_ckZ2PkCIQDaBg5cJxYVWfwRrrELQFgRMOJ4xS3oOOROayoQMjxaCA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -193,6 +203,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.01M.08\"", format: mp4, codec: av01, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=6873325&dur=163.029&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=397&keepalive=yes&lmt=1608045990917419&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAMqBb1hKVVzWl3Awrh1T8GQG9IrSWF84zW_ZfjgbAN5QAiAaP3jYyI4ox2aclcOCzYFzqWgByWCxj_FgTN-SfsARXw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -217,6 +229,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.04M.08\"", format: mp4, codec: av01, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&dur=163.096&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=22&lmt=1580005750956837&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&pl=37&ratebypass=yes&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgFlQZgR63Yz9UgY9gVqiyGDVkZmSmACRP3-MmKN7CRzQCIAMHAwZbHmWL1qNH4Nu3A0pXZwErXMVPzMIt-PyxeZqa&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cratebypass%2Cdur%2Clmt&txp=2211222&vprv=1", @@ -235,6 +249,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.64001F, mp4a.40.2\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=22365208&dur=163.046&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=398&keepalive=yes&lmt=1608048380553749&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgR6KqCOoig_FMl2tWKa7qHSmCjIZa9S7ABzEI16qdO2sCIFXccwql4bqV9CHlqXY4tgxyMFUsp7vW4XUjxs3AyG6H&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -259,6 +275,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.08M.08\"", format: mp4, codec: av01, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=65400181&dur=163.046&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=299&keepalive=yes&lmt=1580005649161486&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAPjxbuzkozPDc1Nd_0q5X8x8H2SiDvAUFuqqMadtz3SNAiEA_3kXCeePb2kci-WB2779tzI56E6E0iKwoHnUSkKCzwU%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=2211222&vprv=1", @@ -283,6 +301,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.64002a\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=42567727&dur=163.046&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=399&keepalive=yes&lmt=1608052932785283&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgFguw-cmBNOQegpyRRzcCScp2WaSnq_o7FB1-AiBgFpICIAGlMj9-kzNCWb3nhpg98Mc239ls6YYyoL8z1QpM8VmL&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -307,6 +327,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.09M.08\"", format: mp4, codec: av01, + drm_track_type: None, + drm_systems: [], ), ], audio_streams: [ @@ -331,6 +353,8 @@ VideoPlayer( channels: Some(2), loudness_db: None, track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=934449&dur=163.061&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=249&keepalive=yes&lmt=1608509101590706&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgPmadKd9As393GMRmu1Ow4RfQkDQhY6SbPRnkLMYyZOoCIE9AIgMMJ7n5HD2gKv3c8-HrnkMeakq_uWUOivnWquJX&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -353,6 +377,8 @@ VideoPlayer( channels: Some(2), loudness_db: None, track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=1245866&dur=163.061&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=250&keepalive=yes&lmt=1608509101111096&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIge8uetzhejNg3DegY9EQkpvVam1gp8Jm-q6oqtb6Rn9wCIQD_VeQle7Z2H1uXB6qsYMGDU4OWA4h6YTTwMDmw5DDvuA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -375,6 +401,8 @@ VideoPlayer( channels: Some(2), loudness_db: None, track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=2640283&dur=163.096&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=140&keepalive=yes&lmt=1580005579712232&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAI8YylDImOPxxRo251u_RX6ir_j0p-gP_yQPcI6SxareAiArCxOcgrF9pxYS5bNYEnLGEQxRiEFJ0sT2Ydpa1G7x5A%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=2211222&vprv=1", @@ -397,6 +425,8 @@ VideoPlayer( channels: Some(2), loudness_db: None, track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=2476314&dur=163.061&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=251&keepalive=yes&lmt=1608509101894140&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgErpt4HOgIybMGrMD2qg9JB4O53n0jsCxkiI9JBxbz8ECIQDixyFJ54m4NsxhyFtIYPscMVp_G6RyvwrfKzdoya-62Q%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -419,6 +449,8 @@ VideoPlayer( channels: Some(2), loudness_db: None, track: None, + drm_track_type: None, + drm_systems: [], ), ], subtitles: [ @@ -464,6 +496,7 @@ VideoPlayer( frames_per_page_y: 5, ), ], + drm: None, client_type: android, visitor_data: Some("Cgt2aHFtQU5YZFBvYyirsaWXBg%3D%3D"), ) diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktop.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktop.snap index 97fdd93..e0feb06 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktop.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktop.snap @@ -82,6 +82,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), ], video_only_streams: [ @@ -108,6 +110,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=1224002&dur=163.029&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=394&keepalive=yes&lmt=1608045375671513&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAI-uoNLUkMHpH35niVh1tBvwwFLtmSbeHyknmyCvccFVAiB2XriyJd0u2q-tGIRTx5qtKt6bJCs5ndXtMsdSxOheuA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -132,6 +136,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.00M.08\"", format: mp4, codec: av01, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=2973283&dur=163.029&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=242&keepalive=yes&lmt=1608509388282028&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgEleuqkeo7x7BsHur5aGPfHaT6KjKEG4c1d_xXwqlrsYCIQD85X_m050XwWyYlfLiWtZz-TX--H8H0UvfZCWKpY7m4Q%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -156,6 +162,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=2238952&dur=163.029&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=395&keepalive=yes&lmt=1608045728968690&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAIBttTR02kTdGb4vdxQ9Gro88JOAY7u5z69nJbdmVS1sAiBr61rqkUtra4PHLdnp2w-s8ZSaN_4qZ3OEeeuIr5C13w%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -180,6 +188,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.00M.08\"", format: mp4, codec: av01, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=7808990&dur=163.029&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=134&keepalive=yes&lmt=1580005649163759&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAMBRhMAZ5GXFSZHN6D-XhXRdG_EWSNwnN2eLPlwVNQ6PAiEA75eH0iJLgwRkujaABZnaJxG2ni-4irYHEGD42x6uaQg%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=2211222&vprv=1", @@ -204,6 +214,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4d401e\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=5169510&dur=163.029&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=243&keepalive=yes&lmt=1608509388282405&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgNi0fwQbep6oKsEeEGfms2Ay4x2OL2G0hUX5GFhycgKkCIANiC-j-Gz3-noxsNeSKKPxy--T9mFBu_8V7Vi5-zDYS&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -228,6 +240,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=4130385&dur=163.029&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=396&keepalive=yes&lmt=1608045761576250&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgFuBoOIkqwq0D1_OmnNJx3C0jmhHUyskpzPrTMoaWRYECIFZ1Y4QbQ41GsWS8yRHox8l_nGVosfXhXfKu3v18AyeT&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -252,6 +266,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.01M.08\"", format: mp4, codec: av01, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=8890590&dur=163.029&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=244&keepalive=yes&lmt=1608509388284632&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgMYF0KQQNgYI8oOhgdCwyRY6E_hvFnJiaAadyMf89MRoCIHnDnROTvUoy0iIBM3MzFAxJh_bLA-2vFl9KFDrHOf1B&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -276,6 +292,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=6873325&dur=163.029&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=397&keepalive=yes&lmt=1608045990917419&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAOtLGFoFtLHIXzNRoSrR7ULbIz91OYmaVQkcSatqNKAiAiEA23ZF7h2BZZCAGc0Zdd2p3PWRotmwLDyH6yYCuQpE8xw%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -300,6 +318,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.04M.08\"", format: mp4, codec: av01, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=16547577&dur=163.029&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=247&keepalive=yes&lmt=1608509388326822&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgfYKbT_196P-2EtjuqcTKdataiM480y65Ko0a73dv7WECIQC6nqWienQvu7swC1OW9HlwFWRH7VwTwj6H4yjY6FYvzg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -324,6 +344,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=35955780&dur=163.046&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=302&keepalive=yes&lmt=1608509234088626&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgQG8GPj3w_5_Lr2apagmte66IFBY3bYcZ2KnhwnUpshYCIFgvHYIZsz8WdYGSk9adpfMNKX0pzSP_l8cW47Gq2RTi&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -348,6 +370,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=22365208&dur=163.046&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=398&keepalive=yes&lmt=1608048380553749&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAI-VhcBU6o8LGmeuVYC2_zbxeGvC6XWf7yIOQ1RvjURhAiEA0YcZlVOI2ZUtKl-31__Hzax2SOUPeekCRjqjfw4m15s%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -372,6 +396,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.08M.08\"", format: mp4, codec: av01, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=65400181&dur=163.046&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=299&keepalive=yes&lmt=1580005649161486&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAIdbG-deTvLhp7mD2b-QZYQamPFv75l1bNBEEOMihrxPAiEA1NYvRlFphbRRvFIBCP-Ij9-5q8OTwUskgsL6LyIrD7c%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=2211222&vprv=1", @@ -396,6 +422,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.64002a\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=62993617&dur=163.046&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=303&keepalive=yes&lmt=1608509371758331&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAJ8n34LQhg6iEg1Ux9rDkk48e8l3vBR4WwuHeIpKnorlAiBopK4z-nq-pJTPTmrdbbKPW1Lfufdz2f9sGUKY-dzk5A%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -420,6 +448,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=42567727&dur=163.046&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=399&keepalive=yes&lmt=1608052932785283&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAMewAT3SgJRGn7wqDaDzNWcsAfrjFRu6k0wm7O_5YJeQAiANVhGmILp_gmNXnmixDesxsZ44_72YBT2SqjLLSZV32w%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -444,6 +474,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.09M.08\"", format: mp4, codec: av01, + drm_track_type: None, + drm_systems: [], ), ], audio_streams: [ @@ -468,6 +500,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(5.2200003), track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=WEB&clen=1245866&dur=163.061&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=250&keepalive=yes&lmt=1608509101111096&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fwebm&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAMJJ-uGQureE70LIxHjHP9hFxqcWwsSlxXX6EjGKmFfEAiAvQ98YKkqUrweNnBZOI7pXJk1kuU_1hSsQ0KeNU4CbyQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -490,6 +524,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(5.2200003), track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=WEB&clen=2640283&dur=163.096&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=140&keepalive=yes&lmt=1580005579712232&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fmp4&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhANXIw4pIwIPvMGWnJSrA_bnmBX6KPBPqak18aPtKsI8jAiBvisRnEtFax7OTrwKbOiktCihoMraLkCi7Rnnu6JGmeQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=2211222&vprv=1", @@ -512,6 +548,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(5.2159004), track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=WEB&clen=2476314&dur=163.061&ei=q1jpYtq3BJCX1gKVyJGQDg&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AGfBIFoT5D_NZAwXN7lVCS2VYLDMMegfaJQqvSJp-Hhy&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=251&keepalive=yes&lmt=1608509101894140&lsig=AG3C_xAwRgIhANxHzq0WC6OvdTpPJp52z3eGAm-jzUX7fcKiWlJ0T9kEAiEA02Bjesi_an2-pUh0kHdKQe0s_7micbcv3JKiBlxsYGs%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fwebm&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5edn6k&ms=au%2Conr&mt=1659459429&mv=m&mvi=4&n=T16m7p0RvV7UhQ&ns=tWuNfisHu8yiCA6Avm7nUlwH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAKP_KjT_SSnz5WGXaveO56pJAEw166qT3cpBdAZI1zwCAiBWZKVQZxfOPWnqSp5FnRDyQBQ-6a2nZopyA1eHicgHtw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=1311222&vprv=1", @@ -534,6 +572,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(5.2200003), track: None, + drm_track_type: None, + drm_systems: [], ), ], subtitles: [ @@ -579,6 +619,7 @@ VideoPlayer( frames_per_page_y: 5, ), ], + drm: None, client_type: desktop, visitor_data: Some("CgtoS1pCMVJTNUJISSirsaWXBg%3D%3D"), ) diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktopmusic.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktopmusic.snap index 8a2e061..ac93ebf 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktopmusic.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktopmusic.snap @@ -50,6 +50,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), ], video_only_streams: [ @@ -76,6 +78,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=2973283&dur=163.029&ei=knDpYub6BojEgAf6jbLgDw&expire=1659487474&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AM-wcJVO-yYYbVFnuifnzM4eRnD-AG1bS1AhLoDqi_is&initcwndbps=1418750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=242&keepalive=yes&lmt=1608509388282028&lsig=AG3C_xAwRgIhAMwYJqxve8BSujC-oaSFBbq67p-rFi7saU5V8Yb3qrjLAiEAlrMKR_sadHrkFpy7o7lGzKOCmU1OQazCNBbXjDT2a-o%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659465669&mv=m&mvi=5&n=1taQMNHGExb_Vg&ns=UTT8RXHZNhPYTw6NgkzWMWEH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAO7DI5E91yHpLhgiWg9C99NsMoJBVOWsNTNF3os9kREQAiAr2oC8vFtXIHwkJJt45q0sdmjiJdkTO2i8VAjUodk6Xw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-Khox4YuJQ2wmH79zYALRvsWTPCUc&txp=1311222&vprv=1", @@ -100,6 +104,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=7808990&dur=163.029&ei=knDpYub6BojEgAf6jbLgDw&expire=1659487474&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AM-wcJVO-yYYbVFnuifnzM4eRnD-AG1bS1AhLoDqi_is&initcwndbps=1418750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=134&keepalive=yes&lmt=1580005649163759&lsig=AG3C_xAwRgIhAMwYJqxve8BSujC-oaSFBbq67p-rFi7saU5V8Yb3qrjLAiEAlrMKR_sadHrkFpy7o7lGzKOCmU1OQazCNBbXjDT2a-o%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659465669&mv=m&mvi=5&n=1taQMNHGExb_Vg&ns=UTT8RXHZNhPYTw6NgkzWMWEH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgTkOjFd0nExEtpr8sBIaNu9HhkxWNdjhSKufHMhLR8-8CIHJAmOuCD7VBv_krH6rn5zqXFqAfsq9rQPXlC3CcQrjM&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-Khox4YuJQ2wmH79zYALRvsWTPCUc&txp=2211222&vprv=1", @@ -124,6 +130,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4d401e\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=5169510&dur=163.029&ei=knDpYub6BojEgAf6jbLgDw&expire=1659487474&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AM-wcJVO-yYYbVFnuifnzM4eRnD-AG1bS1AhLoDqi_is&initcwndbps=1418750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=243&keepalive=yes&lmt=1608509388282405&lsig=AG3C_xAwRgIhAMwYJqxve8BSujC-oaSFBbq67p-rFi7saU5V8Yb3qrjLAiEAlrMKR_sadHrkFpy7o7lGzKOCmU1OQazCNBbXjDT2a-o%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659465669&mv=m&mvi=5&n=1taQMNHGExb_Vg&ns=UTT8RXHZNhPYTw6NgkzWMWEH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAPqQfxwIANgIC3DrQ6avaWOhCvIMLdzMPQtFOx2gwEXNAiAwJp2mgN9-zl4vPOB2uoQXOfmGsYDB470q1zg7wRW4Sw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-Khox4YuJQ2wmH79zYALRvsWTPCUc&txp=1311222&vprv=1", @@ -148,6 +156,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=8890590&dur=163.029&ei=knDpYub6BojEgAf6jbLgDw&expire=1659487474&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AM-wcJVO-yYYbVFnuifnzM4eRnD-AG1bS1AhLoDqi_is&initcwndbps=1418750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=244&keepalive=yes&lmt=1608509388284632&lsig=AG3C_xAwRgIhAMwYJqxve8BSujC-oaSFBbq67p-rFi7saU5V8Yb3qrjLAiEAlrMKR_sadHrkFpy7o7lGzKOCmU1OQazCNBbXjDT2a-o%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659465669&mv=m&mvi=5&n=1taQMNHGExb_Vg&ns=UTT8RXHZNhPYTw6NgkzWMWEH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAIjdvhcThMxoo_v2bzEjaR_w0ryWFQDs0f0INaI5WPcVAiApQZUYTqcQJdfxZlNSsp7cl3FK8XPfDZ-qbVvj9GuauQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-Khox4YuJQ2wmH79zYALRvsWTPCUc&txp=1311222&vprv=1", @@ -172,6 +182,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=16547577&dur=163.029&ei=knDpYub6BojEgAf6jbLgDw&expire=1659487474&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AM-wcJVO-yYYbVFnuifnzM4eRnD-AG1bS1AhLoDqi_is&initcwndbps=1418750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=247&keepalive=yes&lmt=1608509388326822&lsig=AG3C_xAwRgIhAMwYJqxve8BSujC-oaSFBbq67p-rFi7saU5V8Yb3qrjLAiEAlrMKR_sadHrkFpy7o7lGzKOCmU1OQazCNBbXjDT2a-o%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659465669&mv=m&mvi=5&n=1taQMNHGExb_Vg&ns=UTT8RXHZNhPYTw6NgkzWMWEH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgBV4Oa1IQ0YNDvRrKO5ec3Pfbg65MxzmIxCcm0gOuwT0CIFysQdow6DQXzz1W9KZVuqACTdjXQ3-yiBj9GcmNw3HE&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-Khox4YuJQ2wmH79zYALRvsWTPCUc&txp=1311222&vprv=1", @@ -196,6 +208,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=35955780&dur=163.046&ei=knDpYub6BojEgAf6jbLgDw&expire=1659487474&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AM-wcJVO-yYYbVFnuifnzM4eRnD-AG1bS1AhLoDqi_is&initcwndbps=1418750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=302&keepalive=yes&lmt=1608509234088626&lsig=AG3C_xAwRgIhAMwYJqxve8BSujC-oaSFBbq67p-rFi7saU5V8Yb3qrjLAiEAlrMKR_sadHrkFpy7o7lGzKOCmU1OQazCNBbXjDT2a-o%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659465669&mv=m&mvi=5&n=1taQMNHGExb_Vg&ns=UTT8RXHZNhPYTw6NgkzWMWEH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAOiqSNfGfOprZ9InWVMc7gY0KrTf8weLibcpK0W2Hfa6AiAFHW213qsByzlar5ivCAYttjo1rPciQnLEnh-izJ3ZhA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-Khox4YuJQ2wmH79zYALRvsWTPCUc&txp=1311222&vprv=1", @@ -220,6 +234,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=65400181&dur=163.046&ei=knDpYub6BojEgAf6jbLgDw&expire=1659487474&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AM-wcJVO-yYYbVFnuifnzM4eRnD-AG1bS1AhLoDqi_is&initcwndbps=1418750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=299&keepalive=yes&lmt=1580005649161486&lsig=AG3C_xAwRgIhAMwYJqxve8BSujC-oaSFBbq67p-rFi7saU5V8Yb3qrjLAiEAlrMKR_sadHrkFpy7o7lGzKOCmU1OQazCNBbXjDT2a-o%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659465669&mv=m&mvi=5&n=1taQMNHGExb_Vg&ns=UTT8RXHZNhPYTw6NgkzWMWEH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgdkJv6w9_Azf0m6poA-ULyX0eH_GKBtSJRwUY1lNBAZgCIDCrC0lnu__ycTaIhg0pUcsRUqay60S3QMo5084EWifd&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-Khox4YuJQ2wmH79zYALRvsWTPCUc&txp=2211222&vprv=1", @@ -244,6 +260,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.64002a\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=62993617&dur=163.046&ei=knDpYub6BojEgAf6jbLgDw&expire=1659487474&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AM-wcJVO-yYYbVFnuifnzM4eRnD-AG1bS1AhLoDqi_is&initcwndbps=1418750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=303&keepalive=yes&lmt=1608509371758331&lsig=AG3C_xAwRgIhAMwYJqxve8BSujC-oaSFBbq67p-rFi7saU5V8Yb3qrjLAiEAlrMKR_sadHrkFpy7o7lGzKOCmU1OQazCNBbXjDT2a-o%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659465669&mv=m&mvi=5&n=1taQMNHGExb_Vg&ns=UTT8RXHZNhPYTw6NgkzWMWEH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgZi9dDSMWh10NID8-QNn3azIH1zw5UooZrRTPZjVn7hYCIAm9bFc6NBwJ_DzY4V2R_zGmJSpOwQl8LEsfCb7hf6i7&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-Khox4YuJQ2wmH79zYALRvsWTPCUc&txp=1311222&vprv=1", @@ -268,6 +286,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), ], audio_streams: [ @@ -292,6 +312,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(0.0006532669), track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=1245866&dur=163.061&ei=knDpYub6BojEgAf6jbLgDw&expire=1659487474&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AM-wcJVO-yYYbVFnuifnzM4eRnD-AG1bS1AhLoDqi_is&initcwndbps=1418750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=250&keepalive=yes&lmt=1608509101111096&lsig=AG3C_xAwRgIhAMwYJqxve8BSujC-oaSFBbq67p-rFi7saU5V8Yb3qrjLAiEAlrMKR_sadHrkFpy7o7lGzKOCmU1OQazCNBbXjDT2a-o%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659465669&mv=m&mvi=5&n=1taQMNHGExb_Vg&ns=UTT8RXHZNhPYTw6NgkzWMWEH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAIflUU4t4Ukf4CXW3ttB5c8SnP4z4z3ef-7EFVMFv4U8AiAlcKmmofCTzzr2NRRsRVosQdpDBphUqWyVzS7noGrixw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-Khox4YuJQ2wmH79zYALRvsWTPCUc&txp=1311222&vprv=1", @@ -314,6 +336,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(0.0006532669), track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=2640283&dur=163.096&ei=knDpYub6BojEgAf6jbLgDw&expire=1659487474&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AM-wcJVO-yYYbVFnuifnzM4eRnD-AG1bS1AhLoDqi_is&initcwndbps=1418750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=140&keepalive=yes&lmt=1580005579712232&lsig=AG3C_xAwRgIhAMwYJqxve8BSujC-oaSFBbq67p-rFi7saU5V8Yb3qrjLAiEAlrMKR_sadHrkFpy7o7lGzKOCmU1OQazCNBbXjDT2a-o%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659465669&mv=m&mvi=5&n=1taQMNHGExb_Vg&ns=UTT8RXHZNhPYTw6NgkzWMWEH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhALBveArAZ7DP9r1BIpNz6ZXst5MtzvUM72jhtYMrildCAiEArvwqaqcowZwR_UrRM-O7jq2CMxgBtbnmul27AEcBqEI%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-Khox4YuJQ2wmH79zYALRvsWTPCUc&txp=2211222&vprv=1", @@ -336,6 +360,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(-0.003446579), track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=2476314&dur=163.061&ei=knDpYub6BojEgAf6jbLgDw&expire=1659487474&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AM-wcJVO-yYYbVFnuifnzM4eRnD-AG1bS1AhLoDqi_is&initcwndbps=1418750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=251&keepalive=yes&lmt=1608509101894140&lsig=AG3C_xAwRgIhAMwYJqxve8BSujC-oaSFBbq67p-rFi7saU5V8Yb3qrjLAiEAlrMKR_sadHrkFpy7o7lGzKOCmU1OQazCNBbXjDT2a-o%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659465669&mv=m&mvi=5&n=1taQMNHGExb_Vg&ns=UTT8RXHZNhPYTw6NgkzWMWEH&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgARPqD-6172OshMHeV8DpONV7tnPvdsxcg8QlaIGxcuMCICSe8LWvhRTEO2bdAQ43OzOoc5XfJcj3veyhScVXVz8O&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&spc=lT-Khox4YuJQ2wmH79zYALRvsWTPCUc&txp=1311222&vprv=1", @@ -358,6 +384,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(0.0006532669), track: None, + drm_track_type: None, + drm_systems: [], ), ], subtitles: [ @@ -403,6 +431,7 @@ VideoPlayer( frames_per_page_y: 5, ), ], + drm: None, client_type: desktop_music, visitor_data: Some("CgszSHZWNWs0SDhpTSiS4aWXBg%3D%3D"), ) diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_ios.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_ios.snap index 3156f55..8bdb80f 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_ios.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_ios.snap @@ -79,6 +79,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4D401E\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=IOS&clen=65400181&dur=163.046&ei=q1jpYq-xHs7NgQev0bfwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-ANNg3iPHI56jhLSlPQk4pi4mdub5iAby0hmJBVrtiJgY&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=299&keepalive=yes&lmt=1580005649161486&lsig=AG3C_xAwRQIgWKVoDpyI6QmVnkdGzdirFtjMAXhmLex64VTO7UUJd-4CIQDoJKkT2-Kpa7j0merJJoZDs4IkkXSjdNm3bvdCL8t2Pg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelnez%2Csn-h0jeenek&ms=au%2Crdu&mt=1659459429&mv=m&mvi=4&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAP6zxXXA18ToZWUfalauhhsgOsDHTu-R0QrqNrJR7D5kAiEAi8HBa9OkYwmA0bcRxhgvXfN9JsFlXwCWJ-x4ty6TjoY%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&svpuc=1&txp=2211222&vprv=1", @@ -103,6 +105,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.64002A\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), ], audio_streams: [ @@ -127,6 +131,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(5.2159004), track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=IOS&clen=2640283&dur=163.096&ei=q1jpYq-xHs7NgQev0bfwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-ANNg3iPHI56jhLSlPQk4pi4mdub5iAby0hmJBVrtiJgY&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=140&keepalive=yes&lmt=1580005579712232&lsig=AG3C_xAwRQIgWKVoDpyI6QmVnkdGzdirFtjMAXhmLex64VTO7UUJd-4CIQDoJKkT2-Kpa7j0merJJoZDs4IkkXSjdNm3bvdCL8t2Pg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jelnez%2Csn-h0jeenek&ms=au%2Crdu&mt=1659459429&mv=m&mvi=4&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgcsPm6rrUAwCi1VTGf0FMDTjzjM01__iTC13PnzDTFeQCIQCJ_EGeKVZztkmK3Cr7gVuxUP83XCSlP01YLx5FO-PPcQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&svpuc=1&txp=2211222&vprv=1", @@ -149,6 +155,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(5.2159004), track: None, + drm_track_type: None, + drm_systems: [], ), ], subtitles: [ @@ -194,6 +202,7 @@ VideoPlayer( frames_per_page_y: 5, ), ], + drm: None, client_type: ios, visitor_data: Some("Cgs4TXV4dk13WVEyWSirsaWXBg%3D%3D"), ) diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap index 0fba144..c9e6bf2 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap @@ -40,6 +40,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), ], video_only_streams: [ @@ -66,6 +68,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4d400c\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=1151892&dur=163.029&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=278&keepalive=yes&lmt=1705966620402771&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRQIhAP4IybR7cZRpx7IX1ke6UIu_hdFZN3LOuHBDywg_xv5WAiB8_XEx8VhT9OlFxmM-cY0fl6-7GT9uj3clMIPDk2w7cA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=130F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -90,6 +94,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=5026513&dur=163.029&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=133&keepalive=yes&lmt=1705967298859029&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRAIgPF0ms4OEe15BTjOFVCkvf52UeTUf0b62_pavCfEyGjcCIH-0AoxzyT8iioWFFaX7iYjqzzaUTpo8rgAPQ0uX8DJa&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=1308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -114,6 +120,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4d4015\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=2541351&dur=163.029&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=242&keepalive=yes&lmt=1705966614837727&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRQIgKj1JyMGwYtf16zLJsmbnizz5_v3jaZSa7-j-ls8-qzECIQDKUd50iIc52h7zOX50Hf1SkbV9h-hP4QHs-wkik1fk6Q%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=130F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -138,6 +146,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=7810925&dur=163.029&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=134&keepalive=yes&lmt=1705967286812435&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRgIhAJ92IgZgdk3_WLsfzJV_ZyrSFSbzpsoJh3DkRKDHbNxzAiEA9UbnVlXQ2S3BUimLmWC5TZQfhIkc-PlLnZ81fL0S5yA%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=1308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -162,6 +172,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4d401e\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=4188954&dur=163.029&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=243&keepalive=yes&lmt=1705966624121874&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRQIgSCLGQvdZKNXym0zt7c3Yw_4e0J8-wNxtPagPRRn4dRoCIQCOj0IzalNG4EcowBIyK2LC6NLFDr8Zt6sNVkqPjw6lGg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=130F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -186,6 +198,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=14723538&dur=163.029&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=135&keepalive=yes&lmt=1705967282545273&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRgIhAM843wAa1e7Gc1S69gfXckm7hdgIKPXp0bUSh3hO6W5zAiEA-DDEPGsZBmF5N8VbPy75dhy3rLpE1F18KtWgmrUm2Pg%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=1308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -210,6 +224,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4d401f\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=7788899&dur=163.029&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=244&keepalive=yes&lmt=1705966622098793&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRQIhAKGyn799bfkVHYE195sPmD60dCMppqJrBM0O-sjgYTzzAiAoBjkNAtL90sXw2YP9UTW9JrMhPSvPiBI_KiCVMJAkFQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=130F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -234,6 +250,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=24616305&dur=163.029&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=136&keepalive=yes&lmt=1705967307531372&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRgIhAM57L2Utesn4xVyT0HSwR9Khv_S-efx4uFAbCPkZFoRXAiEAtIu63-jF2_FZkOMmZAqGU3SRU9QgxoajRjBhMFwcOuk%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=1308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -258,6 +276,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4d401f\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=34544823&dur=163.046&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=298&keepalive=yes&lmt=1705967092637061&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRgIhAIIGU41JunuODw9qIlSoYQcwkCYO6k9XOVlDn1Nxqnu7AiEAoiMOgYU8s8lp01fW0L86hHrSrtlvOLSI9XA50iyIGBc%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=1308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -282,6 +302,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4d4020\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=14723992&dur=163.029&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=247&keepalive=yes&lmt=1705966613897741&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRgIhAL-upITxk7r9FQL5F4WL0A6SjPw673qyyzmXIC48eKfTAiEAlkdkx7IFYtehbhKakbffvIebpPXRtxSgBWLl7WEHCrE%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=130F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -306,6 +328,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=30205331&dur=163.046&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=302&keepalive=yes&lmt=1705966545733919&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRQIhAL428Az_BKxxff4FlH4WleHSy4Igq3mR71NuTMOc9xU3AiBN4lXfH9DklGaQUMnOT8wAhiMuzR73bW3cwr744TSoNA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=130F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -330,6 +354,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=62057888&dur=163.046&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=299&keepalive=yes&lmt=1705967093743693&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRQIgBEemc0Cvd3KhNooNRblgX64_fjNSP30RmWDfFwDR7qYCIQCXpQ9FO0_X93ZHcyvRZCKX5gbJuusCReaRcJbRLFsM_g%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=1308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -354,6 +380,8 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.64002a\"", format: mp4, codec: avc1, + drm_track_type: None, + drm_systems: [], ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=55300085&dur=163.046&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=303&keepalive=yes&lmt=1705966651743358&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRQIgTZlmOcsLYJ_a9SnVLehXnaoajtreQO97qawEIDPEi8sCIQDKFdtBWWMuQUb9X8H-x92B3q-y0g8TvAPanR95cfklXQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=130F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -378,6 +406,8 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, + drm_track_type: None, + drm_systems: [], ), ], audio_streams: [ @@ -402,6 +432,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(5.21), track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=1245582&dur=163.061&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=250&keepalive=yes&lmt=1714877466693058&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRQIgdJ1SjWwaloQecEblSIMFp2qFmpG_kKYZP1vX_M55dE0CIQCDSfa_FsaiFRcNL-1LRTgCIRSO7dj5vrpKR1Ya-KbmMw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=1308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -424,6 +456,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(5.21), track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=2640283&dur=163.096&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=140&keepalive=yes&lmt=1705966477945761&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRAIgSxdbLrbojMVJcyRzsI2TrzOf78LN28bWcsHpbs4QXDwCIHidfXoriWMHfuiktUCdzLuUmksU7r5vITdh6u0puNmx&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=1308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -446,6 +480,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(5.2200003), track: None, + drm_track_type: None, + drm_systems: [], ), AudioStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=2480393&dur=163.061&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=251&keepalive=yes&lmt=1714877359450110&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRQIgO0jG-x2l6AF7tjryIX_oM3np78WgNDiseezppLfbQrgCIQCVLdpDhclKc8vQgWGzKXcqsAxgNl5S3MlLT8u1Jeok2A%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=1308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", @@ -468,6 +504,8 @@ VideoPlayer( channels: Some(2), loudness_db: Some(5.21), track: None, + drm_track_type: None, + drm_systems: [], ), ], subtitles: [ @@ -513,6 +551,7 @@ VideoPlayer( frames_per_page_y: 5, ), ], + drm: None, client_type: tv, visitor_data: Some("CgtrbXRsWU4wUEtXbyi-0aC1BjIKCgJERRIEEgAgZg%3D%3D"), ) diff --git a/src/model/mod.rs b/src/model/mod.rs index acd4e20..3d2252e 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -143,6 +143,10 @@ pub struct VideoPlayer { pub dash_manifest_url: Option, /// Video frames for seek preview pub preview_frames: Vec, + /// Video player DRM config + /// + /// [`None`] if the video is not DRM-protected + pub drm: Option, /// Client type with which the player was fetched pub client_type: ClientType, /// YouTube visitor data cookie @@ -215,6 +219,12 @@ pub struct VideoStream { pub format: VideoFormat, /// Video codec pub codec: VideoCodec, + /// DRM track type + /// + /// [`None`] if the track is not DRM-protected + pub drm_track_type: Option, + /// List of DRM systems that can decrypt this track + pub drm_systems: Vec, } /// Audio stream @@ -267,6 +277,36 @@ pub struct AudioStream { /// /// This is None if the video contains only 1 audio track. pub track: Option, + /// DRM track type + /// + /// [`None`] if the track is not DRM-protected + pub drm_track_type: Option, + /// List of DRM systems that can decrypt this track + pub drm_systems: Vec, +} + +/// Video player DRM parameters +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "snake_case")] +pub struct VideoPlayerDrm { + /// Widevine service certificate + pub widevine_service_cert: Option>, + /// DRM parameters for the license API + pub drm_params: String, + /// DRM session id parameter for the license API + pub drm_session_id: String, + /// List of track types available for playback + pub authorized_track_types: Vec, +} + +/// Video player DRM parameters +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "snake_case")] +pub struct DrmLicense { + /// DRM license + pub license: Vec, + /// List of authorized formats with track type and 16-byte key ID + pub authorized_formats: Vec<(DrmTrackType, [u8; 16])>, } /// Video codec @@ -319,6 +359,51 @@ pub enum VideoFormat { Webm, } +/// DRM track type +/// +/// Depending on the purchased video and the device's DRM capabilites, only a subset of track +/// types may be available for playback. +#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[serde(rename_all = "snake_case")] +pub enum DrmTrackType { + /// Audio track + Audio, + /// Standard definition video (max. 480p) + Sd, + /// High definition video (max. 1080p) + Hd, + /// Ultra high definition video (2160p) + Uhd1, +} + +/// DRM system used to protect tracks +#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[serde(rename_all = "snake_case")] +pub enum DrmSystem { + /// Google Widevine + /// + /// + Widevine, + /// Microsoft PlayReady + /// + /// + Playready, + /// Apple FairPlay + /// + /// + Fairplay, +} + +impl DrmSystem { + pub(crate) fn req_param(self) -> &'static str { + match self { + DrmSystem::Widevine => "DRM_SYSTEM_WIDEVINE", + DrmSystem::Playready => "DRM_SYSTEM_PLAYREADY", + DrmSystem::Fairplay => "DRM_SYSTEM_FAIRPLAY", + } + } +} + /// Audio track information /// /// Videos can have multiple audio tracks (different languages). diff --git a/src/util/mod.rs b/src/util/mod.rs index edebaf9..8f3e782 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -652,7 +652,7 @@ fn parse_netscape_cookie_line<'a>( if domain != filter_domain { return Ok(None); } - let include_subdomains = cols.next().ok_or_else(mkerr)?.to_ascii_lowercase() == "true"; + let include_subdomains = cols.next().ok_or_else(mkerr)?.eq_ignore_ascii_case("true"); if !include_subdomains { return Ok(None); } diff --git a/testfiles/player_model/hdr.json b/testfiles/player_model/hdr.json index ddf78d1..4e75a03 100644 --- a/testfiles/player_model/hdr.json +++ b/testfiles/player_model/hdr.json @@ -75,7 +75,8 @@ "mime": "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] } ], "video_only_streams": [ @@ -101,7 +102,8 @@ "mime": "video/mp4; codecs=\"avc1.4d400c\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=3182932&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=278&keepalive=yes&lmt=1647458650479323&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAKcXzSIMQGA4R_rvoVg3ONpXOjpbaNZ5y9WJHLiQDTTVAiA6ePO9vuh5_zYE3Dw-QoRfqhT0CBDkg6w4dIo0MEfWnA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -125,7 +127,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=8303447&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=330&keepalive=yes&lmt=1647455303863203&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhANAf4BtO9hodnIw8uMVG4XLEsEtdsoQrnomGvn1DsN4lAiEA8pxwGoJpF3WF5tPTdcRqMqfm2aye1FT4su5AvMlQQ0g%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -149,7 +152,8 @@ "mime": "video/webm; codecs=\"vp9.2\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=2509541&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=394&keepalive=yes&lmt=1625695286803310&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAOnWkHv2tFuOM61kKJLI3zFiC9-37R8W0JTzwTrtOfvNAiBtEjeNyqTepomwOPVKhWOGoOC2ukaolIOPJxAMXe7ngw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4531232&vprv=1", @@ -173,7 +177,8 @@ "mime": "video/mp4; codecs=\"av01.0.00M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=5267586&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=694&keepalive=yes&lmt=1647456667239589&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgemkxWrNmfOopDEWJTDF3-IQ04N2bxhv4VwwZlXxUa54CICoAZtgCjjFQAtzxqyrVUQZVBKUOZ6zWOuT0IkrPZC-m&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -197,7 +202,8 @@ "mime": "video/mp4; codecs=\"av01.0.00M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=6140357&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=133&keepalive=yes&lmt=1647455971244630&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAONQFXcgW4UlDLqJFPCxubXgIZyr3dyU11p4gdU5BpVVAiEA2QBy4EjZLoT7gEwTz0BzxunQE9AZxe5lwtoeOgpCxe4%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -221,7 +227,8 @@ "mime": "video/mp4; codecs=\"avc1.4d4015\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=6288588&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=242&keepalive=yes&lmt=1647458690409200&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAKNlhTlyABG3Jz0tfp9S4wbfFtpsKOBAZOHK8YSD9gwIAiEAwXJuULOJfVgWSrgxGfy-qgY7OJAidklHfJvh-SeHg3Q%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -245,7 +252,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=17440191&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=331&keepalive=yes&lmt=1647456539288392&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhALPtunCfCCenvwEAwcVnPsFI0DwbWsosFXXCZtbVnFXhAiBawQLCPSNVlVA6OsWX71Vd3zISW_wrcjGsc18rlkJauQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -269,7 +277,8 @@ "mime": "video/webm; codecs=\"vp9.2\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=4355021&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=395&keepalive=yes&lmt=1625696047181468&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhALv7qjsRK0_1m68tUMKK3z7GTa-yHwuLP92hp4-xTzjkAiBFqbSJ-5I4dFdT1qU07KkJYkb-I2qkU-qJzlp3LFRBEg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4531232&vprv=1", @@ -293,7 +302,8 @@ "mime": "video/mp4; codecs=\"av01.0.00M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=11246043&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=695&keepalive=yes&lmt=1647455562809484&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAM0GX_PvvjNhwKlN9T2ipbXPR-uoCvA_VAwaco4hWTq-AiEA8AWsrUAv6NyBTOHEmg9tyZycaIN6B_Ajp_CNVtbTJ8w%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -317,7 +327,8 @@ "mime": "video/mp4; codecs=\"av01.0.01M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=13251952&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=134&keepalive=yes&lmt=1647456323840465&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAIlXNbhhK8wNDDcetCLOrf1iTWAKlIZ09TKK0thAxR8tAiAHEBM1hrpLnY-1BM3s0NLjHmvmKzpqTpAQoT2OpviKUg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -341,7 +352,8 @@ "mime": "video/mp4; codecs=\"avc1.4d401e\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=13438679&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=243&keepalive=yes&lmt=1647458646958081&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgDCJ_q4ryPgUrtGwwu20buetYVXS3TqKeBHMZ5dkS-78CIQC2ddzXY3UL3N-tGP-Z1hQPMaATNF8HEEAYAtdlTUJiHQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -365,7 +377,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=37441628&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=332&keepalive=yes&lmt=1647455677889841&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgXVf5QwDrAWYRb20TRAaWjkYCxTA201jVURXbaQB8uqgCIQDg7HHw2zl9t1vLEq_TB6tHTn16kSOwN6PbGqreflaMEw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -389,7 +402,8 @@ "mime": "video/webm; codecs=\"vp9.2\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=8668566&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=396&keepalive=yes&lmt=1625696436192066&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhALB3DNN43avoWinF1Wv0Ovxzp8ZtJGRXl5fuokIcYMM5AiEA6uTQspf6w_AI4g7bH8vUUbgln3Aou1ZI5HGW63rWKAE%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4531232&vprv=1", @@ -413,7 +427,8 @@ "mime": "video/mp4; codecs=\"av01.0.01M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=23405241&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=696&keepalive=yes&lmt=1647456683065341&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgIexN9UVYQ5-xwtwxZXM7r13-hjuVMQBbUb2Ykmd3HUQCIGPadI7Z4n94ya1NVUHjTX9tHlM1_LXdzDSFKns6fKHH&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -437,7 +452,8 @@ "mime": "video/mp4; codecs=\"av01.0.04M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=22101755&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=135&keepalive=yes&lmt=1647456648597683&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAInoLxyQYwytYldQhS3YpYqVjmby9Td0ntNehfNBJfNOAiEAzgmeSg0xXxeP2HP88_v98X2JpccllT5CTjN5nhXNmUg%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -461,7 +477,8 @@ "mime": "video/mp4; codecs=\"avc1.4d401f\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=24210391&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=244&keepalive=yes&lmt=1647458652138228&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgdX5KodX3J8NItlTSynb1QZsht_CjEaMbZhFsPmOG7_kCIQC5d6pQn4D3tzGgWdOYZEGJnidNnilm4jObG50NusHHHw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -485,7 +502,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=72552194&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=333&keepalive=yes&lmt=1647456860059224&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhANA1vGa4utbJJQj1ocJcSDwB7tt5X5NLgiOMp6XdCHo9AiBy6hNs7TnYSp3pYFvjnLfyHCvtWuDF6Sd4geZLyshQOQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -509,7 +527,8 @@ "mime": "video/webm; codecs=\"vp9.2\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=15886577&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=397&keepalive=yes&lmt=1625697625025643&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgZCqOqg5567tmHYtVTBKkrCcfIdErfoVpCovucT-34tgCIQCAXsuxGlsARn_xBwqeykh1OoNNs6mSuQzz0_ABkKCJOg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4531232&vprv=1", @@ -533,7 +552,8 @@ "mime": "video/mp4; codecs=\"av01.0.04M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=44347796&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=697&keepalive=yes&lmt=1647457878977665&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAOJTOP7ZqpBFbUX2CQ_7zX08jG1iZkLpy4Rzl8zQr5qOAiAtENYp-vOZjyz61JHFWhnydSPtz9tqrczs4sbxahAXdw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -557,7 +577,8 @@ "mime": "video/mp4; codecs=\"av01.0.05M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=60409119&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=136&keepalive=yes&lmt=1647456021713482&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAMiQGof00GX2faJ7dROj_6GLq37216HJtSdY7-1B7eYIAiEA3OCTYKPFYr_9u2ACHrmQNCKmnaLD5onpGonbhuaUFR8%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -581,7 +602,8 @@ "mime": "video/mp4; codecs=\"avc1.4d401f\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=97103599&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=298&keepalive=yes&lmt=1647455200186782&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgVrCAFsq0QiBujAO4Auaewx6iMmMFu3zAla8SQ1I9AzACIQCHkqBWiEy_-T1F0llczyUIvShaFHXLvMloAh1pdxa7DA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -605,7 +627,8 @@ "mime": "video/mp4; codecs=\"avc1.4d4020\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=47531179&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=247&keepalive=yes&lmt=1647458657499381&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAMUsmcl1zgbr3YQranPWNV1kcxT5IdEoLL7FTFEDdHHPAiEAhQnrfYMU0A9xZ69MfBujWA4pXtCOQCg2Jn6ve9J_vBQ%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -629,7 +652,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=76313586&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=302&keepalive=yes&lmt=1647455155369524&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgW0H1434eh9Axw6zw95qezJB0D2aVd2bxEIs4T5bcfFACIDOjha9WLycp0L188FZyFGa1RBkLPoGrrJOppsaXqwDR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -653,7 +677,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=170196964&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=334&keepalive=yes&lmt=1647456706178447&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgZYYIF2q9gZN2JEp-olK5M1WrBG6RYXZ6MOuPdKlX_10CIQCFBnzj4Mha8Lc8hrFervDqPbqJzMVuDCyy5nwPsRDLxg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -677,7 +702,8 @@ "mime": "video/webm; codecs=\"vp9.2\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=45190880&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=398&keepalive=yes&lmt=1625697982762340&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAI2cwHh7-JSNICbh38swZ-gTEvE4gNUJlQuCy_-rC93aAiEAwrg_bqngkgpLmfVIO0SEIEfIomimufRoUE6P16pU-nE%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4531232&vprv=1", @@ -701,7 +727,8 @@ "mime": "video/mp4; codecs=\"av01.0.08M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=123156011&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=698&keepalive=yes&lmt=1647458890126633&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgfGAyTFj7-hIEMt4uUeliODPwj5QX2DTBD2_1yoR9rBoCIGhfk4sUuVVFRJCg4CRgnxKkktF1AdG5lq_2sp6YlYme&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -725,7 +752,8 @@ "mime": "video/mp4; codecs=\"av01.0.08M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=171659779&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=299&keepalive=yes&lmt=1647456686339677&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAI8CdzZUr5RpDckCyTOl-ayMLlp2ZzUSDNiN7nekLC6cAiEA_jTiJHLtbND1r-0t7x0ZFeBEOpZwD6JexdyU-fJmPpM%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -749,7 +777,8 @@ "mime": "video/mp4; codecs=\"avc1.64002a\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=134710778&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=303&keepalive=yes&lmt=1647456864300547&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAMY3lapgVisNm9ZRN9mN4PdpC4G8c3Lhx8tc-gmguGt0AiEApKKnQC6yJlJmYBGtjj5HJGRMJCAXWbzDWNMZS1v6i30%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -773,7 +802,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=264112130&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=335&keepalive=yes&lmt=1647461787395610&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgAdPraLCXNKjRgFYytiz41vsZYGV5LgCzVQDvYe9RVP8CIQClIyMx7qvh5AFyp_Js8uA_s6NxFsh5PVaV1r57J_S3tw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -797,7 +827,8 @@ "mime": "video/webm; codecs=\"vp9.2\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=84831512&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=399&keepalive=yes&lmt=1625698338789263&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAMU9TG8uSse3FYeCt4GzbWatkyCvljwSnsIQI0avt-0sAiEA7XE3tIRIvSBUR1Ol449SV8BWrGSyvBhdgZmuwLrvNGs%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4531232&vprv=1", @@ -821,7 +852,8 @@ "mime": "video/mp4; codecs=\"av01.0.09M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=199415475&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=699&keepalive=yes&lmt=1647461287969135&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhALdlBTVOJ-l1kWCpdAxwhDRrHcbfajdVYZ52j4W2cTcpAiASnVc5NYTvglp905hGSJCKGw0qtKd0mVgV0ZMKdKF14Q%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -845,7 +877,8 @@ "mime": "video/mp4; codecs=\"av01.0.09M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=401851173&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=308&keepalive=yes&lmt=1647458458581319&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgBHl9a7jyk_P1gCUUO1neKYQ6yri_efmH5xFL55pUGqkCIEiUrWx1fshxYRo9tHMfM_cwR6AQ8e-RBFeGBd02xl7W&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -869,7 +902,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=636053179&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=336&keepalive=yes&lmt=1647468447396647&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgMp2nTQj0v_KYa0M9m7wVThZejdXJiUj3rEpBLseJv2oCIEKKOHx8CBWW74Aj_cB1VfjaZSZQ91WoZGyUQf6z6LgX&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -893,7 +927,8 @@ "mime": "video/webm; codecs=\"vp9.2\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=217319942&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=400&keepalive=yes&lmt=1625697659798815&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAN5AEPpMJAY7ANaBi9voBGwimCmMyIbeRE6hbeG8DrzLAiACGk2jiWZ7yKqcpuQ_RFgfESKiwF9uFYVb2xOJnQ42sg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4531232&vprv=1", @@ -917,7 +952,8 @@ "mime": "video/mp4; codecs=\"av01.0.12M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=532969389&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=700&keepalive=yes&lmt=1647459926516897&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgBcuMXs1Sd2nT4KJ24or3QXwYRRRy3PwJOctrgouEB_MCIGfDD2hKvworylSzmDNgz7RuPG73ytxBqWag7xjRdxfo&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -941,7 +977,8 @@ "mime": "video/mp4; codecs=\"av01.0.12M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=998696577&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=315&keepalive=yes&lmt=1647476955807851&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIfP4IVSo-00_kq_JIkuh032hcLoJzNEhYjvwgLiDpEzQIhALPVrvDBjRwiFddXiAyADmRtYygte4HvlJ3XOrkOf_TR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -965,7 +1002,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=1130472562&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=337&keepalive=yes&lmt=1647482760162684&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAJLz15c8q-zAINpERuqzop_TmmzPhya90XxD1IDg-YakAiEAgbqIYmvdZhwxWTbz1YSH_Vr-YCjbetBGTGAgQ492YFY%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -989,7 +1027,8 @@ "mime": "video/webm; codecs=\"vp9.2\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=456669599&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=401&keepalive=yes&lmt=1625699274046706&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgauUn7uYXEYkx6BbaQ6UVDGwI28ZfAVxX9k5xUVqxdyYCIQDLT1jznDuYTl5RGJtSZA_alVXpaWH_NetbK-xrd0QTow%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4531232&vprv=1", @@ -1013,7 +1052,8 @@ "mime": "video/mp4; codecs=\"av01.0.13M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=976824147&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=701&keepalive=yes&lmt=1647469891607029&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAOax_lAWCW5ENOYxe3gZfBHgHA5oZJPyMlYQFy73t7-pAiEA46J7dsT-1pv9smuoP3Kx5T7c_IJ6cEZN4U9UkSNuT7o%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1", @@ -1037,7 +1077,8 @@ "mime": "video/mp4; codecs=\"av01.0.13M.10.0.110.09.16.09.0\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] } ], "audio_streams": [ @@ -1058,7 +1099,8 @@ "mime": "audio/webm; codecs=\"opus\"", "format": "webm", "codec": "opus", - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": null }, { @@ -1078,7 +1120,8 @@ "mime": "audio/webm; codecs=\"opus\"", "format": "webm", "codec": "opus", - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": null }, { @@ -1098,7 +1141,8 @@ "mime": "audio/mp4; codecs=\"mp4a.40.2\"", "format": "m4a", "codec": "mp4a", - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": null }, { @@ -1118,7 +1162,8 @@ "mime": "audio/webm; codecs=\"opus\"", "format": "webm", "codec": "opus", - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": null } ], @@ -1126,6 +1171,7 @@ "expires_in_seconds": 21540, "hls_manifest_url": null, "dash_manifest_url": null, + "drm": null, "preview_frames": [], "client_type": "desktop" } diff --git a/testfiles/player_model/multilanguage.json b/testfiles/player_model/multilanguage.json index 59c7dc5..ad53247 100644 --- a/testfiles/player_model/multilanguage.json +++ b/testfiles/player_model/multilanguage.json @@ -56,7 +56,8 @@ "mime": "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] } ], "video_only_streams": [ @@ -83,7 +84,8 @@ "mime": "video/mp4; codecs=\"avc1.4d400c\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=10710406&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=278&keepalive=yes&lmt=1683793966364433&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRgIhAKJxQWqLK5DpZ7CkkavrjkrlaX5126Y49pV9wggc8Yx8AiEAoYc7_9O-wzI3G3xdFHh9qFwZEh1vrBrlA5p1glWK8uU%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=453D434&vprv=1", @@ -108,7 +110,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=10296353&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=394&keepalive=yes&lmt=1683783301275775&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRgIhAJSOvRY1MzTPGwVWuDAmFWxErp_WALzhgwKBex876BIMAiEAmK0nGArmm_YuQbYrOYtCtJMjJw2XrrzcnaPIzp51whk%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4537434&vprv=1", @@ -133,7 +136,8 @@ "mime": "video/mp4; codecs=\"av01.0.00M.08\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=23098224&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=133&keepalive=yes&lmt=1683787941592756&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRAIgQSTbFEkh8LbH19nUQp92miSQSPzxLlddDOjrE72yGZkCICktF-HUzbZMeZYYXehhBapY55R5XNOn0mY-EWPq6iEl&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=453D434&vprv=1", @@ -158,7 +162,8 @@ "mime": "video/mp4; codecs=\"avc1.4d4015\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=23380710&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=242&keepalive=yes&lmt=1683793909671501&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRQIgZbtufwU0g0-jFUoBrq7n1Ne09mkHjGN23Po34rndi24CIQCljHIB53OmtP27ul3cvsWVw4RFEi_Nl7qOBmWL4jZpFA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=453D434&vprv=1", @@ -183,7 +188,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=19803140&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=395&keepalive=yes&lmt=1683783381398973&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRQIhAIUO10ENWskvvAu024zvKn0b3bRWX0EyRsVabzrL9v8KAiBSccc8iPXX_g_N2q40A5Bi7mmvnwWK63c-mzFAi_89Pw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4537434&vprv=1", @@ -208,7 +214,8 @@ "mime": "video/mp4; codecs=\"av01.0.00M.08\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=44703914&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=134&keepalive=yes&lmt=1683787942654377&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRAIgOWdv9KlCWVAv6jFEBK-6h3l1QOn1HDHjGdKfJBYtOBkCIBdi9P_YU9UX4GdGzuk2SSu_cgaUHJOXUJ9P4qf3K0z0&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=453D434&vprv=1", @@ -233,7 +240,8 @@ "mime": "video/mp4; codecs=\"avc1.4d401e\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=48610243&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=243&keepalive=yes&lmt=1683793911055215&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRAIgNCvf4z47PxtAp-P4KRhzwb7WTjrnkmOYZ1mHJY4LmsQCIAI9fPaqklLUj6Qg6WV4Gq4-r8vs1BOn1v6tu06JGk9A&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=453D434&vprv=1", @@ -258,7 +266,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=41498925&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=396&keepalive=yes&lmt=1683782484149627&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRgIhAJFg52NOZ7bbUwef3Krl7MfVtDuXdZXLrQv_SILY62VeAiEAgR-3tu2TBXyAIV0WILNi0jNknvbjMUxhYaCUsyz2LVw%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4537434&vprv=1", @@ -283,7 +292,8 @@ "mime": "video/mp4; codecs=\"av01.0.01M.08\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=68212637&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=135&keepalive=yes&lmt=1683787944411475&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRQIhAMZguS_4aJFCjWsvXkyxWxGa1DknMOlsP1vgrTK-VOKOAiAnJpIvttgWKmJrMW3rBocawXZMnqbjgWRqj5KJo53GGg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=453D434&vprv=1", @@ -308,7 +318,8 @@ "mime": "video/mp4; codecs=\"avc1.4d401f\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=77648932&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=244&keepalive=yes&lmt=1683793912300747&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRAIgT4fTt5I6BOTj8YHa7D4ZbiW5Kj1CXHwBAyMUEraGTu8CIEdpGzSiV9og54IsSFSsYapJcg8DLDxYZbu0dYcPGTaa&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=453D434&vprv=1", @@ -333,7 +344,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=72485445&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=397&keepalive=yes&lmt=1683783766846749&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRAIgYUgo4QrIA6zcIMHuF_l4XiLaMPH7KGDwarzwgMUW2owCIF5entcVXfEtjug0b15rA6vub0BV0j5JMofS30BE7Eh9&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4537434&vprv=1", @@ -358,7 +370,8 @@ "mime": "video/mp4; codecs=\"av01.0.04M.08\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=123652442&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=136&keepalive=yes&lmt=1683787959744367&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRAIgSvkoYKKZ-SEFRi_AZ2pQYzBOxHk4SgBruVIhW5Ui1EMCIHdvlJp8KwIh1UiJO00EmRUj8a03mtBxxWikecOl0Jk1&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=453D434&vprv=1", @@ -383,7 +396,8 @@ "mime": "video/mp4; codecs=\"avc1.4d401f\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&dur=1012.691&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=22&lmt=1683783214350373&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=jcptwbVfjmUWxQ&ns=1WzgXR-YoajDJVHVaMTvU9MN&pl=37&ratebypass=yes&requiressl=yes&sig=AOq0QJ8wRQIhAKXn58k9q93HQFc68FF38guHL4SR95x72rAWp1rWFFv9AiAeSn8CY1vqf57ElYJs1m5ruVT5bO4rKLOwYhwYhnn11w%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cratebypass%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1", @@ -402,7 +416,8 @@ "mime": "video/mp4; codecs=\"avc1.64001F, mp4a.40.2\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=147601285&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=247&keepalive=yes&lmt=1683793917158272&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRQIhAJoFxlPhUMgIWaVBgvZj4wN-0AToP6LcpSE-9qU0aP6WAiBMVWP8RB023ja7aalg5EDWjSwSl8ZuFTyabKAd5fFisQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=453D434&vprv=1", @@ -427,7 +442,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=131590322&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=398&keepalive=yes&lmt=1683783412184763&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRgIhAKPN8cLBkmuJxznCLh99bmrvR21hfSCGjwiTsu3K7ZeBAiEAlt0ZoiED2fyoJXIiUwmUhz17TYJcKYpOOweXkbQjrt0%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4537434&vprv=1", @@ -452,7 +468,8 @@ "mime": "video/mp4; codecs=\"av01.0.05M.08\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=421285879&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=137&keepalive=yes&lmt=1683787778380517&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRAIgUO_KUVLUJNKgDHpJeZ5F1D9c4IOSqqU89cuWCgDpUoQCICiphHalGNgp7vzIyzb_fpBM_NNdLsytk-YSveq55I9R&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=453D434&vprv=1", @@ -477,7 +494,8 @@ "mime": "video/mp4; codecs=\"avc1.640028\"", "format": "mp4", "codec": "avc1", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=302252313&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=248&keepalive=yes&lmt=1683792273928810&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRgIhAO-yj9R-smK4_LceGBhpxxZ2m8gJ8eg3yAZ3B5-TxJ26AiEAvnKJZ1VCwqe0o8a5cds2SIxiw0XmIiEsFDD2JQVLudo%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=453D434&vprv=1", @@ -502,7 +520,8 @@ "mime": "video/webm; codecs=\"vp9\"", "format": "webm", "codec": "vp9", - "throttled": false + "drm_track_type": null, + "drm_systems": [] }, { "url": "https://rr4---sn-h0jeener.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&c=WEB&clen=252581029&dur=1012.644&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=399&keepalive=yes&lmt=1683783754163506&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRQIhANEV52WgnUwjh73umAJne0nV9N6sUNAMAfGcRcWdUttVAiB-MrgcOJkl47rpmM_wDIx1RKbgIwfpPYhgQm02VE_3tA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4537434&vprv=1", @@ -527,7 +546,8 @@ "mime": "video/mp4; codecs=\"av01.0.08M.08\"", "format": "mp4", "codec": "av01", - "throttled": false + "drm_track_type": null, + "drm_systems": [] } ], "audio_streams": [ @@ -551,7 +571,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.46000004, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "fr.3", "lang": "fr", @@ -580,7 +601,8 @@ "codec": "opus", "channels": 2, "loudness_db": 2.8500004, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "en-US.4", "lang": "en-US", @@ -609,7 +631,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "pt.3", "lang": "pt", @@ -638,7 +661,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ru.3", "lang": "ru", @@ -667,7 +691,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.19999981, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ko.3", "lang": "ko", @@ -696,7 +721,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "es.3", "lang": "es", @@ -725,7 +751,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ja.3", "lang": "ja", @@ -754,7 +781,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.23999977, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "vi.3", "lang": "vi", @@ -783,7 +811,8 @@ "codec": "opus", "channels": 2, "loudness_db": -2.3899994, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ar.3", "lang": "ar", @@ -812,7 +841,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.32999992, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "tr.3", "lang": "tr", @@ -841,7 +871,8 @@ "codec": "opus", "channels": 2, "loudness_db": -0.029999733, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "hi.3", "lang": "hi", @@ -870,7 +901,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.03999996, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "id.3", "lang": "id", @@ -899,7 +931,8 @@ "codec": "opus", "channels": 2, "loudness_db": -0.22000027, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "th.3", "lang": "th", @@ -928,7 +961,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.46000004, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "fr.3", "lang": "fr", @@ -957,7 +991,8 @@ "codec": "opus", "channels": 2, "loudness_db": 2.8500004, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "en-US.4", "lang": "en-US", @@ -986,7 +1021,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "pt.3", "lang": "pt", @@ -1015,7 +1051,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "es.3", "lang": "es", @@ -1044,7 +1081,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ja.3", "lang": "ja", @@ -1073,7 +1111,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ru.3", "lang": "ru", @@ -1102,7 +1141,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.23999977, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "vi.3", "lang": "vi", @@ -1131,7 +1171,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.19999981, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ko.3", "lang": "ko", @@ -1160,7 +1201,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.32999992, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "tr.3", "lang": "tr", @@ -1189,7 +1231,8 @@ "codec": "opus", "channels": 2, "loudness_db": -2.3899994, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ar.3", "lang": "ar", @@ -1218,7 +1261,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.03999996, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "id.3", "lang": "id", @@ -1247,7 +1291,8 @@ "codec": "opus", "channels": 2, "loudness_db": -0.22000027, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "th.3", "lang": "th", @@ -1276,7 +1321,8 @@ "codec": "opus", "channels": 2, "loudness_db": -0.029999733, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "hi.3", "lang": "hi", @@ -1305,7 +1351,8 @@ "codec": "mp4a", "channels": 2, "loudness_db": -2.3899994, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ar.3", "lang": "ar", @@ -1334,7 +1381,8 @@ "codec": "mp4a", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ru.3", "lang": "ru", @@ -1363,7 +1411,8 @@ "codec": "mp4a", "channels": 2, "loudness_db": 0.32999992, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "tr.3", "lang": "tr", @@ -1392,7 +1441,8 @@ "codec": "mp4a", "channels": 2, "loudness_db": 0.23999977, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "vi.3", "lang": "vi", @@ -1421,7 +1471,8 @@ "codec": "mp4a", "channels": 2, "loudness_db": 0.05000019, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "id.3", "lang": "id", @@ -1450,7 +1501,8 @@ "codec": "mp4a", "channels": 2, "loudness_db": -0.22000027, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "th.3", "lang": "th", @@ -1479,7 +1531,8 @@ "codec": "mp4a", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "es.3", "lang": "es", @@ -1508,7 +1561,8 @@ "codec": "mp4a", "channels": 2, "loudness_db": 0.010000229, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ja.3", "lang": "ja", @@ -1537,7 +1591,8 @@ "codec": "mp4a", "channels": 2, "loudness_db": 0.19999981, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ko.3", "lang": "ko", @@ -1566,7 +1621,8 @@ "codec": "mp4a", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "pt.3", "lang": "pt", @@ -1595,7 +1651,8 @@ "codec": "mp4a", "channels": 2, "loudness_db": -0.029999733, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "hi.3", "lang": "hi", @@ -1624,7 +1681,8 @@ "codec": "mp4a", "channels": 2, "loudness_db": 2.8500004, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "en-US.4", "lang": "en-US", @@ -1653,7 +1711,8 @@ "codec": "mp4a", "channels": 2, "loudness_db": 0.47000027, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "fr.3", "lang": "fr", @@ -1682,7 +1741,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.46000004, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "fr.3", "lang": "fr", @@ -1711,7 +1771,8 @@ "codec": "opus", "channels": 2, "loudness_db": 2.8500004, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "en-US.4", "lang": "en-US", @@ -1740,7 +1801,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "es.3", "lang": "es", @@ -1769,7 +1831,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "pt.3", "lang": "pt", @@ -1798,7 +1861,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ja.3", "lang": "ja", @@ -1827,7 +1891,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.0, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ru.3", "lang": "ru", @@ -1856,7 +1921,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.19999981, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ko.3", "lang": "ko", @@ -1885,7 +1951,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.23999977, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "vi.3", "lang": "vi", @@ -1914,7 +1981,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.32999992, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "tr.3", "lang": "tr", @@ -1943,7 +2011,8 @@ "codec": "opus", "channels": 2, "loudness_db": -0.22000027, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "th.3", "lang": "th", @@ -1972,7 +2041,8 @@ "codec": "opus", "channels": 2, "loudness_db": -2.3899994, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "ar.3", "lang": "ar", @@ -2001,7 +2071,8 @@ "codec": "opus", "channels": 2, "loudness_db": -0.029999733, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "hi.3", "lang": "hi", @@ -2030,7 +2101,8 @@ "codec": "opus", "channels": 2, "loudness_db": 0.03999996, - "throttled": false, + "drm_track_type": null, + "drm_systems": [], "track": { "id": "id.3", "lang": "id", diff --git a/tests/youtube.rs b/tests/youtube.rs index ca9e69b..633032a 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2908,7 +2908,7 @@ fn unlocalized(lang: Language) -> bool { #[fixture] fn auth_enabled(rp: RustyPipe) -> bool { std::env::var("YT_AUTHENTICATED") - .map(|v| !v.is_empty() && v.to_ascii_lowercase() != "false") + .map(|v| !v.is_empty() && !v.eq_ignore_ascii_case("false")) .unwrap_or_default() || rp.query().auth_enabled(ClientType::Desktop) || rp.query().auth_enabled(ClientType::Tv) @@ -2918,7 +2918,7 @@ fn auth_enabled(rp: RustyPipe) -> bool { #[fixture] fn cookie_auth_enabled(rp: RustyPipe) -> bool { std::env::var("YT_AUTHENTICATED") - .map(|v| !v.is_empty() && v.to_ascii_lowercase() != "false") + .map(|v| !v.is_empty() && !v.eq_ignore_ascii_case("false")) .unwrap_or_default() || rp.query().auth_enabled(ClientType::Desktop) } From a7f8c789b1a34710274c4630e027ef868397aea2 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 12 Jan 2025 23:47:04 +0100 Subject: [PATCH 081/191] feat: add Dolby audio codecs (ac-3, ec-3) --- src/model/mod.rs | 6 ++++++ src/param/stream_filter.rs | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/model/mod.rs b/src/model/mod.rs index 3d2252e..8b60e34 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -343,6 +343,12 @@ pub enum AudioCodec { Mp4a, /// Opus: Opus, + /// Dolby Digital / AC-3: + #[serde(rename = "ac-3")] + Ac3, + /// Dolby Digital Plus / EC-3: + #[serde(rename = "ec-3")] + Ec3, } /// Video file type diff --git a/src/param/stream_filter.rs b/src/param/stream_filter.rs index aeddeb7..ae110c5 100644 --- a/src/param/stream_filter.rs +++ b/src/param/stream_filter.rs @@ -169,6 +169,8 @@ impl StreamFilter { AudioCodec::Unknown => -10, AudioCodec::Mp4a => 0, AudioCodec::Opus => 10, + AudioCodec::Ac3 => 20, + AudioCodec::Ec3 => 25, }; let language = if self.audio_languages.is_empty() { From a8e97f411a1e769e52d8cbde11f0a4ca1535f7ef Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 12 Jan 2025 23:56:50 +0100 Subject: [PATCH 082/191] feat: prefer maxresdefault.jpg thumbnail if available --- downloader/src/lib.rs | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 6107235..9efccc7 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -1020,14 +1020,37 @@ impl DownloadQuery { }; if let Some(thumbnail) = thumbnail { - let resp = self - .dl - .i - .http - .get(thumbnail.url) - .send() - .await? - .error_for_status()?; + // Attempt to get the higher resolution, uncropped maxresdefault.jpg thumbnail if available + let mut resp = None; + if thumbnail.height != thumbnail.width { + if let Ok(x) = self + .dl + .i + .http + .get(format!( + "https://i.ytimg.com/vi/{}/maxresdefault.jpg", + track.id + )) + .send() + .await? + .error_for_status() + { + resp = Some(x); + } + } + + let resp = match resp { + Some(resp) => resp, + None => self + .dl + .i + .http + .get(thumbnail.url) + .send() + .await? + .error_for_status()?, + }; + let img_type = resp .headers() .get(header::CONTENT_TYPE) From 23cd03a19dff24dc44bc7ac3d9a794332b6b58f8 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 13 Jan 2025 01:38:49 +0100 Subject: [PATCH 083/191] remove vscode rust-analyzer default features --- .vscode/settings.json | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 637231b..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "rust-analyzer.cargo.features": ["rss", "indicatif", "audiotag"] -} From 5daad1b700e8dcf1f3e803db1685f08f27794898 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 13 Jan 2025 03:21:51 +0100 Subject: [PATCH 084/191] fix: A/B test 19: Music artist album groups reordered --- codegen/Cargo.toml | 1 + codegen/src/abtest.rs | 29 +- codegen/src/collect_album_types.rs | 162 +- codegen/src/model.rs | 29 +- notes/AB_Tests.md | 12 + src/client/music_artist.rs | 21 +- src/client/response/music_artist.rs | 2 +- src/client/response/music_item.rs | 20 +- ..._music_artist_20250113_grouped_albums.snap | 943 + src/util/dictionary.rs | 756 +- testfiles/dict/album_type_samples.json | 332 +- testfiles/dict/dictionary.json | 223 +- .../artist_20250113_grouped_albums.json | 15760 ++++++++++++++++ 13 files changed, 17830 insertions(+), 460 deletions(-) create mode 100644 src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_20250113_grouped_albums.snap create mode 100644 testfiles/music_artist/artist_20250113_grouped_albums.json diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml index 024d8e5..0ccb5ac 100644 --- a/codegen/Cargo.toml +++ b/codegen/Cargo.toml @@ -15,6 +15,7 @@ tokio = { workspace = true, features = ["rt-multi-thread"] } futures-util.workspace = true serde.workspace = true serde_json.workspace = true +serde_plain.workspace = true serde_with.workspace = true once_cell.workspace = true regex.workspace = true diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index c50db7d..00c85cd 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -38,14 +38,11 @@ pub enum ABTest { PlaylistPageHeader = 16, ChannelPlaylistsLockup = 17, MusicPlaylistFacepile = 18, + MusicAlbumGroupsReordered = 19, } /// List of active A/B tests that are run when none is manually specified -const TESTS_TO_RUN: [ABTest; 3] = [ - ABTest::ChannelPageHeader, - ABTest::MusicPlaylistTwoColumn, - ABTest::CommentsFrameworkUpdate, -]; +const TESTS_TO_RUN: &[ABTest] = &[ABTest::MusicAlbumGroupsReordered]; #[derive(Debug, Serialize, Deserialize)] pub struct ABTestRes { @@ -116,6 +113,7 @@ pub async fn run_test( ABTest::PlaylistPageHeader => playlist_page_header_renderer(&query).await, ABTest::ChannelPlaylistsLockup => channel_playlists_lockup(&query).await, ABTest::MusicPlaylistFacepile => music_playlist_facepile(&query).await, + ABTest::MusicAlbumGroupsReordered => music_album_groups_reordered(&query).await, } .unwrap(); pb.inc(1); @@ -141,10 +139,10 @@ pub async fn run_all_tests(n: usize, concurrency: usize) -> Vec { let mut results = Vec::new(); for ab in TESTS_TO_RUN { - let (occurrences, vd_present, vd_absent) = run_test(ab, n, concurrency).await; + let (occurrences, vd_present, vd_absent) = run_test(*ab, n, concurrency).await; results.push(ABTestRes { - id: ab as u16, - name: ab, + id: *ab as u16, + name: *ab, tests: n, occurrences, vd_present, @@ -408,3 +406,18 @@ pub async fn music_playlist_facepile(rp: &RustyPipeQuery) -> Result { .await?; Ok(res.contains("\"facepile\"")) } + +pub async fn music_album_groups_reordered(rp: &RustyPipeQuery) -> Result { + let id = "UCOR4_bSVIXPsGa4BbCSt60Q"; + let res = rp + .raw( + ClientType::DesktopMusic, + "browse", + &QBrowse { + browse_id: id, + params: None, + }, + ) + .await?; + Ok(res.contains("\"Singles & EPs\"")) +} diff --git a/codegen/src/collect_album_types.rs b/codegen/src/collect_album_types.rs index b245ba9..b5ac912 100644 --- a/codegen/src/collect_album_types.rs +++ b/codegen/src/collect_album_types.rs @@ -7,22 +7,35 @@ use rustypipe::{ model::AlbumType, param::{Language, LANGUAGES}, }; -use serde::Deserialize; +use serde::{Deserialize, Serialize}; +use serde_with::rust::deserialize_ignore_any; use crate::{ - model::{QBrowse, TextRuns}, + model::{ContentsRenderer, QBrowse, SectionList, Tab, TextRuns}, util::{self, DICT_DIR}, }; +#[derive(Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)] +#[serde(rename_all = "snake_case")] +enum AlbumTypeX { + Album, + Ep, + Single, + Audiobook, + Show, + AlbumRow, + SingleRow, +} + pub async fn collect_album_types(concurrency: usize) { let json_path = path!(*DICT_DIR / "album_type_samples.json"); let album_types = [ - (AlbumType::Album, "MPREb_nlBWQROfvjo"), - (AlbumType::Single, "MPREb_bHfHGoy7vuv"), - (AlbumType::Ep, "MPREb_u1I69lSAe5v"), - (AlbumType::Audiobook, "MPREb_gaoNzsQHedo"), - (AlbumType::Show, "MPREb_cwzk8EUwypZ"), + (AlbumTypeX::Album, "MPREb_nlBWQROfvjo"), + (AlbumTypeX::Single, "MPREb_bHfHGoy7vuv"), + (AlbumTypeX::Ep, "MPREb_u1I69lSAe5v"), + (AlbumTypeX::Audiobook, "MPREb_gaoNzsQHedo"), + (AlbumTypeX::Show, "MPREb_cwzk8EUwypZ"), ]; let rp = RustyPipe::new(); @@ -32,7 +45,7 @@ pub async fn collect_album_types(concurrency: usize) { let rp = rp.clone(); async move { let query = rp.query().lang(lang); - let mut data: BTreeMap = BTreeMap::new(); + let mut data: BTreeMap = BTreeMap::new(); for (album_type, id) in album_types { let atype_txt = get_album_type(&query, id).await; @@ -40,6 +53,22 @@ pub async fn collect_album_types(concurrency: usize) { data.insert(album_type, atype_txt); } + let (albums_txt, singles_txt) = get_album_groups(&query).await; + println!( + "collected {}-{:?} ({})", + lang, + AlbumTypeX::AlbumRow, + &albums_txt + ); + println!( + "collected {}-{:?} ({})", + lang, + AlbumTypeX::SingleRow, + &singles_txt + ); + data.insert(AlbumTypeX::AlbumRow, albums_txt); + data.insert(AlbumTypeX::SingleRow, singles_txt); + (lang, data) } }) @@ -55,7 +84,7 @@ pub fn write_samples_to_dict() { let json_path = path!(*DICT_DIR / "album_type_samples.json"); let json_file = File::open(json_path).unwrap(); - let collected: BTreeMap> = + let collected: BTreeMap> = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let mut dict = util::read_dict(); let langs = dict.keys().copied().collect::>(); @@ -67,10 +96,12 @@ pub fn write_samples_to_dict() { e_langs.push(lang); for lang in &e_langs { - collected.get(lang).unwrap().iter().for_each(|(t, v)| { + collected.get(lang).unwrap().iter().for_each(|(t_str, v)| { + let t = + serde_plain::from_str::(t_str.split('_').next().unwrap()).unwrap(); dict_entry .album_types - .insert(v.to_lowercase().trim().to_owned(), *t); + .insert(v.to_lowercase().trim().to_owned(), t); }); } } @@ -80,13 +111,19 @@ pub fn write_samples_to_dict() { #[derive(Debug, Deserialize)] struct AlbumData { - header: Header, + contents: AlbumContents, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -struct Header { - music_detail_header_renderer: HeaderRenderer, +struct AlbumContents { + two_column_browse_results_renderer: ContentsRenderer>>, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct AlbumHeader { + music_responsive_header_renderer: HeaderRenderer, } #[derive(Debug, Deserialize)] @@ -106,8 +143,20 @@ async fn get_album_type(query: &RustyPipeQuery, id: &str) -> String { let album = serde_json::from_str::(&response_txt).unwrap(); album - .header - .music_detail_header_renderer + .contents + .two_column_browse_results_renderer + .contents + .into_iter() + .next() + .unwrap() + .tab_renderer + .content + .section_list_renderer + .contents + .into_iter() + .next() + .unwrap() + .music_responsive_header_renderer .subtitle .runs .into_iter() @@ -115,3 +164,84 @@ async fn get_album_type(query: &RustyPipeQuery, id: &str) -> String { .unwrap() .text } + +async fn get_album_groups(query: &RustyPipeQuery) -> (String, String) { + let body = QBrowse { + browse_id: "UCOR4_bSVIXPsGa4BbCSt60Q", + params: None, + }; + let response_txt = query + .clone() + .visitor_data("CgtwbzJZcS1XZWc1QSjM2JG8BjIKCgJERRIEEgAgCw%3D%3D") + .raw(ClientType::DesktopMusic, "browse", &body) + .await + .unwrap(); + let artist = serde_json::from_str::(&response_txt).unwrap(); + + let sections = artist + .contents + .single_column_browse_results_renderer + .contents + .into_iter() + .next() + .map(|c| c.tab_renderer.content.section_list_renderer.contents) + .unwrap(); + let titles = sections + .into_iter() + .filter_map(|s| { + if let ItemSection::MusicCarouselShelfRenderer(r) = s { + r.header + } else { + None + } + }) + .map(|h| { + h.music_carousel_shelf_basic_header_renderer + .title + .runs + .into_iter() + .next() + .unwrap() + .text + }) + .collect::>(); + assert!(titles.len() >= 2, "too few sections"); + + let mut titles_it = titles.into_iter(); + (titles_it.next().unwrap(), titles_it.next().unwrap()) +} + +#[derive(Debug, Deserialize)] +struct ArtistData { + contents: ArtistDataContents, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +struct ArtistDataContents { + single_column_browse_results_renderer: ContentsRenderer>>, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +enum ItemSection { + MusicCarouselShelfRenderer(MusicCarouselShelf), + #[serde(other, deserialize_with = "deserialize_ignore_any")] + None, +} + +#[derive(Debug, Deserialize)] +struct MusicCarouselShelf { + header: Option, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +struct MusicCarouselShelfHeader { + music_carousel_shelf_basic_header_renderer: MusicCarouselShelfHeaderRenderer, +} + +#[derive(Debug, Deserialize)] +struct MusicCarouselShelfHeaderRenderer { + title: TextRuns, +} diff --git a/codegen/src/model.rs b/codegen/src/model.rs index 0405369..d9f212d 100644 --- a/codegen/src/model.rs +++ b/codegen/src/model.rs @@ -145,7 +145,7 @@ pub struct Text { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Channel { - pub contents: Contents, + pub contents: TwoColumnBrowseResults, pub header: ChannelHeader, } @@ -163,7 +163,7 @@ pub struct HeaderRenderer { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Contents { +pub struct TwoColumnBrowseResults { pub two_column_browse_results_renderer: TabsRenderer, } @@ -172,24 +172,37 @@ pub struct Contents { #[serde(rename_all = "camelCase")] pub struct TabsRenderer { #[serde_as(as = "VecSkipError<_>")] - pub tabs: Vec, + pub tabs: Vec>, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct TabRendererWrap { - pub tab_renderer: TabRenderer, +pub struct ContentsRenderer { + #[serde(alias = "tabs")] + pub contents: Vec, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct TabRenderer { - pub content: RichGridRendererWrap, +pub struct Tab { + pub tab_renderer: TabRenderer, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct RichGridRendererWrap { +pub struct TabRenderer { + pub content: T, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct SectionList { + pub section_list_renderer: ContentsRenderer, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct RichGrid { pub rich_grid_renderer: RichGridRenderer, } diff --git a/notes/AB_Tests.md b/notes/AB_Tests.md index 0b66ba9..b006b4b 100644 --- a/notes/AB_Tests.md +++ b/notes/AB_Tests.md @@ -1024,3 +1024,15 @@ commandContext missing). } } ``` + +## [19] Music artist album groups reordered + +- **Encountered on:** 13.01.2025 +- **Impact:** 🟢 Low +- **Endpoint:** browse (YTM) +- **Status:** Common (10%) + +YouTube Music used to group artist albums into 2 rows: "Albums" and "Singles". + +These groups were changed into "Albums" and "Singles & EPs". Now the "Album" label is omitted +for albums in their group, while singles and EPs have a label with their type. diff --git a/src/client/music_artist.rs b/src/client/music_artist.rs index 99e86ce..8e4deb6 100644 --- a/src/client/music_artist.rs +++ b/src/client/music_artist.rs @@ -5,10 +5,14 @@ use regex::Regex; use tracing::debug; use crate::{ - client::{response::url_endpoint::NavigationEndpoint, MapRespOptions, QContinuation}, + client::{ + response::{music_item::map_album_type, url_endpoint::NavigationEndpoint}, + MapRespOptions, QContinuation, + }, error::{Error, ExtractionError}, model::{ - paginator::Paginator, traits::FromYtItem, AlbumItem, ArtistId, MusicArtist, MusicItem, + paginator::Paginator, traits::FromYtItem, AlbumItem, AlbumType, ArtistId, MusicArtist, + MusicItem, }, param::{AlbumFilter, AlbumOrder}, serializer::MapResult, @@ -175,8 +179,7 @@ fn map_artist_page( .contents .into_iter() .next() - .and_then(|tab| tab.tab_renderer.content) - .map(|c| c.section_list_renderer.contents) + .map(|c| c.tab_renderer.content.section_list_renderer.contents) .unwrap_or_default(); let mut mapper = MusicListMapper::with_artist( @@ -207,11 +210,12 @@ fn map_artist_page( } } } - + mapper.album_type = AlbumType::Single; mapper.map_response(shelf.contents); } response::music_item::ItemSection::MusicCarouselShelfRenderer(shelf) => { let mut extendable_albums = false; + mapper.album_type = AlbumType::Single; if let Some(h) = shelf.header { if let Some(button) = h .music_carousel_shelf_basic_header_renderer @@ -250,6 +254,12 @@ fn map_artist_page( } } } + mapper.album_type = map_album_type( + h.music_carousel_shelf_basic_header_renderer + .title + .first_str(), + ctx.lang, + ); } if !skip_extendables || !extendable_albums { @@ -415,6 +425,7 @@ mod tests { #[case::only_singles("only_singles", "UCfwCE5VhPMGxNPFxtVv7lRw")] #[case::no_artist("no_artist", "UCh8gHdtzO2tXd593_bjErWg")] #[case::only_more_singles("only_more_singles", "UC0aXrjVxG5pZr99v77wZdPQ")] + #[case::grouped_albums("20250113_grouped_albums", "UCOR4_bSVIXPsGa4BbCSt60Q")] fn map_music_artist(#[case] name: &str, #[case] id: &str) { let json_path = path!(*TESTFILES / "music_artist" / format!("artist_{name}.json")); let json_file = File::open(json_path).unwrap(); diff --git a/src/client/response/music_artist.rs b/src/client/response/music_artist.rs index af4efaf..88232ad 100644 --- a/src/client/response/music_artist.rs +++ b/src/client/response/music_artist.rs @@ -14,7 +14,7 @@ use super::{ #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct MusicArtist { - pub contents: SingleColumnBrowseResult>>>, + pub contents: SingleColumnBrowseResult>>, pub header: Header, } diff --git a/src/client/response/music_item.rs b/src/client/response/music_item.rs index 1138bac..cb51528 100644 --- a/src/client/response/music_item.rs +++ b/src/client/response/music_item.rs @@ -21,7 +21,6 @@ use super::{ ContentsRenderer, MusicContinuationData, SimpleHeaderRenderer, Thumbnails, ThumbnailsWrap, }; -#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) enum ItemSection { @@ -429,6 +428,8 @@ pub(crate) struct MusicListMapper { /// Artists list + various artists flag artists: Option<(Vec, bool)>, album: Option, + /// Default album type in case an album is unlabeled + pub album_type: AlbumType, artist_page: bool, search_suggestion: bool, items: Vec, @@ -449,6 +450,7 @@ impl MusicListMapper { lang, artists: None, album: None, + album_type: AlbumType::Single, artist_page: false, search_suggestion: false, items: Vec::new(), @@ -461,6 +463,7 @@ impl MusicListMapper { lang, artists: None, album: None, + album_type: AlbumType::Single, artist_page: false, search_suggestion: true, items: Vec::new(), @@ -474,6 +477,7 @@ impl MusicListMapper { lang, artists: Some((vec![artist], false)), album: None, + album_type: AlbumType::Single, artist_page: true, search_suggestion: false, items: Vec::new(), @@ -487,6 +491,7 @@ impl MusicListMapper { lang, artists: Some((artists, by_va)), album: Some(album), + album_type: AlbumType::Single, artist_page: false, search_suggestion: false, items: Vec::new(), @@ -950,7 +955,7 @@ impl MusicListMapper { } MusicPageType::Album => { let mut year = None; - let mut album_type = AlbumType::Single; + let mut album_type = self.album_type; let (artists, by_va) = match (subtitle_p1, subtitle_p2, &self.artists, self.artist_page) { @@ -1397,13 +1402,18 @@ mod tests { fn map_album_type_samples() { let json_path = path!(*TESTFILES / "dict" / "album_type_samples.json"); let json_file = File::open(json_path).unwrap(); - let atype_samples: BTreeMap> = + let atype_samples: BTreeMap> = serde_json::from_reader(BufReader::new(json_file)).unwrap(); for (lang, entry) in &atype_samples { - for (album_type, txt) in entry { + for (album_type_str, txt) in entry { + let album_type_n = album_type_str.split('_').next().unwrap(); + let album_type = serde_plain::from_str::(album_type_n).unwrap(); let res = map_album_type(txt, *lang); - assert_eq!(res, *album_type, "lang: {lang}, txt: {txt}"); + assert_eq!( + res, album_type, + "{album_type_str}: lang: {lang}, txt: {txt}" + ); } } } diff --git a/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_20250113_grouped_albums.snap b/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_20250113_grouped_albums.snap new file mode 100644 index 0000000..9c9acaa --- /dev/null +++ b/src/client/snapshots/rustypipe__client__music_artist__tests__map_music_artist_20250113_grouped_albums.snap @@ -0,0 +1,943 @@ +--- +source: src/client/music_artist.rs +expression: artist +--- +MusicArtist( + id: "UCOR4_bSVIXPsGa4BbCSt60Q", + name: "Trailerpark", + header_image: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/II101BviJo-tGcGg1KKWSU8D3EZjALHQMbQ4v-7-hP4Zfk1pBESaTCLcz8eQb-hggzxq4Z1MuFkBeRE=w540-h225-p-l90-rj", + width: 540, + height: 225, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/II101BviJo-tGcGg1KKWSU8D3EZjALHQMbQ4v-7-hP4Zfk1pBESaTCLcz8eQb-hggzxq4Z1MuFkBeRE=w721-h300-p-l90-rj", + width: 721, + height: 300, + ), + ], + description: None, + wikipedia_url: None, + subscriber_count: Some(270000), + tracks: [ + TrackItem( + id: "YvidasjVLXk", + name: "Bleib in der Schule", + duration: None, + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/V_tvMqbuXgDgoAKuYZ-VFRru3cUb2WQvwO6vVBKY8pdFYAl1dkuIv_W2afjMUNN6uVNxet6r7mHISh0s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/V_tvMqbuXgDgoAKuYZ-VFRru3cUb2WQvwO6vVBKY8pdFYAl1dkuIv_W2afjMUNN6uVNxet6r7mHISh0s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: Some(AlbumId( + id: "MPREb_8PsIyll0LFV", + name: "Bleib in der Schule", + )), + view_count: Some(71000000), + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "h3T_NXRUUjM", + name: "Fledermausland", + duration: None, + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/1fPBoTszY4e6Nf8egSwBTHWsQT8hotwhDnjArd1SHS8gZc5asCoo_3Z2WhN1IO2KMqyYly0xm7mMZ43d=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/1fPBoTszY4e6Nf8egSwBTHWsQT8hotwhDnjArd1SHS8gZc5asCoo_3Z2WhN1IO2KMqyYly0xm7mMZ43d=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: Some(AlbumId( + id: "MPREb_POeT6m0bw9q", + name: "Crackstreet Boys II X Version", + )), + view_count: Some(30000000), + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "XZfoFwWvkGQ", + name: "Sterben kannst du überall", + duration: None, + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/eQCwnR4YLYnizEhQKeSDDE3rulSTo64cTfs8fxR1K-3iWUfC477SHV0ZOOoQa2vJuvr_9i_WDYI-wbo=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/eQCwnR4YLYnizEhQKeSDDE3rulSTo64cTfs8fxR1K-3iWUfC477SHV0ZOOoQa2vJuvr_9i_WDYI-wbo=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: Some(AlbumId( + id: "MPREb_UYdRV1nnK2J", + name: "TP4L", + )), + view_count: Some(40000000), + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "LOuVxwVFJhs", + name: "Selbstbefriedigung", + duration: None, + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/1fPBoTszY4e6Nf8egSwBTHWsQT8hotwhDnjArd1SHS8gZc5asCoo_3Z2WhN1IO2KMqyYly0xm7mMZ43d=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/1fPBoTszY4e6Nf8egSwBTHWsQT8hotwhDnjArd1SHS8gZc5asCoo_3Z2WhN1IO2KMqyYly0xm7mMZ43d=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: Some(AlbumId( + id: "MPREb_POeT6m0bw9q", + name: "Crackstreet Boys II X Version", + )), + view_count: Some(13000000), + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "GePZUYeIQQQ", + name: "Falsche Band", + duration: None, + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/MIuap-H2LxqP5O7Dry1LdShBFBbg5YTjIPjuXOHWyrKlmnOogsO5cTk6yXH97DhI3WjZg0z3y-jkQxaM=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/MIuap-H2LxqP5O7Dry1LdShBFBbg5YTjIPjuXOHWyrKlmnOogsO5cTk6yXH97DhI3WjZg0z3y-jkQxaM=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: Some(AlbumId( + id: "MPREb_bi34SGT1xlc", + name: "Crackstreet Boys 3 (Bonus Tracks Version)", + )), + view_count: Some(13000000), + track_type: track, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "0mcING0Zdis", + name: "Trailerpark - TP4L (Live Abschiedskonzert)", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/0mcING0Zdis/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k5JY0WRBeKNaotfUYrpbObz1mceA", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/0mcING0Zdis/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3kinVfBJUF-SDFagYKazKmS_ad75w", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: None, + view_count: Some(13000), + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "EAC-2ttHCyk", + name: "Fledermausland (Bonus Track)", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/EAC-2ttHCyk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nlrgFTz_pwbBwXFbaASgklpX78vA", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/EAC-2ttHCyk/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nHzhiahqhmIkZ0eUXD09BGak2MHQ", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: None, + view_count: Some(25000000), + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "Bret5VaVzJk", + name: "New Kids on the Blech (Bonus Track)", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Bret5VaVzJk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nFa4qUxqJzCtxr-zPdzP15Ixvu-A", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Bret5VaVzJk/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3l1hGZVAWUwaJQbZXmbRpcbsMdTeQ", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: None, + view_count: Some(6900000), + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "EqP1_IcjW-s", + name: "Pimpulsiv feat. DNP, Sudden & Dana - Wohnwagensiedlung", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/EqP1_IcjW-s/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lIeltSLpA_XwwZzdJfHnNZ0vqBzA", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/EqP1_IcjW-s/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nfiByY3RfcFYGfg92C5Vlkar0GJA", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: None, + view_count: Some(7100000), + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "3EoF9Of98e4", + name: "Armut treibt Jugendliche in die Popmusik", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/3EoF9Of98e4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kvWHX-5mYREKEkf-CM3TLfjrLjlw", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/3EoF9Of98e4/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lItzsg6wamh_xSdpoZxTWOHHLS-g", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: None, + view_count: Some(5400000), + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "qr0eN_uIcTs", + name: "Bleib in der Schule (Live in Berlin)", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/qr0eN_uIcTs/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nspTbohIYzDFOjTg90KEmKecVVvg", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/qr0eN_uIcTs/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3n0SIeq4dPTPvbGv4STsTWNt24cig", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: None, + view_count: Some(56000), + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "McgSyiug6XE", + name: "We Are Family", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/McgSyiug6XE/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nxe3Xz99BVFg-VOra20J682me5JQ", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/McgSyiug6XE/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lSGwKx_hnqYA-CkoLHapr1PiyX6w", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ArtistId( + id: Some("UC5HSrFHr6lMzwAyGjlClm0A"), + name: "Timi Hendrix", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: None, + view_count: Some(1800000), + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "ioZxvVhjFs8", + name: "Schlechter Tag", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ioZxvVhjFs8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3ltQmZbH1DF9nmho5HLGehqLSGzTw", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ioZxvVhjFs8/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lsluKPeCNxP7QoOCc24tZy4jsn7Q", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: None, + view_count: Some(7100000), + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "3jyZJEcomkw", + name: "Timi Hendrix feat. Alligatoah - Schlaflos in Guantanamo ► prod. by Mantra", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/3jyZJEcomkw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k46-OFTCnpEJry_PNst1C11FPA1A", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/3jyZJEcomkw/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3kN1ryaQSy4M_Y9bQGh9S-tbYGqdg", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: None, + view_count: Some(1500000), + track_type: video, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "9oM-cflYhGk", + name: "Timi Hendrix - Kaiser von China (Official Video) 🐲", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/9oM-cflYhGk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3m6MksfA1NWyIMv6cTk03J21pA0NQ", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/9oM-cflYhGk/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3n7oy_XobzQBkUVxEx08iSKNPIB0Q", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album: None, + view_count: Some(1100000), + track_type: video, + track_nr: None, + by_va: false, + ), + ], + albums: [ + AlbumItem( + id: "MPREb_UYdRV1nnK2J", + name: "TP4L", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/eQCwnR4YLYnizEhQKeSDDE3rulSTo64cTfs8fxR1K-3iWUfC477SHV0ZOOoQa2vJuvr_9i_WDYI-wbo=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/eQCwnR4YLYnizEhQKeSDDE3rulSTo64cTfs8fxR1K-3iWUfC477SHV0ZOOoQa2vJuvr_9i_WDYI-wbo=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: album, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_bi34SGT1xlc", + name: "Crackstreet Boys 3 (Bonus Tracks Version)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/MIuap-H2LxqP5O7Dry1LdShBFBbg5YTjIPjuXOHWyrKlmnOogsO5cTk6yXH97DhI3WjZg0z3y-jkQxaM=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/MIuap-H2LxqP5O7Dry1LdShBFBbg5YTjIPjuXOHWyrKlmnOogsO5cTk6yXH97DhI3WjZg0z3y-jkQxaM=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: album, + year: Some(2014), + by_va: false, + ), + AlbumItem( + id: "MPREb_5gkbwhqC4AJ", + name: "Goldener Schluss (Live in Berlin)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/ilzR9UxpZFwHZnYOL0L504H6a0Y8k_zPk0AYOhBiBqIjq4TGnX-B1uKcNah56dmjPZoDvp9vGWyfgY8=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/ilzR9UxpZFwHZnYOL0L504H6a0Y8k_zPk0AYOhBiBqIjq4TGnX-B1uKcNah56dmjPZoDvp9vGWyfgY8=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: album, + year: Some(2024), + by_va: false, + ), + AlbumItem( + id: "MPREb_HPXN9BBzFpV", + name: "TP4L", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/8Ftr5oIt1q6RbGkdiW7cefw-XGUplUXcjXXN7QntI1Nzh_6oR0euh7Lj2Ner3yXV--U-hVxJewkeq8A=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/8Ftr5oIt1q6RbGkdiW7cefw-XGUplUXcjXXN7QntI1Nzh_6oR0euh7Lj2Ner3yXV--U-hVxJewkeq8A=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_hcK0fXETEf9", + name: "Endlich normale Leute", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/MW37LppS1rjDQIl5GaG0BxKeWk5fs4xphr6rU0z-KmJiHbvMbA3K5ZzrA9avinP2LjNrDGwB5tSLLsqe=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/MW37LppS1rjDQIl5GaG0BxKeWk5fs4xphr6rU0z-KmJiHbvMbA3K5ZzrA9avinP2LjNrDGwB5tSLLsqe=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_R6EV2L1q0oc", + name: "Armut treibt Jugendliche in die Popmusik", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/kqKBF4JPQhKY1099AzRpJFGc2P7TFuFa2GeM7z8GGfTJ_DkfAzKTdV8gPtfVkyA5HQ0uZn3XG-VtMVj0=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/kqKBF4JPQhKY1099AzRpJFGc2P7TFuFa2GeM7z8GGfTJ_DkfAzKTdV8gPtfVkyA5HQ0uZn3XG-VtMVj0=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_oHieBHkXn3A", + name: "Dicks Sucken", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/IVvdOUgbTECe2cVKrwhhCYmhHuipV6p0t5cLqMYWm3E_23zBEABxodGiSuX3H_AxRcEZk2-4V-k3RZw6=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/IVvdOUgbTECe2cVKrwhhCYmhHuipV6p0t5cLqMYWm3E_23zBEABxodGiSuX3H_AxRcEZk2-4V-k3RZw6=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: single, + year: Some(2014), + by_va: false, + ), + AlbumItem( + id: "MPREb_8PsIyll0LFV", + name: "Bleib in der Schule", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/V_tvMqbuXgDgoAKuYZ-VFRru3cUb2WQvwO6vVBKY8pdFYAl1dkuIv_W2afjMUNN6uVNxet6r7mHISh0s=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/V_tvMqbuXgDgoAKuYZ-VFRru3cUb2WQvwO6vVBKY8pdFYAl1dkuIv_W2afjMUNN6uVNxet6r7mHISh0s=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: single, + year: Some(2014), + by_va: false, + ), + AlbumItem( + id: "MPREb_POeT6m0bw9q", + name: "Crackstreet Boys II X Version", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/1fPBoTszY4e6Nf8egSwBTHWsQT8hotwhDnjArd1SHS8gZc5asCoo_3Z2WhN1IO2KMqyYly0xm7mMZ43d=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/1fPBoTszY4e6Nf8egSwBTHWsQT8hotwhDnjArd1SHS8gZc5asCoo_3Z2WhN1IO2KMqyYly0xm7mMZ43d=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: ep, + year: Some(2014), + by_va: false, + ), + AlbumItem( + id: "MPREb_tdFqP579jQz", + name: "Bleib in der Schule (Live in Berlin)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/VNjspSA1Fm0yFJEKUCuetOziiET6sQG9QXQCiydknEny98Lc_MEmUp8e37FtCbDz1bQ6yvM6AqpsvL0=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/VNjspSA1Fm0yFJEKUCuetOziiET6sQG9QXQCiydknEny98Lc_MEmUp8e37FtCbDz1bQ6yvM6AqpsvL0=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: single, + year: Some(2024), + by_va: false, + ), + AlbumItem( + id: "MPREb_kLvmX2AzYBL", + name: "Bleib in der Schule (Live at Wacken 2019)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/dV3PCeAdRQgLOuSUdIfA4q8jVgNwSoTceeK085ZOCzEe6YBm5c9gNIvO8wGM_K2NKpip-8-PxJtWEPJo=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/dV3PCeAdRQgLOuSUdIfA4q8jVgNwSoTceeK085ZOCzEe6YBm5c9gNIvO8wGM_K2NKpip-8-PxJtWEPJo=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: single, + year: Some(2014), + by_va: false, + ), + ], + playlists: [], + similar_artists: [ + ArtistItem( + id: "UCVRREKn7V1Cb8qvf43dwZ6w", + name: "257ers", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/yPjiQ4ZVblOXbft1Yo2jd3uJXKJDuSWOP1MCAG6kTIwYqTWsOKRbZBnPhW4gjzvvVll7yVtjbu3e3Q=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/yPjiQ4ZVblOXbft1Yo2jd3uJXKJDuSWOP1MCAG6kTIwYqTWsOKRbZBnPhW4gjzvvVll7yVtjbu3e3Q=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(67300), + ), + ArtistItem( + id: "UCuNyvmBfTzQZmWI2rsVX3QQ", + name: "Alligatoah", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/ffIVPiIldrcfp9UEoAbDid6fnAOajn_kgI4OisFoFhK28rk3HVdpYfe2h27T3d_hHfNR943PPSOhHw=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/ffIVPiIldrcfp9UEoAbDid6fnAOajn_kgI4OisFoFhK28rk3HVdpYfe2h27T3d_hHfNR943PPSOhHw=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(779000), + ), + ArtistItem( + id: "UCO04sIqN7F4ff2-1ycVZSgQ", + name: "Sudden", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/TEdMt2cE-UCbnjm6AJtyasWv9-a3LFpdmh2X6w3iBwIMATHUtYIQ_F0cJ30vL5m6uJkqL3qFvNYLpYrN=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/TEdMt2cE-UCbnjm6AJtyasWv9-a3LFpdmh2X6w3iBwIMATHUtYIQ_F0cJ30vL5m6uJkqL3qFvNYLpYrN=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(3660), + ), + ArtistItem( + id: "UC5k_3LEPSGchsGEGpqoF6dg", + name: "K.I.Z", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/PVaIRDAgRRyLMuFp7OTS7h3HEMoY9ejKxt7GLgfgi6aFt3bP-Edb1YU5t1IlGN0Z-qcrb86qspETNoI=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/PVaIRDAgRRyLMuFp7OTS7h3HEMoY9ejKxt7GLgfgi6aFt3bP-Edb1YU5t1IlGN0Z-qcrb86qspETNoI=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(522000), + ), + ArtistItem( + id: "UCG8K_22LRSRwqhoJXBWGmbA", + name: "FiNCH", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/cofqKPsHr5dzuLexkKAYQF3vVMkKTT2FuZgIMXs6XIO3J8diK29qqfKQkqrga8NOCmwVl7x-w4z3mQ=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/cofqKPsHr5dzuLexkKAYQF3vVMkKTT2FuZgIMXs6XIO3J8diK29qqfKQkqrga8NOCmwVl7x-w4z3mQ=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(533000), + ), + ArtistItem( + id: "UC5HSrFHr6lMzwAyGjlClm0A", + name: "Timi Hendrix", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/1yi83YgKDBSQ0rgsA2GuZRa0rBABPR2BH41DsuCfGMRmLdF9oR7vv7T6QGLbhNP8FfX6qVHUQci4YM8=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/1yi83YgKDBSQ0rgsA2GuZRa0rBABPR2BH41DsuCfGMRmLdF9oR7vv7T6QGLbhNP8FfX6qVHUQci4YM8=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(6410), + ), + ArtistItem( + id: "UC9izv9vxcTVKA1IibcGTrNA", + name: "Pimpulsiv", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/QXuirXSQsdO1KUZCz-ZX-kRVSorZxIUC4YrxQD0IeSr1mY-42VwvAjf4TTownRVzm-02-U8kLM3VuETf9w=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/QXuirXSQsdO1KUZCz-ZX-kRVSorZxIUC4YrxQD0IeSr1mY-42VwvAjf4TTownRVzm-02-U8kLM3VuETf9w=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(985), + ), + ArtistItem( + id: "UCgosMU69MpoCqhuS1JZj6Cw", + name: "Sido", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/HZpnexwxNS5FkIrpz6hdHZuNhBS-GKjs0C9NU8nDSTmHFlPaviqxV-dDLS_ubSEbpEvu0m2P2WT3kaQ=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/HZpnexwxNS5FkIrpz6hdHZuNhBS-GKjs0C9NU8nDSTmHFlPaviqxV-dDLS_ubSEbpEvu0m2P2WT3kaQ=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(1550000), + ), + ArtistItem( + id: "UCAiLb3B6iCjxv7HhPf1S4ag", + name: "Marteria", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/Ms5gYOttabL03qfFYx7SNhRsx-K_Y7hxMN0WXgc7iquYAfLV5cgYZfTBn3nsi0_sN5BaqAaIr1z5iGc=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/Ms5gYOttabL03qfFYx7SNhRsx-K_Y7hxMN0WXgc7iquYAfLV5cgYZfTBn3nsi0_sN5BaqAaIr1z5iGc=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(422000), + ), + ArtistItem( + id: "UCtoec88rzlhABHeo_4d-H8g", + name: "Dame", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/lkbE9cB4qTxtRmzkjAaLEHrpIgeCOzeBXaL4BpBRq6wp4PlCoSIFej3ita3du8lqniIA67NRYfsVwuFj=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/lkbE9cB4qTxtRmzkjAaLEHrpIgeCOzeBXaL4BpBRq6wp4PlCoSIFej3ita3du8lqniIA67NRYfsVwuFj=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(37700), + ), + ], + tracks_playlist_id: Some("OLAK5uy_miHesZCUQY5S9EwqfoNP2tZR9nZ0NBAeU"), + videos_playlist_id: Some("OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ"), + radio_id: Some("RDEM7AbogW0cCnElSU0WYm1GqA"), +) diff --git a/src/util/dictionary.rs b/src/util/dictionary.rs index 43b0dec..43f9119 100644 --- a/src/util/dictionary.rs +++ b/src/util/dictionary.rs @@ -167,16 +167,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 2980949210194914378, + key: 15467950696543387533, disps: &[ - (0, 0), + (2, 0), + (4, 1), ], entries: &[ - ("album", AlbumType::Album), - ("drama", AlbumType::Show), - ("oudioboek", AlbumType::Audiobook), - ("ep", AlbumType::Ep), ("enkelsnit", AlbumType::Single), + ("albums", AlbumType::Album), + ("drama", AlbumType::Show), + ("album", AlbumType::Album), + ("ep", AlbumType::Ep), + ("enkelsnitte", AlbumType::Single), + ("oudioboek", AlbumType::Audiobook), ], }, chan_prefix: "deur", @@ -291,16 +294,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 10121458955350035957, + key: 12913932095322966823, disps: &[ + (0, 2), (4, 0), ], entries: &[ - ("ነጠላ", AlbumType::Single), + ("ነጠላዎች", AlbumType::Single), ("የተራዘመ አልበም", AlbumType::Ep), + ("አልበሞች", AlbumType::Album), ("ኦዲዮ መጽሐፍ", AlbumType::Audiobook), - ("ትዕይንት", AlbumType::Show), ("አልበም", AlbumType::Album), + ("ትዕይንት", AlbumType::Show), + ("ነጠላ", AlbumType::Single), ], }, chan_prefix: "በ", @@ -423,15 +429,18 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 10121458955350035957, + key: 12913932095322966823, disps: &[ - (1, 0), + (2, 0), + (0, 6), ], entries: &[ - ("ألبوم", AlbumType::Album), - ("ألبوم قصير", AlbumType::Ep), ("أغنية منفردة", AlbumType::Single), + ("ألبوم", AlbumType::Album), + ("ألبومات", AlbumType::Album), + ("ألبوم قصير", AlbumType::Ep), ("عرض", AlbumType::Show), + ("أغان\u{64d} منفردة", AlbumType::Single), ("الكتب المسموعة", AlbumType::Audiobook), ], }, @@ -536,14 +545,17 @@ pub(crate) fn entry(lang: Language) -> Entry { album_types: ::phf::Map { key: 14108922650502679131, disps: &[ - (4, 0), + (4, 4), + (0, 0), ], entries: &[ - ("এলব\u{9be}ম", AlbumType::Album), - ("একক", AlbumType::Single), - ("অডিঅ’ব\u{9c1}ক", AlbumType::Audiobook), - ("শ\u{9cd}ব’", AlbumType::Show), + ("এককসম\u{9c2}হ", AlbumType::Single), ("ep", AlbumType::Ep), + ("এলব\u{9be}মসম\u{9c2}হ", AlbumType::Album), + ("শ\u{9cd}ব’", AlbumType::Show), + ("এলব\u{9be}ম", AlbumType::Album), + ("অডিঅ’ব\u{9c1}ক", AlbumType::Audiobook), + ("একক", AlbumType::Single), ], }, chan_prefix: "", @@ -646,16 +658,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 7485420634051515786, + key: 12913932095322966823, disps: &[ - (0, 0), + (1, 1), + (1, 0), ], entries: &[ - ("albom", AlbumType::Album), ("audio kitab", AlbumType::Audiobook), ("şou", AlbumType::Show), - ("tək", AlbumType::Single), + ("sinql", AlbumType::Single), ("ep", AlbumType::Ep), + ("tək", AlbumType::Single), + ("albom", AlbumType::Album), + ("albomlar", AlbumType::Album), ], }, chan_prefix: "by", @@ -790,16 +805,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (2, 0), + (0, 0), + (3, 2), ], entries: &[ - ("альбом", AlbumType::Album), - ("шоу", AlbumType::Show), + ("альбомы", AlbumType::Album), ("сінгл", AlbumType::Single), - ("аўдыякніга", AlbumType::Audiobook), + ("сінглы", AlbumType::Single), ("міні-альбом", AlbumType::Ep), + ("шоу", AlbumType::Show), + ("аўдыякніга", AlbumType::Audiobook), + ("альбом", AlbumType::Album), ], }, chan_prefix: "ад", @@ -903,16 +921,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 15467950696543387533, + key: 10121458955350035957, disps: &[ - (3, 0), + (1, 0), + (0, 4), ], entries: &[ - ("сингъл", AlbumType::Single), ("албум", AlbumType::Album), - ("аудиокнига", AlbumType::Audiobook), - ("миниалбум", AlbumType::Ep), ("предаване", AlbumType::Show), + ("албуми", AlbumType::Album), + ("сингли", AlbumType::Single), + ("миниалбум", AlbumType::Ep), + ("сингъл", AlbumType::Single), + ("аудиокнига", AlbumType::Audiobook), ], }, chan_prefix: "от", @@ -1018,16 +1039,18 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 7485420634051515786, + key: 12913932095322966823, disps: &[ (0, 0), + (3, 1), ], entries: &[ - ("সিঙ\u{9cd}গেল", AlbumType::Single), - ("শো", AlbumType::Show), ("ইপি", AlbumType::Ep), - ("অডিওব\u{9c1}ক", AlbumType::Audiobook), ("অ\u{9cd}য\u{9be}লব\u{9be}ম", AlbumType::Album), + ("শো", AlbumType::Show), + ("সিঙ\u{9cd}গেলস", AlbumType::Single), + ("অডিওব\u{9c1}ক", AlbumType::Audiobook), + ("সিঙ\u{9cd}গেল", AlbumType::Single), ], }, chan_prefix: ",", @@ -1154,16 +1177,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 10121458955350035957, + key: 12913932095322966823, disps: &[ - (4, 0), + (2, 0), + (5, 2), ], entries: &[ - ("album", AlbumType::Album), + ("ep", AlbumType::Ep), ("audio knjiga", AlbumType::Audiobook), ("serija", AlbumType::Show), + ("singlovi", AlbumType::Single), ("singl", AlbumType::Single), - ("ep", AlbumType::Ep), + ("album", AlbumType::Album), + ("albumi", AlbumType::Album), ], }, chan_prefix: "od", @@ -1275,16 +1301,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 106375038446233661, + key: 15467950696543387533, disps: &[ - (3, 0), + (5, 2), + (2, 0), ], entries: &[ - ("ep", AlbumType::Ep), - ("àlbum", AlbumType::Album), - ("single", AlbumType::Single), - ("programa", AlbumType::Show), + ("singles", AlbumType::Single), ("audiollibre", AlbumType::Audiobook), + ("àlbums", AlbumType::Album), + ("programa", AlbumType::Show), + ("àlbum", AlbumType::Album), + ("ep", AlbumType::Ep), + ("single", AlbumType::Single), ], }, chan_prefix: "de:", @@ -1402,16 +1431,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 14108922650502679131, + key: 10121458955350035957, disps: &[ - (3, 0), + (1, 0), + (0, 1), ], entries: &[ - ("zobrazit", AlbumType::Show), - ("audiokniha", AlbumType::Audiobook), - ("singl", AlbumType::Single), - ("ep", AlbumType::Ep), ("album", AlbumType::Album), + ("zobrazit", AlbumType::Show), + ("singly", AlbumType::Single), + ("audiokniha", AlbumType::Audiobook), + ("alba", AlbumType::Album), + ("ep", AlbumType::Ep), + ("singl", AlbumType::Single), ], }, chan_prefix: "autor:", @@ -1524,16 +1556,18 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 14108922650502679131, + key: 7485420634051515786, disps: &[ - (4, 0), + (0, 0), + (2, 0), ], entries: &[ - ("album", AlbumType::Album), - ("lyddrama", AlbumType::Show), - ("single", AlbumType::Single), - ("lydbog", AlbumType::Audiobook), ("ep", AlbumType::Ep), + ("single", AlbumType::Single), + ("singler", AlbumType::Single), + ("lyddrama", AlbumType::Show), + ("lydbog", AlbumType::Audiobook), + ("album", AlbumType::Album), ], }, chan_prefix: "af", @@ -1633,16 +1667,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 2980949210194914378, + key: 12913932095322966823, disps: &[ - (0, 0), + (3, 6), + (5, 0), ], entries: &[ + ("singles", AlbumType::Single), ("album", AlbumType::Album), - ("hörbuch", AlbumType::Audiobook), - ("single", AlbumType::Single), - ("ep", AlbumType::Ep), ("hörspiel", AlbumType::Show), + ("hörbuch", AlbumType::Audiobook), + ("alben", AlbumType::Album), + ("ep", AlbumType::Ep), + ("single", AlbumType::Single), ], }, chan_prefix: "von", @@ -1763,12 +1800,14 @@ pub(crate) fn entry(lang: Language) -> Entry { album_types: ::phf::Map { key: 12913932095322966823, disps: &[ + (1, 2), (1, 0), ], entries: &[ ("ηχητικό βιβλίο", AlbumType::Audiobook), - ("single", AlbumType::Single), ("ep", AlbumType::Ep), + ("σινγκλ", AlbumType::Single), + ("single", AlbumType::Single), ("εκπομπή", AlbumType::Show), ("άλμπουμ", AlbumType::Album), ], @@ -1899,16 +1938,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 8694567506910003252, + key: 10121458955350035957, disps: &[ - (3, 0), + (0, 0), + (1, 6), ], entries: &[ ("show", AlbumType::Show), ("ep", AlbumType::Ep), + ("albums", AlbumType::Album), + ("audiobook", AlbumType::Audiobook), ("single", AlbumType::Single), ("album", AlbumType::Album), - ("audiobook", AlbumType::Audiobook), + ("singles", AlbumType::Single), ], }, chan_prefix: "by", @@ -2023,16 +2065,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 2126027241312876569, + key: 14108922650502679131, disps: &[ - (2, 0), + (0, 0), + (1, 0), ], entries: &[ - ("álbum", AlbumType::Album), ("single", AlbumType::Single), - ("audiolibro", AlbumType::Audiobook), - ("audiodrama", AlbumType::Show), + ("álbumes", AlbumType::Album), + ("sencillos", AlbumType::Single), ("ep", AlbumType::Ep), + ("audiodrama", AlbumType::Show), + ("audiolibro", AlbumType::Audiobook), + ("álbum", AlbumType::Album), ], }, chan_prefix: "de", @@ -2150,14 +2195,17 @@ pub(crate) fn entry(lang: Language) -> Entry { album_types: ::phf::Map { key: 15467950696543387533, disps: &[ - (0, 0), + (6, 0), + (4, 6), ], entries: &[ - ("ep", AlbumType::Ep), - ("audiolibro", AlbumType::Audiobook), ("sencillo", AlbumType::Single), ("programa", AlbumType::Show), + ("álbumes", AlbumType::Album), + ("sencillos", AlbumType::Single), ("álbum", AlbumType::Album), + ("ep", AlbumType::Ep), + ("audiolibro", AlbumType::Audiobook), ], }, chan_prefix: "de", @@ -2270,16 +2318,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (3, 0), + (2, 6), + (1, 0), ], entries: &[ - ("sari", AlbumType::Show), ("singel", AlbumType::Single), - ("ep", AlbumType::Ep), + ("albumid", AlbumType::Album), ("audioraamat", AlbumType::Audiobook), + ("ep", AlbumType::Ep), ("album", AlbumType::Album), + ("sari", AlbumType::Show), + ("singlid", AlbumType::Single), ], }, chan_prefix: "kanalilt", @@ -2383,16 +2434,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 2980949210194914378, + key: 12913932095322966823, disps: &[ - (4, 0), + (0, 0), + (0, 5), ], entries: &[ - ("ep", AlbumType::Ep), ("singlea", AlbumType::Single), - ("saioa", AlbumType::Show), - ("audio-liburua", AlbumType::Audiobook), ("albuma", AlbumType::Album), + ("singleak", AlbumType::Single), + ("ep", AlbumType::Ep), + ("albumak", AlbumType::Album), + ("audio-liburua", AlbumType::Audiobook), + ("saioa", AlbumType::Show), ], }, chan_prefix: "egilea:", @@ -2487,16 +2541,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (3, 0), + (1, 0), + (3, 2), ], entries: &[ + ("کتاب صوتی", AlbumType::Audiobook), + ("آلبوم\u{200c}ها", AlbumType::Album), ("آلبوم", AlbumType::Album), - ("تک آهنگ", AlbumType::Single), ("نمایش", AlbumType::Show), ("پخش فوق\u{200c}العاده", AlbumType::Ep), - ("کتاب صوتی", AlbumType::Audiobook), + ("تک\u{200c}آهنگ\u{200c}ها", AlbumType::Single), + ("تک آهنگ", AlbumType::Single), ], }, chan_prefix: "توسط", @@ -2603,16 +2660,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 8602556344903797927, + key: 12913932095322966823, disps: &[ + (6, 2), (1, 0), ], entries: &[ - ("äänikirja", AlbumType::Audiobook), - ("single", AlbumType::Single), - ("albumi", AlbumType::Album), ("näytä", AlbumType::Show), + ("äänikirja", AlbumType::Audiobook), + ("singlet", AlbumType::Single), ("ep", AlbumType::Ep), + ("single", AlbumType::Single), + ("albumit", AlbumType::Album), + ("albumi", AlbumType::Album), ], }, chan_prefix: "tekijä:", @@ -2717,16 +2777,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 12913932095322966823, + key: 8694567506910003252, disps: &[ - (3, 0), + (1, 0), + (6, 2), ], entries: &[ + ("ep", AlbumType::Ep), ("audiobook", AlbumType::Audiobook), + ("mga single", AlbumType::Single), ("single", AlbumType::Single), + ("mga album", AlbumType::Album), ("palabas", AlbumType::Show), ("album", AlbumType::Album), - ("ep", AlbumType::Ep), ], }, chan_prefix: "ni/ng", @@ -2842,19 +2905,22 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (0, 0), - (5, 0), + (0, 2), + (6, 0), ], entries: &[ - ("microalbum", AlbumType::Ep), ("album", AlbumType::Album), - ("livre audio", AlbumType::Audiobook), - ("émission", AlbumType::Show), ("simple", AlbumType::Single), ("ep", AlbumType::Ep), + ("livre audio", AlbumType::Audiobook), ("single", AlbumType::Single), + ("microalbum", AlbumType::Ep), + ("simples", AlbumType::Single), + ("albums", AlbumType::Album), + ("singles", AlbumType::Single), + ("émission", AlbumType::Show), ], }, chan_prefix: "de", @@ -2966,15 +3032,18 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (1, 0), + (6, 0), + (3, 4), ], entries: &[ - ("álbum", AlbumType::Album), + ("singles", AlbumType::Single), + ("álbums", AlbumType::Album), ("single", AlbumType::Single), - ("ep", AlbumType::Ep), ("programa", AlbumType::Show), + ("álbum", AlbumType::Album), + ("ep", AlbumType::Ep), ("audiolibro", AlbumType::Audiobook), ], }, @@ -3185,16 +3254,18 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 12913932095322966823, + key: 8694567506910003252, disps: &[ - (3, 0), + (0, 0), + (1, 1), ], entries: &[ - ("ऑडियो ब\u{941}क", AlbumType::Audiobook), - ("शो", AlbumType::Show), + ("एल\u{94d}बम", AlbumType::Album), ("सि\u{902}गल", AlbumType::Single), + ("ऑडियो ब\u{941}क", AlbumType::Audiobook), ("ईपी", AlbumType::Ep), ("एल\u{94d}\u{200d}बम", AlbumType::Album), + ("शो", AlbumType::Show), ], }, chan_prefix: "", @@ -3321,16 +3392,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 10121458955350035957, + key: 7485420634051515786, disps: &[ (1, 0), + (0, 4), ], entries: &[ ("ep", AlbumType::Ep), + ("albumi", AlbumType::Album), + ("singl", AlbumType::Single), ("serija", AlbumType::Show), + ("singlovi", AlbumType::Single), ("audioknjiga", AlbumType::Audiobook), ("album", AlbumType::Album), - ("singl", AlbumType::Single), ], }, chan_prefix: "omogućio kanal", @@ -3447,16 +3521,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 2980949210194914378, + key: 12913932095322966823, disps: &[ - (2, 0), + (0, 0), + (2, 1), ], entries: &[ - ("album", AlbumType::Album), - ("kislemez", AlbumType::Single), - ("ep", AlbumType::Ep), - ("hangoskönyv", AlbumType::Audiobook), ("műsor", AlbumType::Show), + ("album", AlbumType::Album), + ("hangoskönyv", AlbumType::Audiobook), + ("kislemezek", AlbumType::Single), + ("albumok", AlbumType::Album), + ("ep", AlbumType::Ep), + ("kislemez", AlbumType::Single), ], }, chan_prefix: "", @@ -3566,16 +3643,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 10121458955350035957, + key: 15467950696543387533, disps: &[ - (1, 0), + (3, 1), + (0, 0), ], entries: &[ ("ep", AlbumType::Ep), - ("աուդիոդրամա", AlbumType::Show), - ("աուդիոգիրք", AlbumType::Audiobook), ("սինգլ", AlbumType::Single), + ("աուդիոգիրք", AlbumType::Audiobook), ("ալբոմ", AlbumType::Album), + ("սինգլներ", AlbumType::Single), + ("աուդիոդրամա", AlbumType::Show), + ("ալբոմներ", AlbumType::Album), ], }, chan_prefix: "հեղինակ՝", @@ -3815,16 +3895,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 12213676231523076107, + key: 15467950696543387533, disps: &[ - (3, 0), + (4, 0), + (4, 0), ], entries: &[ - ("hljóðbók", AlbumType::Audiobook), - ("þáttur", AlbumType::Show), - ("smáskífa", AlbumType::Single), - ("plata", AlbumType::Album), + ("plötur", AlbumType::Album), ("ep", AlbumType::Ep), + ("smáskífa", AlbumType::Single), + ("þáttur", AlbumType::Show), + ("smáskífur", AlbumType::Single), + ("plata", AlbumType::Album), + ("hljóðbók", AlbumType::Audiobook), ], }, chan_prefix: "eftir", @@ -3945,16 +4028,18 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 14108922650502679131, + key: 15467950696543387533, disps: &[ - (1, 0), + (0, 0), + (0, 5), ], entries: &[ - ("ep", AlbumType::Ep), - ("audiolibro", AlbumType::Audiobook), - ("album", AlbumType::Album), ("singolo", AlbumType::Single), ("programma", AlbumType::Show), + ("album", AlbumType::Album), + ("audiolibro", AlbumType::Audiobook), + ("ep", AlbumType::Ep), + ("singoli", AlbumType::Single), ], }, chan_prefix: "di", @@ -4080,16 +4165,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 7485420634051515786, + key: 12913932095322966823, disps: &[ - (1, 0), + (0, 2), + (3, 0), ], entries: &[ - ("אלבום", AlbumType::Album), - ("תסכית", AlbumType::Show), - ("מיני-אלבום", AlbumType::Ep), ("ספר אודיו", AlbumType::Audiobook), ("סינגל", AlbumType::Single), + ("אלבום", AlbumType::Album), + ("סינגלים", AlbumType::Single), + ("אלבומים", AlbumType::Album), + ("מיני-אלבום", AlbumType::Ep), + ("תסכית", AlbumType::Show), ], }, chan_prefix: "מאת", @@ -4279,16 +4367,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 10121458955350035957, + key: 12913932095322966823, disps: &[ - (3, 0), + (6, 0), + (6, 2), ], entries: &[ - ("მინი-ალბომი", AlbumType::Ep), - ("აუდიოწიგნი", AlbumType::Audiobook), - ("ალბომი", AlbumType::Album), - ("ჩვენება", AlbumType::Show), ("სინგლი", AlbumType::Single), + ("ალბომი", AlbumType::Album), + ("აუდიოწიგნი", AlbumType::Audiobook), + ("ალბომები", AlbumType::Album), + ("სინგლები", AlbumType::Single), + ("ჩვენება", AlbumType::Show), + ("მინი-ალბომი", AlbumType::Ep), ], }, chan_prefix: "", @@ -4399,16 +4490,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 351906021642186605, + key: 15467950696543387533, disps: &[ - (4, 0), + (3, 6), + (3, 0), ], entries: &[ - ("ep", AlbumType::Ep), - ("аудиокітап", AlbumType::Audiobook), - ("шоу", AlbumType::Show), ("сингл", AlbumType::Single), + ("шоу", AlbumType::Show), + ("аудиокітап", AlbumType::Audiobook), + ("альбомдар", AlbumType::Album), ("альбом", AlbumType::Album), + ("ep", AlbumType::Ep), + ("синглдер", AlbumType::Single), ], }, chan_prefix: "қосқан", @@ -4622,15 +4716,18 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 9826310008611304355, + key: 15467950696543387533, disps: &[ - (2, 0), + (3, 3), + (1, 0), ], entries: &[ - ("ಆಡ\u{cbf}ಯ\u{ccb}ಬುಕ\u{ccd}", AlbumType::Audiobook), + ("ಆಲ\u{ccd}ಬಮ\u{ccd}\u{200c}ಗಳು", AlbumType::Album), ("ಶ\u{ccb}", AlbumType::Show), - ("ಒಂದ\u{cc7}", AlbumType::Single), ("ep", AlbumType::Ep), + ("ಸ\u{cbf}ಂಗಲ\u{ccd}ಸ\u{ccd}", AlbumType::Single), + ("ಒಂದ\u{cc7}", AlbumType::Single), + ("ಆಡ\u{cbf}ಯ\u{ccb}ಬುಕ\u{ccd}", AlbumType::Audiobook), ("ಆಲ\u{ccd}ಬಮ\u{ccd}", AlbumType::Album), ], }, @@ -4820,15 +4917,18 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (2, 0), + (0, 0), + (0, 4), ], entries: &[ + ("альбомдор", AlbumType::Album), ("альбом", AlbumType::Album), - ("шоу", AlbumType::Show), - ("аудиокитеп", AlbumType::Audiobook), ("сингл", AlbumType::Single), + ("аудиокитеп", AlbumType::Audiobook), + ("шоу", AlbumType::Show), + ("синглдар", AlbumType::Single), ("чакан альбом", AlbumType::Ep), ], }, @@ -4943,16 +5043,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 10121458955350035957, + key: 15467950696543387533, disps: &[ (2, 0), + (0, 3), ], entries: &[ - ("ep", AlbumType::Ep), ("ຊ\u{eb4}ງເກ\u{eb4}ນ", AlbumType::Single), - ("ອະລະບ\u{ecd}\u{ec9}າ", AlbumType::Album), + ("ຜ\u{ebb}ນງານເພງ", AlbumType::Single), ("ປ\u{eb6}\u{ec9}ມສຽງ", AlbumType::Audiobook), + ("ອະລະບ\u{ec9}ຳ", AlbumType::Album), + ("ep", AlbumType::Ep), ("ສະແດງ", AlbumType::Show), + ("ອະລະບ\u{ecd}\u{ec9}າ", AlbumType::Album), ], }, chan_prefix: "ໂດຍ", @@ -5074,16 +5177,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 7485420634051515786, + key: 14108922650502679131, disps: &[ - (3, 0), + (0, 6), + (0, 0), ], entries: &[ - ("mini albumas", AlbumType::Ep), + ("albumai", AlbumType::Album), ("serialas", AlbumType::Show), - ("singlas", AlbumType::Single), ("albumas", AlbumType::Album), ("garsinė knyga", AlbumType::Audiobook), + ("singlai", AlbumType::Single), + ("mini albumas", AlbumType::Ep), + ("singlas", AlbumType::Single), ], }, chan_prefix: "pridėjo", @@ -5205,16 +5311,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 8694567506910003252, + key: 12913932095322966823, disps: &[ (3, 0), + (3, 0), ], entries: &[ + ("singli", AlbumType::Single), ("singls", AlbumType::Single), - ("audiogrāmata", AlbumType::Audiobook), ("albums", AlbumType::Album), - ("ep ieraksts", AlbumType::Ep), + ("albumi", AlbumType::Album), + ("audiogrāmata", AlbumType::Audiobook), ("pārraide", AlbumType::Show), + ("ep ieraksts", AlbumType::Ep), ], }, chan_prefix: "autors:", @@ -5316,16 +5425,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 7485420634051515786, + key: 12913932095322966823, disps: &[ + (0, 0), (1, 0), ], entries: &[ ("аудиокнига", AlbumType::Audiobook), + ("серија", AlbumType::Show), + ("сингл", AlbumType::Single), ("ep", AlbumType::Ep), ("албум", AlbumType::Album), - ("сингл", AlbumType::Single), - ("серија", AlbumType::Show), + ("синглови", AlbumType::Single), + ("албуми", AlbumType::Album), ], }, chan_prefix: "од", @@ -5427,16 +5539,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 12913932095322966823, + key: 8694567506910003252, disps: &[ - (1, 0), + (1, 2), + (3, 0), ], entries: &[ - ("സിംഗിൾ", AlbumType::Single), - ("ഓഡിയോ ബ\u{d41}ക\u{d4d}ക\u{d4d}", AlbumType::Audiobook), - ("ep", AlbumType::Ep), + ("ആല\u{d4d}\u{200d}ബങ\u{d4d}ങള\u{d4d}\u{200d}", AlbumType::Album), ("ഷോ", AlbumType::Show), ("ആല\u{d4d}\u{200d}\u{200c}ബം", AlbumType::Album), + ("ep", AlbumType::Ep), + ("സിംഗിൾ", AlbumType::Single), + ("സിംഗിൾസ\u{d4d}", AlbumType::Single), + ("ഓഡിയോ ബ\u{d41}ക\u{d4d}ക\u{d4d}", AlbumType::Audiobook), ], }, chan_prefix: "", @@ -5529,16 +5644,18 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 8694567506910003252, + key: 12913932095322966823, disps: &[ - (3, 0), + (1, 0), + (2, 4), ], entries: &[ + ("синглүүд", AlbumType::Single), + ("аудио ном", AlbumType::Audiobook), ("сингл", AlbumType::Single), ("ep", AlbumType::Ep), - ("жүжиг", AlbumType::Show), - ("аудио ном", AlbumType::Audiobook), ("цомог", AlbumType::Album), + ("жүжиг", AlbumType::Show), ], }, chan_prefix: "сувгийн нэр:", @@ -5883,16 +6000,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 10121458955350035957, + key: 15467950696543387533, disps: &[ - (1, 0), + (1, 2), + (4, 0), ], entries: &[ + ("အယ\u{103a}လ\u{103a}ဘမ\u{103a}", AlbumType::Album), ("ep", AlbumType::Ep), + ("အော\u{103a}ဒ\u{102e}ယ\u{102d}\u{102f}စာအ\u{102f}ပ\u{103a}", AlbumType::Audiobook), + ("တစ\u{103a}ပ\u{102f}ဒ\u{103a}ချင\u{103a}းများ", AlbumType::Single), + ("အယ\u{103a}လ\u{103a}ဘမ\u{103a}များ", AlbumType::Album), ("တစ\u{103a}က\u{102d}\u{102f}ယ\u{103a}တော\u{103a}", AlbumType::Single), ("ရ\u{103e}\u{102d}\u{102f}း", AlbumType::Show), - ("အယ\u{103a}လ\u{103a}ဘမ\u{103a}", AlbumType::Album), - ("အော\u{103a}ဒ\u{102e}ယ\u{102d}\u{102f}စာအ\u{102f}ပ\u{103a}", AlbumType::Audiobook), ], }, chan_prefix: "", @@ -5983,16 +6103,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 6581282999337146909, + key: 12913932095322966823, disps: &[ - (2, 0), + (4, 3), + (1, 0), ], entries: &[ ("एकल एल\u{94d}बम", AlbumType::Single), - ("ep", AlbumType::Ep), - ("एल\u{94d}बम", AlbumType::Album), ("टिभी सो", AlbumType::Show), + ("एल\u{94d}बमहर\u{942}", AlbumType::Album), + ("ep", AlbumType::Ep), + ("एकल एल\u{94d}बमहर\u{942}", AlbumType::Single), ("अडियोब\u{941}क", AlbumType::Audiobook), + ("एल\u{94d}बम", AlbumType::Album), ], }, chan_prefix: "", @@ -6102,16 +6225,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 10121458955350035957, + key: 12913932095322966823, disps: &[ - (4, 0), + (0, 0), + (1, 0), ], entries: &[ - ("album", AlbumType::Album), - ("single", AlbumType::Single), - ("audioboek", AlbumType::Audiobook), ("aflevering", AlbumType::Show), + ("album", AlbumType::Album), + ("audioboek", AlbumType::Audiobook), ("ep", AlbumType::Ep), + ("single", AlbumType::Single), + ("albums", AlbumType::Album), + ("singles", AlbumType::Single), ], }, chan_prefix: "door", @@ -6228,16 +6354,18 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 12213676231523076107, + key: 12913932095322966823, disps: &[ - (3, 0), + (4, 2), + (1, 0), ], entries: &[ ("singel", AlbumType::Single), + ("ep", AlbumType::Ep), + ("lydbok", AlbumType::Audiobook), + ("singler", AlbumType::Single), ("album", AlbumType::Album), ("hørespill", AlbumType::Show), - ("lydbok", AlbumType::Audiobook), - ("ep", AlbumType::Ep), ], }, chan_prefix: "av", @@ -6341,14 +6469,16 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 2126027241312876569, + key: 10121458955350035957, disps: &[ - (0, 0), + (0, 3), + (3, 0), ], entries: &[ + ("ଅଡ\u{b3f}ଓବ\u{b41}କ\u{b4d}", AlbumType::Audiobook), ("ଶୋ", AlbumType::Show), ("ସ\u{b3f}ଙ\u{b4d}ଗଲ\u{b4d}", AlbumType::Single), - ("ଅଡ\u{b3f}ଓବ\u{b41}କ\u{b4d}", AlbumType::Audiobook), + ("ଆଲ\u{b4d}\u{200d}ବମ\u{b4d}", AlbumType::Album), ("ଆଲବମ\u{b4d}", AlbumType::Album), ("ep", AlbumType::Ep), ], @@ -6454,16 +6584,18 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ (0, 0), + (4, 2), ], entries: &[ - ("ਆਡੀਓ-ਕਿਤਾਬ", AlbumType::Audiobook), - ("ਸਿ\u{a70}ਗਲ", AlbumType::Single), - ("ਐਲਬਮ", AlbumType::Album), - ("ep", AlbumType::Ep), ("ਸ\u{a3c}\u{a4b}ਅ", AlbumType::Show), + ("ਐਲਬਮਾ\u{a02}", AlbumType::Album), + ("ਸਿ\u{a70}ਗਲ", AlbumType::Single), + ("ਆਡੀਓ-ਕਿਤਾਬ", AlbumType::Audiobook), + ("ep", AlbumType::Ep), + ("ਐਲਬਮ", AlbumType::Album), ], }, chan_prefix: "", @@ -6596,16 +6728,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 351906021642186605, + key: 12913932095322966823, disps: &[ - (1, 0), + (0, 0), + (3, 0), ], entries: &[ + ("albumy", AlbumType::Album), ("album", AlbumType::Album), - ("słuchowisko", AlbumType::Show), - ("singiel", AlbumType::Single), ("ep", AlbumType::Ep), + ("singiel", AlbumType::Single), ("audiobook", AlbumType::Audiobook), + ("single", AlbumType::Single), + ("słuchowisko", AlbumType::Show), ], }, chan_prefix: "autor:", @@ -6724,14 +6859,17 @@ pub(crate) fn entry(lang: Language) -> Entry { album_types: ::phf::Map { key: 15467950696543387533, disps: &[ - (2, 0), + (0, 0), + (3, 3), ], entries: &[ - ("álbum", AlbumType::Album), - ("ep", AlbumType::Ep), + ("audiolivro", AlbumType::Audiobook), ("single", AlbumType::Single), ("programa", AlbumType::Show), - ("audiolivro", AlbumType::Audiobook), + ("álbuns", AlbumType::Album), + ("ep", AlbumType::Ep), + ("álbum", AlbumType::Album), + ("singles", AlbumType::Single), ], }, chan_prefix: "por", @@ -6833,14 +6971,17 @@ pub(crate) fn entry(lang: Language) -> Entry { album_types: ::phf::Map { key: 15467950696543387533, disps: &[ - (2, 0), + (0, 0), + (3, 3), ], entries: &[ - ("álbum", AlbumType::Album), - ("ep", AlbumType::Ep), + ("audiolivro", AlbumType::Audiobook), ("single", AlbumType::Single), ("programa", AlbumType::Show), - ("audiolivro", AlbumType::Audiobook), + ("álbuns", AlbumType::Album), + ("ep", AlbumType::Ep), + ("álbum", AlbumType::Album), + ("singles", AlbumType::Single), ], }, chan_prefix: "de", @@ -6956,16 +7097,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 7827257779606437632, + key: 15467950696543387533, disps: &[ - (0, 0), + (0, 2), + (5, 0), ], entries: &[ - ("emisiune", AlbumType::Show), - ("ep", AlbumType::Ep), ("carte audio", AlbumType::Audiobook), + ("single-uri", AlbumType::Single), + ("emisiune", AlbumType::Show), ("single", AlbumType::Single), ("album", AlbumType::Album), + ("albume", AlbumType::Album), + ("ep", AlbumType::Ep), ], }, chan_prefix: "de", @@ -7096,16 +7240,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 345707026197253659, + key: 10121458955350035957, disps: &[ - (0, 0), + (3, 0), + (3, 3), ], entries: &[ - ("сингл", AlbumType::Single), - ("ep", AlbumType::Ep), - ("аудиокнига", AlbumType::Audiobook), ("альбом", AlbumType::Album), + ("сингл", AlbumType::Single), + ("альбомы", AlbumType::Album), + ("ep", AlbumType::Ep), ("аудиошоу", AlbumType::Show), + ("аудиокнига", AlbumType::Audiobook), + ("синглы", AlbumType::Single), ], }, chan_prefix: "", @@ -7204,16 +7351,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 2126027241312876569, + key: 12913932095322966823, disps: &[ + (1, 2), (0, 0), ], entries: &[ - ("සංදර\u{dca}ශනය", AlbumType::Show), + ("ඇල\u{dca}බම", AlbumType::Album), ("ශ\u{dca}\u{200d}රව\u{dca}\u{200d}යපොත", AlbumType::Audiobook), - ("තන\u{dd2}", AlbumType::Single), - ("ද\u{dd3}ව\u{dcf}", AlbumType::Ep), ("ඇල\u{dca}බමය", AlbumType::Album), + ("තන\u{dd2}", AlbumType::Single), + ("ඒකල", AlbumType::Single), + ("සංදර\u{dca}ශනය", AlbumType::Show), + ("ද\u{dd3}ව\u{dcf}", AlbumType::Ep), ], }, chan_prefix: "", @@ -7331,16 +7481,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 4066803471364472071, + key: 12913932095322966823, disps: &[ - (3, 0), + (0, 1), + (1, 0), ], entries: &[ - ("relácia", AlbumType::Show), - ("album", AlbumType::Album), ("singel", AlbumType::Single), + ("albumy", AlbumType::Album), + ("album", AlbumType::Album), ("ep", AlbumType::Ep), + ("single", AlbumType::Single), ("audiokniha", AlbumType::Audiobook), + ("relácia", AlbumType::Show), ], }, chan_prefix: "Autori:", @@ -7477,16 +7630,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 10121458955350035957, + key: 15467950696543387533, disps: &[ - (4, 0), + (6, 0), + (3, 6), ], entries: &[ + ("singli", AlbumType::Single), ("album", AlbumType::Album), - ("singel", AlbumType::Single), + ("albumi", AlbumType::Album), ("oddaja", AlbumType::Show), ("zvočna knjiga", AlbumType::Audiobook), ("ep", AlbumType::Ep), + ("singel", AlbumType::Single), ], }, chan_prefix: "kanal", @@ -7594,16 +7750,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 2980949210194914378, + key: 10121458955350035957, disps: &[ - (2, 0), + (0, 0), + (0, 2), ], entries: &[ - ("album", AlbumType::Album), - ("shfaq", AlbumType::Show), + ("individuale", AlbumType::Single), ("ep", AlbumType::Ep), - ("libër me audio", AlbumType::Audiobook), + ("albume", AlbumType::Album), + ("shfaq", AlbumType::Show), ("single", AlbumType::Single), + ("album", AlbumType::Album), + ("libër me audio", AlbumType::Audiobook), ], }, chan_prefix: "nga", @@ -7710,16 +7869,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 106375038446233661, + key: 10121458955350035957, disps: &[ - (2, 0), + (3, 0), + (1, 3), ], entries: &[ ("аудио-књига", AlbumType::Audiobook), - ("ep", AlbumType::Ep), - ("сингл", AlbumType::Single), - ("албум", AlbumType::Album), ("серија", AlbumType::Show), + ("албуми", AlbumType::Album), + ("ep", AlbumType::Ep), + ("албум", AlbumType::Album), + ("синглови", AlbumType::Single), + ("сингл", AlbumType::Single), ], }, chan_prefix: "са канала", @@ -7826,16 +7988,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 8694567506910003252, + key: 10121458955350035957, disps: &[ - (4, 0), + (0, 0), + (6, 2), ], entries: &[ - ("audio-knjiga", AlbumType::Audiobook), - ("singl", AlbumType::Single), + ("singlovi", AlbumType::Single), ("ep", AlbumType::Ep), - ("album", AlbumType::Album), + ("audio-knjiga", AlbumType::Audiobook), ("serija", AlbumType::Show), + ("albumi", AlbumType::Album), + ("album", AlbumType::Album), + ("singl", AlbumType::Single), ], }, chan_prefix: "sa kanala", @@ -7946,16 +8111,18 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ (0, 0), + (0, 4), ], entries: &[ - ("ep", AlbumType::Ep), - ("ljuddrama", AlbumType::Show), - ("ljudbok", AlbumType::Audiobook), ("album", AlbumType::Album), ("singel", AlbumType::Single), + ("ljuddrama", AlbumType::Show), + ("ep", AlbumType::Ep), + ("ljudbok", AlbumType::Audiobook), + ("singlar", AlbumType::Single), ], }, chan_prefix: "från", @@ -8186,16 +8353,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 106375038446233661, + key: 12913932095322966823, disps: &[ (0, 0), + (2, 0), ], entries: &[ - ("சிங\u{bcd}கிள\u{bcd}", AlbumType::Single), - ("ஆல\u{bcd}பம\u{bcd}", AlbumType::Album), - ("ep", AlbumType::Ep), - ("ஆடியோ ஷோ", AlbumType::Show), + ("ஆல\u{bcd}பங\u{bcd}கள\u{bcd}", AlbumType::Album), ("ஆடியோ புத\u{bcd}தகம\u{bcd}", AlbumType::Audiobook), + ("ஆல\u{bcd}பம\u{bcd}", AlbumType::Album), + ("ஆடியோ ஷோ", AlbumType::Show), + ("ep", AlbumType::Ep), + ("சிங\u{bcd}கிள\u{bcd}ஸ\u{bcd}", AlbumType::Single), + ("சிங\u{bcd}கிள\u{bcd}", AlbumType::Single), ], }, chan_prefix: "வழங\u{bcd}கியவர\u{bcd}:", @@ -8309,16 +8479,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 345707026197253659, + key: 10121458955350035957, disps: &[ - (3, 0), + (0, 3), + (2, 0), ], entries: &[ - ("ఆడ\u{c3f}య\u{c4b}బుక\u{c4d}", AlbumType::Audiobook), + ("ఆల\u{c4d}బమ\u{c4d}\u{200c}లు", AlbumType::Album), + ("స\u{c3f}ంగ\u{c3f}ల\u{c4d}స\u{c4d}", AlbumType::Single), + ("చూప\u{c3f}ంచు", AlbumType::Show), ("ఆల\u{c4d}బమ\u{c4d}", AlbumType::Album), ("ep", AlbumType::Ep), - ("చూప\u{c3f}ంచు", AlbumType::Show), ("స\u{c3f}ంగ\u{c3f}ల\u{c4d}", AlbumType::Single), + ("ఆడ\u{c3f}య\u{c4b}బుక\u{c4d}", AlbumType::Audiobook), ], }, chan_prefix: "", @@ -8556,16 +8729,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 4066803471364472071, + key: 10121458955350035957, disps: &[ - (3, 0), + (0, 0), + (1, 0), ], entries: &[ + ("single'lar", AlbumType::Single), + ("ep", AlbumType::Ep), ("sesli kitap", AlbumType::Audiobook), + ("albüm", AlbumType::Album), ("single", AlbumType::Single), ("program", AlbumType::Show), - ("ep", AlbumType::Ep), - ("albüm", AlbumType::Album), + ("albümler", AlbumType::Album), ], }, chan_prefix: "", @@ -8701,16 +8877,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 14108922650502679131, + key: 15467950696543387533, disps: &[ - (1, 0), + (1, 3), + (5, 0), ], entries: &[ - ("сингл", AlbumType::Single), - ("альбом", AlbumType::Album), ("аудіокнига", AlbumType::Audiobook), - ("мініальбом", AlbumType::Ep), + ("сингл", AlbumType::Single), + ("альбоми", AlbumType::Album), ("аудіодрама", AlbumType::Show), + ("сингли", AlbumType::Single), + ("альбом", AlbumType::Album), + ("мініальбом", AlbumType::Ep), ], }, chan_prefix: "власник:", @@ -8823,16 +9002,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 106375038446233661, + key: 12913932095322966823, disps: &[ - (0, 0), + (0, 2), + (2, 0), ], entries: &[ + ("البمز", AlbumType::Album), ("آڈیو بک", AlbumType::Audiobook), - ("البم", AlbumType::Album), - ("ep", AlbumType::Ep), ("واحد", AlbumType::Single), ("شو", AlbumType::Show), + ("ep", AlbumType::Ep), + ("سنگلز", AlbumType::Single), + ("البم", AlbumType::Album), ], }, chan_prefix: "منجانب", @@ -8934,16 +9116,19 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 15467950696543387533, + key: 10121458955350035957, disps: &[ - (1, 0), + (4, 0), + (3, 5), ], entries: &[ - ("shou", AlbumType::Show), - ("ep", AlbumType::Ep), - ("albom", AlbumType::Album), - ("singl", AlbumType::Single), + ("albomlar", AlbumType::Album), ("audiokitob", AlbumType::Audiobook), + ("singl", AlbumType::Single), + ("singllar", AlbumType::Single), + ("ep", AlbumType::Ep), + ("shou", AlbumType::Show), + ("albom", AlbumType::Album), ], }, chan_prefix: "muallif:", @@ -9407,13 +9592,16 @@ pub(crate) fn entry(lang: Language) -> Entry { album_types: ::phf::Map { key: 12913932095322966823, disps: &[ - (2, 0), + (0, 0), + (5, 2), ], entries: &[ + ("bonisa", AlbumType::Show), ("i-albhamu", AlbumType::Album), ("i-audiobook", AlbumType::Audiobook), ("i-single", AlbumType::Single), - ("bonisa", AlbumType::Show), + ("ama-single", AlbumType::Single), + ("ama-albhamu", AlbumType::Album), ("i-ep", AlbumType::Ep), ], }, diff --git a/testfiles/dict/album_type_samples.json b/testfiles/dict/album_type_samples.json index 8016196..8e3adf8 100644 --- a/testfiles/dict/album_type_samples.json +++ b/testfiles/dict/album_type_samples.json @@ -4,580 +4,746 @@ "ep": "EP", "single": "Enkelsnit", "audiobook": "Oudioboek", - "show": "Drama" + "show": "Drama", + "album_row": "Albums", + "single_row": "Enkelsnitte" }, "am": { "album": "አልበም", "ep": "የተራዘመ አልበም", "single": "ነጠላ", "audiobook": "ኦዲዮ መጽሐፍ", - "show": "ትዕይንት" + "show": "ትዕይንት", + "album_row": "አልበሞች", + "single_row": "ነጠላዎች" }, "ar": { "album": "ألبوم", "ep": "ألبوم قصير", "single": "أغنية منفردة", "audiobook": "الكتب المسموعة", - "show": "عرض" + "show": "عرض", + "album_row": "ألبومات", + "single_row": "أغانٍ منفردة" }, "as": { "album": "এলবাম", "ep": "EP", "single": "একক", "audiobook": "অডিঅ’বুক", - "show": "শ্ব’" + "show": "শ্ব’", + "album_row": "এলবামসমূহ", + "single_row": "এককসমূহ" }, "az": { "album": "Albom", "ep": "EP", "single": "Tək", "audiobook": "Audio kitab", - "show": "Şou" + "show": "Şou", + "album_row": "Albomlar", + "single_row": "Sinql" }, "be": { "album": "Альбом", "ep": "Міні-альбом", "single": "Сінгл", "audiobook": "Аўдыякніга", - "show": "Шоу" + "show": "Шоу", + "album_row": "Альбомы", + "single_row": "Сінглы" }, "bg": { "album": "Албум", "ep": "Миниалбум", "single": "Сингъл", "audiobook": "Аудиокнига", - "show": "Предаване" + "show": "Предаване", + "album_row": "Албуми", + "single_row": "Сингли" }, "bn": { "album": "অ্যালবাম", "ep": "ইপি", "single": "সিঙ্গেল", "audiobook": "অডিওবুক", - "show": "শো" + "show": "শো", + "album_row": "অ্যালবাম", + "single_row": "সিঙ্গেলস" }, "bs": { "album": "Album", "ep": "EP", "single": "Singl", "audiobook": "Audio knjiga", - "show": "Serija" + "show": "Serija", + "album_row": "Albumi", + "single_row": "Singlovi" }, "ca": { "album": "Àlbum", "ep": "EP", "single": "Single", "audiobook": "Audiollibre", - "show": "Programa" + "show": "Programa", + "album_row": "Àlbums", + "single_row": "Singles" }, "cs": { "album": "Album", "ep": "EP", "single": "Singl", "audiobook": "Audiokniha", - "show": "Zobrazit" + "show": "Zobrazit", + "album_row": "Alba", + "single_row": "Singly" }, "da": { "album": "Album", "ep": "EP", "single": "Single", "audiobook": "Lydbog", - "show": "Lyddrama" + "show": "Lyddrama", + "album_row": "Album", + "single_row": "Singler" }, "de": { "album": "Album", "ep": "EP", "single": "Single", "audiobook": "Hörbuch", - "show": "Hörspiel" + "show": "Hörspiel", + "album_row": "Alben", + "single_row": "Singles" }, "el": { "album": "Άλμπουμ", "ep": "EP", "single": "Single", "audiobook": "Ηχητικό βιβλίο", - "show": "Εκπομπή" + "show": "Εκπομπή", + "album_row": "Άλμπουμ", + "single_row": "Σινγκλ" }, "en": { "album": "Album", "ep": "EP", "single": "Single", "audiobook": "Audiobook", - "show": "Show" + "show": "Show", + "album_row": "Albums", + "single_row": "Singles" }, "en-GB": { "album": "Album", "ep": "EP", "single": "Single", "audiobook": "Audiobook", - "show": "Show" + "show": "Show", + "album_row": "Albums", + "single_row": "Singles" }, "en-IN": { "album": "Album", "ep": "EP", "single": "Single", "audiobook": "Audiobook", - "show": "Show" + "show": "Show", + "album_row": "Albums", + "single_row": "Singles" }, "es": { "album": "Álbum", "ep": "EP", "single": "Single", "audiobook": "Audiolibro", - "show": "Audiodrama" + "show": "Audiodrama", + "album_row": "Álbumes", + "single_row": "Sencillos" }, "es-419": { "album": "Álbum", "ep": "EP", "single": "Sencillo", "audiobook": "Audiolibro", - "show": "Programa" + "show": "Programa", + "album_row": "Álbumes", + "single_row": "Sencillos" }, "es-US": { "album": "Álbum", "ep": "EP", "single": "Sencillo", "audiobook": "Audiolibro", - "show": "Programa" + "show": "Programa", + "album_row": "Álbumes", + "single_row": "Sencillos" }, "et": { "album": "Album", "ep": "EP", "single": "Singel", "audiobook": "Audioraamat", - "show": "Sari" + "show": "Sari", + "album_row": "Albumid", + "single_row": "Singlid" }, "eu": { "album": "Albuma", "ep": "EP", "single": "Singlea", "audiobook": "Audio-liburua", - "show": "Saioa" + "show": "Saioa", + "album_row": "Albumak", + "single_row": "Singleak" }, "fa": { "album": "آلبوم", "ep": "پخش فوق‌العاده", "single": "تک آهنگ", "audiobook": "کتاب صوتی", - "show": "نمایش" + "show": "نمایش", + "album_row": "آلبوم‌ها", + "single_row": "تک‌آهنگ‌ها" }, "fi": { "album": "Albumi", "ep": "EP", "single": "Single", "audiobook": "Äänikirja", - "show": "Näytä" + "show": "Näytä", + "album_row": "Albumit", + "single_row": "Singlet" }, "fil": { "album": "Album", "ep": "EP", "single": "Single", "audiobook": "Audiobook", - "show": "Palabas" + "show": "Palabas", + "album_row": "Mga Album", + "single_row": "Mga Single" }, "fr": { "album": "Album", "ep": "EP", "single": "Single", "audiobook": "Livre audio", - "show": "Émission" + "show": "Émission", + "album_row": "Albums", + "single_row": "Singles" }, "fr-CA": { "album": "Album", "ep": "Microalbum", "single": "Simple", "audiobook": "Livre audio", - "show": "Émission" + "show": "Émission", + "album_row": "Albums", + "single_row": "Simples" }, "gl": { "album": "Álbum", "ep": "EP", "single": "Single", "audiobook": "Audiolibro", - "show": "Programa" + "show": "Programa", + "album_row": "Álbums", + "single_row": "Singles" }, "gu": { "album": "આલ્બમ", "ep": "EP", "single": "સિંગલ", "audiobook": "ઑડિયોબુક", - "show": "શો" + "show": "શો", + "album_row": "આલ્બમ", + "single_row": "સિંગલ" }, "hi": { "album": "एल्‍बम", "ep": "ईपी", "single": "सिंगल", "audiobook": "ऑडियो बुक", - "show": "शो" + "show": "शो", + "album_row": "एल्बम", + "single_row": "सिंगल" }, "hr": { "album": "Album", "ep": "EP", "single": "Singl", "audiobook": "Audioknjiga", - "show": "Serija" + "show": "Serija", + "album_row": "Albumi", + "single_row": "Singlovi" }, "hu": { "album": "Album", "ep": "EP", "single": "Kislemez", "audiobook": "Hangoskönyv", - "show": "Műsor" + "show": "Műsor", + "album_row": "Albumok", + "single_row": "Kislemezek" }, "hy": { "album": "Ալբոմ", "ep": "EP", "single": "Սինգլ", "audiobook": "Աուդիոգիրք", - "show": "Աուդիոդրամա" + "show": "Աուդիոդրամա", + "album_row": "Ալբոմներ", + "single_row": "Սինգլներ" }, "id": { "album": "Album", "ep": "EP", "single": "Single", "audiobook": "Buku audio", - "show": "Acara" + "show": "Acara", + "album_row": "Album", + "single_row": "Single" }, "is": { "album": "Plata", "ep": "EP", "single": "Smáskífa", "audiobook": "Hljóðbók", - "show": "Þáttur" + "show": "Þáttur", + "album_row": "Plötur", + "single_row": "Smáskífur" }, "it": { "album": "Album", "ep": "EP", "single": "Singolo", "audiobook": "Audiolibro", - "show": "Programma" + "show": "Programma", + "album_row": "Album", + "single_row": "Singoli" }, "iw": { "album": "אלבום", "ep": "מיני-אלבום", "single": "סינגל", "audiobook": "ספר אודיו", - "show": "תסכית" + "show": "תסכית", + "album_row": "אלבומים", + "single_row": "סינגלים" }, "ja": { "album": "アルバム", "ep": "EP", "single": "シングル", "audiobook": "オーディオブック", - "show": "表示" + "show": "表示", + "album_row": "アルバム", + "single_row": "シングル" }, "ka": { "album": "ალბომი", "ep": "მინი-ალბომი", "single": "სინგლი", "audiobook": "აუდიოწიგნი", - "show": "ჩვენება" + "show": "ჩვენება", + "album_row": "ალბომები", + "single_row": "სინგლები" }, "kk": { "album": "Альбом", "ep": "EP", "single": "Сингл", "audiobook": "Аудиокітап", - "show": "Шоу" + "show": "Шоу", + "album_row": "Альбомдар", + "single_row": "Синглдер" }, "km": { "album": "អាល់ប៊ុម", "ep": "EP", "single": "ចម្រៀងទោល", "audiobook": "សៀវភៅ​ជា​សំឡេង", - "show": "កម្មវិធីទូរទស្សន៍" + "show": "កម្មវិធីទូរទស្សន៍", + "album_row": "អាល់ប៊ុម", + "single_row": "ចម្រៀងទោល" }, "kn": { "album": "ಆಲ್ಬಮ್", "ep": "EP", "single": "ಒಂದೇ", "audiobook": "ಆಡಿಯೋಬುಕ್", - "show": "ಶೋ" + "show": "ಶೋ", + "album_row": "ಆಲ್ಬಮ್‌ಗಳು", + "single_row": "ಸಿಂಗಲ್ಸ್" }, "ko": { "album": "앨범", "ep": "EP", "single": "싱글", "audiobook": "오디오북", - "show": "표시" + "show": "표시", + "album_row": "앨범", + "single_row": "싱글" }, "ky": { "album": "Альбом", "ep": "Чакан альбом", "single": "Сингл", "audiobook": "Аудиокитеп", - "show": "Шоу" + "show": "Шоу", + "album_row": "Альбомдор", + "single_row": "Синглдар" }, "lo": { "album": "ອະລະບໍ້າ", "ep": "EP", "single": "ຊິງເກິນ", "audiobook": "ປຶ້ມສຽງ", - "show": "ສະແດງ" + "show": "ສະແດງ", + "album_row": "ອະລະບ້ຳ", + "single_row": "ຜົນງານເພງ" }, "lt": { "album": "Albumas", "ep": "Mini albumas", "single": "Singlas", "audiobook": "Garsinė knyga", - "show": "Serialas" + "show": "Serialas", + "album_row": "Albumai", + "single_row": "Singlai" }, "lv": { "album": "Albums", "ep": "EP ieraksts", "single": "Singls", "audiobook": "Audiogrāmata", - "show": "Pārraide" + "show": "Pārraide", + "album_row": "Albumi", + "single_row": "Singli" }, "mk": { "album": "Албум", "ep": "EP", "single": "Сингл", "audiobook": "Аудиокнига", - "show": "Серија" + "show": "Серија", + "album_row": "Албуми", + "single_row": "Синглови" }, "ml": { "album": "ആല്‍‌ബം", "ep": "EP", "single": "സിംഗിൾ", "audiobook": "ഓഡിയോ ബുക്ക്", - "show": "ഷോ" + "show": "ഷോ", + "album_row": "ആല്‍ബങ്ങള്‍", + "single_row": "സിംഗിൾസ്" }, "mn": { "album": "Цомог", "ep": "EP", "single": "Сингл", "audiobook": "Аудио ном", - "show": "Жүжиг" + "show": "Жүжиг", + "album_row": "Цомог", + "single_row": "Синглүүд" }, "mr": { "album": "अल्बम", "ep": "भाग", "single": "सिंगल", "audiobook": "ऑडिओबुक", - "show": "शो" + "show": "शो", + "album_row": "अल्बम", + "single_row": "सिंगल" }, "ms": { "album": "Album", "ep": "EP", "single": "Rekod single", "audiobook": "Buku audio", - "show": "Rancangan" + "show": "Rancangan", + "album_row": "Album", + "single_row": "Rekod single" }, "my": { "album": "အယ်လ်ဘမ်", "ep": "EP", "single": "တစ်ကိုယ်တော်", "audiobook": "အော်ဒီယိုစာအုပ်", - "show": "ရှိုး" + "show": "ရှိုး", + "album_row": "အယ်လ်ဘမ်များ", + "single_row": "တစ်ပုဒ်ချင်းများ" }, "ne": { "album": "एल्बम", "ep": "EP", "single": "एकल एल्बम", "audiobook": "अडियोबुक", - "show": "टिभी सो" + "show": "टिभी सो", + "album_row": "एल्बमहरू", + "single_row": "एकल एल्बमहरू" }, "nl": { "album": "Album", "ep": "Ep", "single": "Single", "audiobook": "Audioboek", - "show": "Aflevering" + "show": "Aflevering", + "album_row": "Albums", + "single_row": "Singles" }, "no": { "album": "Album", "ep": "EP", "single": "Singel", "audiobook": "Lydbok", - "show": "Hørespill" + "show": "Hørespill", + "album_row": "Album", + "single_row": "Singler" }, "or": { "album": "ଆଲବମ୍", "ep": "EP", "single": "ସିଙ୍ଗଲ୍", "audiobook": "ଅଡିଓବୁକ୍", - "show": "ଶୋ" + "show": "ଶୋ", + "album_row": "ଆଲ୍‍ବମ୍", + "single_row": "ସିଙ୍ଗଲ୍" }, "pa": { "album": "ਐਲਬਮ", "ep": "EP", "single": "ਸਿੰਗਲ", "audiobook": "ਆਡੀਓ-ਕਿਤਾਬ", - "show": "ਸ਼ੋਅ" + "show": "ਸ਼ੋਅ", + "album_row": "ਐਲਬਮਾਂ", + "single_row": "ਸਿੰਗਲ" }, "pl": { "album": "Album", "ep": "EP", "single": "Singiel", "audiobook": "Audiobook", - "show": "Słuchowisko" + "show": "Słuchowisko", + "album_row": "Albumy", + "single_row": "Single" }, "pt": { "album": "Álbum", "ep": "EP", "single": "Single", "audiobook": "Audiolivro", - "show": "Programa" + "show": "Programa", + "album_row": "Álbuns", + "single_row": "Singles" }, "pt-PT": { "album": "Álbum", "ep": "EP", "single": "Single", "audiobook": "Audiolivro", - "show": "Programa" + "show": "Programa", + "album_row": "Álbuns", + "single_row": "Singles" }, "ro": { "album": "Album", "ep": "EP", "single": "Single", "audiobook": "Carte audio", - "show": "Emisiune" + "show": "Emisiune", + "album_row": "Albume", + "single_row": "Single-uri" }, "ru": { "album": "Альбом", "ep": "EP", "single": "Сингл", "audiobook": "Аудиокнига", - "show": "Аудиошоу" + "show": "Аудиошоу", + "album_row": "Альбомы", + "single_row": "Синглы" }, "si": { "album": "ඇල්බමය", "ep": "දීවා", "single": "තනි", "audiobook": "ශ්‍රව්‍යපොත", - "show": "සංදර්ශනය" + "show": "සංදර්ශනය", + "album_row": "ඇල්බම", + "single_row": "ඒකල" }, "sk": { "album": "Album", "ep": "EP", "single": "Singel", "audiobook": "Audiokniha", - "show": "Relácia" + "show": "Relácia", + "album_row": "Albumy", + "single_row": "Single" }, "sl": { "album": "Album", "ep": "EP", "single": "Singel", "audiobook": "Zvočna knjiga", - "show": "Oddaja" + "show": "Oddaja", + "album_row": "Albumi", + "single_row": "Singli" }, "sq": { "album": "Album", "ep": "EP", "single": "Single", "audiobook": "Libër me audio", - "show": "Shfaq" + "show": "Shfaq", + "album_row": "Albume", + "single_row": "Individuale" }, "sr": { "album": "Албум", "ep": "EP", "single": "Сингл", "audiobook": "Аудио-књига", - "show": "Серија" + "show": "Серија", + "album_row": "Албуми", + "single_row": "Синглови" }, "sr-Latn": { "album": "Album", "ep": "EP", "single": "Singl", "audiobook": "Audio-knjiga", - "show": "Serija" + "show": "Serija", + "album_row": "Albumi", + "single_row": "Singlovi" }, "sv": { "album": "Album", "ep": "EP", "single": "Singel", "audiobook": "Ljudbok", - "show": "Ljuddrama" + "show": "Ljuddrama", + "album_row": "Album", + "single_row": "Singlar" }, "sw": { "album": "Albamu", "ep": "EP", "single": "Singo", "audiobook": "Kitabu cha kusikiliza", - "show": "Kipindi" + "show": "Kipindi", + "album_row": "Albamu", + "single_row": "Singo" }, "ta": { "album": "ஆல்பம்", "ep": "EP", "single": "சிங்கிள்", "audiobook": "ஆடியோ புத்தகம்", - "show": "ஆடியோ ஷோ" + "show": "ஆடியோ ஷோ", + "album_row": "ஆல்பங்கள்", + "single_row": "சிங்கிள்ஸ்" }, "te": { "album": "ఆల్బమ్", "ep": "EP", "single": "సింగిల్", "audiobook": "ఆడియోబుక్", - "show": "చూపించు" + "show": "చూపించు", + "album_row": "ఆల్బమ్‌లు", + "single_row": "సింగిల్స్" }, "th": { "album": "อัลบั้ม", "ep": "EP", "single": "ซิงเกิล", "audiobook": "หนังสือเสียง", - "show": "รายการ" + "show": "รายการ", + "album_row": "อัลบั้ม", + "single_row": "ซิงเกิล" }, "tr": { "album": "Albüm", "ep": "EP", "single": "Single", "audiobook": "Sesli kitap", - "show": "Program" + "show": "Program", + "album_row": "Albümler", + "single_row": "Single'lar" }, "uk": { "album": "Альбом", "ep": "Мініальбом", "single": "Сингл", "audiobook": "Аудіокнига", - "show": "Аудіодрама" + "show": "Аудіодрама", + "album_row": "Альбоми", + "single_row": "Сингли" }, "ur": { "album": "البم", "ep": "EP", "single": "واحد", "audiobook": "آڈیو بک", - "show": "شو" + "show": "شو", + "album_row": "البمز", + "single_row": "سنگلز" }, "uz": { "album": "Albom", "ep": "EP", "single": "Singl", "audiobook": "Audiokitob", - "show": "Shou" + "show": "Shou", + "album_row": "Albomlar", + "single_row": "Singllar" }, "vi": { "album": "Đĩa nhạc", "ep": "Đĩa nhạc mở rộng (EP)", "single": "Đĩa đơn", "audiobook": "Sách nói", - "show": "Chương trình" + "show": "Chương trình", + "album_row": "Đĩa nhạc", + "single_row": "Đĩa đơn" }, "zh-CN": { "album": "专辑", "ep": "迷你专辑", "single": "单曲", "audiobook": "有声读物", - "show": "广播剧" + "show": "广播剧", + "album_row": "专辑", + "single_row": "单曲" }, "zh-HK": { "album": "專輯", "ep": "EP", "single": "單曲", "audiobook": "有聲書", - "show": "節目" + "show": "節目", + "album_row": "專輯", + "single_row": "單曲" }, "zh-TW": { "album": "專輯", "ep": "EP", "single": "單曲", "audiobook": "有聲書", - "show": "節目" + "show": "節目", + "album_row": "專輯", + "single_row": "單曲" }, "zu": { "album": "I-albhamu", "ep": "I-EP", "single": "I-Single", "audiobook": "I-audiobook", - "show": "Bonisa" + "show": "Bonisa", + "album_row": "Ama-albhamu", + "single_row": "Ama-single" } } diff --git a/testfiles/dict/dictionary.json b/testfiles/dict/dictionary.json index be82dde..9a3c46c 100644 --- a/testfiles/dict/dictionary.json +++ b/testfiles/dict/dictionary.json @@ -71,10 +71,12 @@ }, "album_types": { "album": "album", + "albums": "album", "oudioboek": "audiobook", "ep": "ep", "drama": "show", - "enkelsnit": "single" + "enkelsnit": "single", + "enkelsnitte": "single" }, "chan_prefix": "deur", "chan_suffix": "" @@ -152,10 +154,12 @@ }, "album_types": { "አልበም": "album", + "አልበሞች": "album", "ኦዲዮ መጽሐፍ": "audiobook", "የተራዘመ አልበም": "ep", "ትዕይንት": "show", - "ነጠላ": "single" + "ነጠላ": "single", + "ነጠላዎች": "single" }, "chan_prefix": "በ", "chan_suffix": "" @@ -240,9 +244,11 @@ }, "album_types": { "ألبوم": "album", + "ألبومات": "album", "الكتب المسموعة": "audiobook", "ألبوم قصير": "ep", "عرض": "show", + "أغانٍ منفردة": "single", "أغنية منفردة": "single" }, "chan_prefix": "بواسطة", @@ -310,10 +316,12 @@ }, "album_types": { "এলবাম": "album", + "এলবামসমূহ": "album", "অডিঅ’বুক": "audiobook", "ep": "ep", "শ্ব’": "show", - "একক": "single" + "একক": "single", + "এককসমূহ": "single" }, "chan_prefix": "", "chan_suffix": "ৰ দ্বাৰা" @@ -381,9 +389,11 @@ }, "album_types": { "albom": "album", + "albomlar": "album", "audio kitab": "audiobook", "ep": "ep", "şou": "show", + "sinql": "single", "tək": "single" }, "chan_prefix": "by", @@ -479,10 +489,12 @@ }, "album_types": { "альбом": "album", + "альбомы": "album", "аўдыякніга": "audiobook", "міні-альбом": "ep", "шоу": "show", - "сінгл": "single" + "сінгл": "single", + "сінглы": "single" }, "chan_prefix": "ад", "chan_suffix": "" @@ -551,9 +563,11 @@ }, "album_types": { "албум": "album", + "албуми": "album", "аудиокнига": "audiobook", "миниалбум": "ep", "предаване": "show", + "сингли": "single", "сингъл": "single" }, "chan_prefix": "от", @@ -627,7 +641,8 @@ "অডিওবুক": "audiobook", "ইপি": "ep", "শো": "show", - "সিঙ্গেল": "single" + "সিঙ্গেল": "single", + "সিঙ্গেলস": "single" }, "chan_prefix": ",", "chan_suffix": "দ্বারা" @@ -715,10 +730,12 @@ }, "album_types": { "album": "album", + "albumi": "album", "audio knjiga": "audiobook", "ep": "ep", "serija": "show", - "singl": "single" + "singl": "single", + "singlovi": "single" }, "chan_prefix": "od", "chan_suffix": "" @@ -793,10 +810,12 @@ }, "album_types": { "àlbum": "album", + "àlbums": "album", "audiollibre": "audiobook", "ep": "ep", "programa": "show", - "single": "single" + "single": "single", + "singles": "single" }, "chan_prefix": "de:", "chan_suffix": "" @@ -875,11 +894,13 @@ }, "number_nd_tokens": {}, "album_types": { + "alba": "album", "album": "album", "audiokniha": "audiobook", "ep": "ep", "zobrazit": "show", - "singl": "single" + "singl": "single", + "singly": "single" }, "chan_prefix": "autor:", "chan_suffix": "" @@ -958,7 +979,8 @@ "lydbog": "audiobook", "ep": "ep", "lyddrama": "show", - "single": "single" + "single": "single", + "singler": "single" }, "chan_prefix": "af", "chan_suffix": "" @@ -1022,11 +1044,13 @@ "keine": 0 }, "album_types": { + "alben": "album", "album": "album", "hörbuch": "audiobook", "ep": "ep", "hörspiel": "show", - "single": "single" + "single": "single", + "singles": "single" }, "chan_prefix": "von", "chan_suffix": "" @@ -1111,7 +1135,8 @@ "ηχητικό βιβλίο": "audiobook", "ep": "ep", "εκπομπή": "show", - "single": "single" + "single": "single", + "σινγκλ": "single" }, "chan_prefix": "από το χρήστη", "chan_suffix": "" @@ -1204,10 +1229,12 @@ }, "album_types": { "album": "album", + "albums": "album", "audiobook": "audiobook", "ep": "ep", "show": "show", - "single": "single" + "single": "single", + "singles": "single" }, "chan_prefix": "by", "chan_suffix": "" @@ -1285,9 +1312,11 @@ "number_nd_tokens": {}, "album_types": { "álbum": "album", + "álbumes": "album", "audiolibro": "audiobook", "ep": "ep", "audiodrama": "show", + "sencillos": "single", "single": "single" }, "chan_prefix": "de", @@ -1369,10 +1398,12 @@ }, "album_types": { "álbum": "album", + "álbumes": "album", "audiolibro": "audiobook", "ep": "ep", "programa": "show", - "sencillo": "single" + "sencillo": "single", + "sencillos": "single" }, "chan_prefix": "de", "chan_suffix": "" @@ -1449,10 +1480,12 @@ }, "album_types": { "album": "album", + "albumid": "album", "audioraamat": "audiobook", "ep": "ep", "sari": "show", - "singel": "single" + "singel": "single", + "singlid": "single" }, "chan_prefix": "kanalilt", "chan_suffix": "" @@ -1521,10 +1554,12 @@ }, "album_types": { "albuma": "album", + "albumak": "album", "audio-liburua": "audiobook", "ep": "ep", "saioa": "show", - "singlea": "single" + "singlea": "single", + "singleak": "single" }, "chan_prefix": "egilea:", "chan_suffix": "" @@ -1585,10 +1620,12 @@ }, "album_types": { "آلبوم": "album", + "آلبوم‌ها": "album", "کتاب صوتی": "audiobook", "پخش فوق‌العاده": "ep", "نمایش": "show", - "تک آهنگ": "single" + "تک آهنگ": "single", + "تک‌آهنگ‌ها": "single" }, "chan_prefix": "توسط", "chan_suffix": "" @@ -1659,10 +1696,12 @@ }, "album_types": { "albumi": "album", + "albumit": "album", "äänikirja": "audiobook", "ep": "ep", "näytä": "show", - "single": "single" + "single": "single", + "singlet": "single" }, "chan_prefix": "tekijä:", "chan_suffix": "" @@ -1732,9 +1771,11 @@ }, "album_types": { "album": "album", + "mga album": "album", "audiobook": "audiobook", "ep": "ep", "palabas": "show", + "mga single": "single", "single": "single" }, "chan_prefix": "ni/ng", @@ -1816,12 +1857,15 @@ }, "album_types": { "album": "album", + "albums": "album", "livre audio": "audiobook", "ep": "ep", "microalbum": "ep", "émission": "show", "simple": "single", - "single": "single" + "simples": "single", + "single": "single", + "singles": "single" }, "chan_prefix": "de", "chan_suffix": "" @@ -1896,10 +1940,12 @@ }, "album_types": { "álbum": "album", + "álbums": "album", "audiolibro": "audiobook", "ep": "ep", "programa": "show", - "single": "single" + "single": "single", + "singles": "single" }, "chan_prefix": "de", "chan_suffix": "" @@ -2033,6 +2079,7 @@ "नहीं": 0 }, "album_types": { + "एल्बम": "album", "एल्‍बम": "album", "ऑडियो बुक": "audiobook", "ईपी": "ep", @@ -2125,10 +2172,12 @@ }, "album_types": { "album": "album", + "albumi": "album", "audioknjiga": "audiobook", "ep": "ep", "serija": "show", - "singl": "single" + "singl": "single", + "singlovi": "single" }, "chan_prefix": "omogućio kanal", "chan_suffix": "" @@ -2208,10 +2257,12 @@ }, "album_types": { "album": "album", + "albumok": "album", "hangoskönyv": "audiobook", "ep": "ep", "műsor": "show", - "kislemez": "single" + "kislemez": "single", + "kislemezek": "single" }, "chan_prefix": "", "chan_suffix": "csatornától" @@ -2285,10 +2336,12 @@ }, "album_types": { "ալբոմ": "album", + "ալբոմներ": "album", "աուդիոգիրք": "audiobook", "ep": "ep", "աուդիոդրամա": "show", - "սինգլ": "single" + "սինգլ": "single", + "սինգլներ": "single" }, "chan_prefix": "հեղինակ՝", "chan_suffix": "" @@ -2448,10 +2501,12 @@ }, "album_types": { "plata": "album", + "plötur": "album", "hljóðbók": "audiobook", "ep": "ep", "þáttur": "show", - "smáskífa": "single" + "smáskífa": "single", + "smáskífur": "single" }, "chan_prefix": "eftir", "chan_suffix": "" @@ -2537,6 +2592,7 @@ "audiolibro": "audiobook", "ep": "ep", "programma": "show", + "singoli": "single", "singolo": "single" }, "chan_prefix": "di", @@ -2624,10 +2680,12 @@ }, "album_types": { "אלבום": "album", + "אלבומים": "album", "ספר אודיו": "audiobook", "מיני-אלבום": "ep", "תסכית": "show", - "סינגל": "single" + "סינגל": "single", + "סינגלים": "single" }, "chan_prefix": "מאת", "chan_suffix": "" @@ -2743,10 +2801,12 @@ "არ": 0 }, "album_types": { + "ალბომები": "album", "ალბომი": "album", "აუდიოწიგნი": "audiobook", "მინი-ალბომი": "ep", "ჩვენება": "show", + "სინგლები": "single", "სინგლი": "single" }, "chan_prefix": "", @@ -2822,10 +2882,12 @@ }, "album_types": { "альбом": "album", + "альбомдар": "album", "аудиокітап": "audiobook", "ep": "ep", "шоу": "show", - "сингл": "single" + "сингл": "single", + "синглдер": "single" }, "chan_prefix": "қосқан", "chan_suffix": "" @@ -2963,10 +3025,12 @@ }, "album_types": { "ಆಲ್ಬಮ್": "album", + "ಆಲ್ಬಮ್‌ಗಳು": "album", "ಆಡಿಯೋಬುಕ್": "audiobook", "ep": "ep", "ಶೋ": "show", - "ಒಂದೇ": "single" + "ಒಂದೇ": "single", + "ಸಿಂಗಲ್ಸ್": "single" }, "chan_prefix": "", "chan_suffix": "ಚಾನಲ್‌ನಿಂದ" @@ -3083,10 +3147,12 @@ }, "album_types": { "альбом": "album", + "альбомдор": "album", "аудиокитеп": "audiobook", "чакан альбом": "ep", "шоу": "show", - "сингл": "single" + "сингл": "single", + "синглдар": "single" }, "chan_prefix": "", "chan_suffix": "каналы аркылуу" @@ -3164,10 +3230,12 @@ }, "album_types": { "ອະລະບໍ້າ": "album", + "ອະລະບ້ຳ": "album", "ປຶ້ມສຽງ": "audiobook", "ep": "ep", "ສະແດງ": "show", - "ຊິງເກິນ": "single" + "ຊິງເກິນ": "single", + "ຜົນງານເພງ": "single" }, "chan_prefix": "ໂດຍ", "chan_suffix": "" @@ -3250,10 +3318,12 @@ "nėra": 0 }, "album_types": { + "albumai": "album", "albumas": "album", "garsinė knyga": "audiobook", "mini albumas": "ep", "serialas": "show", + "singlai": "single", "singlas": "single" }, "chan_prefix": "pridėjo", @@ -3337,10 +3407,12 @@ "nav": 0 }, "album_types": { + "albumi": "album", "albums": "album", "audiogrāmata": "audiobook", "ep ieraksts": "ep", "pārraide": "show", + "singli": "single", "singls": "single" }, "chan_prefix": "autors:", @@ -3408,10 +3480,12 @@ }, "album_types": { "албум": "album", + "албуми": "album", "аудиокнига": "audiobook", "ep": "ep", "серија": "show", - "сингл": "single" + "сингл": "single", + "синглови": "single" }, "chan_prefix": "од", "chan_suffix": "" @@ -3478,10 +3552,12 @@ }, "album_types": { "ആല്‍‌ബം": "album", + "ആല്‍ബങ്ങള്‍": "album", "ഓഡിയോ ബുക്ക്": "audiobook", "ep": "ep", "ഷോ": "show", - "സിംഗിൾ": "single" + "സിംഗിൾ": "single", + "സിംഗിൾസ്": "single" }, "chan_prefix": "", "chan_suffix": "മുഖേന" @@ -3544,7 +3620,8 @@ "аудио ном": "audiobook", "ep": "ep", "жүжиг": "show", - "сингл": "single" + "сингл": "single", + "синглүүд": "single" }, "chan_prefix": "сувгийн нэр:", "chan_suffix": "" @@ -3769,10 +3846,12 @@ }, "album_types": { "အယ်လ်ဘမ်": "album", + "အယ်လ်ဘမ်များ": "album", "အော်ဒီယိုစာအုပ်": "audiobook", "ep": "ep", "ရှိုး": "show", - "တစ်ကိုယ်တော်": "single" + "တစ်ကိုယ်တော်": "single", + "တစ်ပုဒ်ချင်းများ": "single" }, "chan_prefix": "", "chan_suffix": "မှ" @@ -3830,10 +3909,12 @@ }, "album_types": { "एल्बम": "album", + "एल्बमहरू": "album", "अडियोबुक": "audiobook", "ep": "ep", "टिभी सो": "show", - "एकल एल्बम": "single" + "एकल एल्बम": "single", + "एकल एल्बमहरू": "single" }, "chan_prefix": "", "chan_suffix": "द्वारा" @@ -3907,10 +3988,12 @@ }, "album_types": { "album": "album", + "albums": "album", "audioboek": "audiobook", "ep": "ep", "aflevering": "show", - "single": "single" + "single": "single", + "singles": "single" }, "chan_prefix": "door", "chan_suffix": "" @@ -3993,7 +4076,8 @@ "lydbok": "audiobook", "ep": "ep", "hørespill": "show", - "singel": "single" + "singel": "single", + "singler": "single" }, "chan_prefix": "av", "chan_suffix": "" @@ -4062,6 +4146,7 @@ }, "album_types": { "ଆଲବମ୍": "album", + "ଆଲ୍‍ବମ୍": "album", "ଅଡିଓବୁକ୍": "audiobook", "ep": "ep", "ଶୋ": "show", @@ -4134,6 +4219,7 @@ }, "album_types": { "ਐਲਬਮ": "album", + "ਐਲਬਮਾਂ": "album", "ਆਡੀਓ-ਕਿਤਾਬ": "audiobook", "ep": "ep", "ਸ਼ੋਅ": "show", @@ -4230,10 +4316,12 @@ }, "album_types": { "album": "album", + "albumy": "album", "audiobook": "audiobook", "ep": "ep", "słuchowisko": "show", - "singiel": "single" + "singiel": "single", + "single": "single" }, "chan_prefix": "autor:", "chan_suffix": "" @@ -4313,10 +4401,12 @@ }, "album_types": { "álbum": "album", + "álbuns": "album", "audiolivro": "audiobook", "ep": "ep", "programa": "show", - "single": "single" + "single": "single", + "singles": "single" }, "chan_prefix": "por", "chan_suffix": "" @@ -4381,10 +4471,12 @@ "number_nd_tokens": {}, "album_types": { "álbum": "album", + "álbuns": "album", "audiolivro": "audiobook", "ep": "ep", "programa": "show", - "single": "single" + "single": "single", + "singles": "single" }, "chan_prefix": "de", "chan_suffix": "" @@ -4463,10 +4555,12 @@ }, "album_types": { "album": "album", + "albume": "album", "carte audio": "audiobook", "ep": "ep", "emisiune": "show", - "single": "single" + "single": "single", + "single-uri": "single" }, "chan_prefix": "de", "chan_suffix": "" @@ -4557,10 +4651,12 @@ "number_nd_tokens": {}, "album_types": { "альбом": "album", + "альбомы": "album", "аудиокнига": "audiobook", "ep": "ep", "аудиошоу": "show", - "сингл": "single" + "сингл": "single", + "синглы": "single" }, "chan_prefix": "", "chan_suffix": "" @@ -4624,10 +4720,12 @@ "නැත": 0 }, "album_types": { + "ඇල්බම": "album", "ඇල්බමය": "album", "ශ්‍රව්‍යපොත": "audiobook", "දීවා": "ep", "සංදර්ශනය": "show", + "ඒකල": "single", "තනි": "single" }, "chan_prefix": "", @@ -4708,10 +4806,12 @@ }, "album_types": { "album": "album", + "albumy": "album", "audiokniha": "audiobook", "ep": "ep", "relácia": "show", - "singel": "single" + "singel": "single", + "single": "single" }, "chan_prefix": "Autori:", "chan_suffix": "" @@ -4807,10 +4907,12 @@ }, "album_types": { "album": "album", + "albumi": "album", "zvočna knjiga": "audiobook", "ep": "ep", "oddaja": "show", - "singel": "single" + "singel": "single", + "singli": "single" }, "chan_prefix": "kanal", "chan_suffix": "" @@ -4882,9 +4984,11 @@ }, "album_types": { "album": "album", + "albume": "album", "libër me audio": "audiobook", "ep": "ep", "shfaq": "show", + "individuale": "single", "single": "single" }, "chan_prefix": "nga", @@ -4956,10 +5060,12 @@ }, "album_types": { "албум": "album", + "албуми": "album", "аудио-књига": "audiobook", "ep": "ep", "серија": "show", - "сингл": "single" + "сингл": "single", + "синглови": "single" }, "chan_prefix": "са канала", "chan_suffix": "" @@ -5030,10 +5136,12 @@ }, "album_types": { "album": "album", + "albumi": "album", "audio-knjiga": "audiobook", "ep": "ep", "serija": "show", - "singl": "single" + "singl": "single", + "singlovi": "single" }, "chan_prefix": "sa kanala", "chan_suffix": "" @@ -5111,7 +5219,8 @@ "ljudbok": "audiobook", "ep": "ep", "ljuddrama": "show", - "singel": "single" + "singel": "single", + "singlar": "single" }, "chan_prefix": "från", "chan_suffix": "" @@ -5262,11 +5371,13 @@ "இல்லை": 0 }, "album_types": { + "ஆல்பங்கள்": "album", "ஆல்பம்": "album", "ஆடியோ புத்தகம்": "audiobook", "ep": "ep", "ஆடியோ ஷோ": "show", - "சிங்கிள்": "single" + "சிங்கிள்": "single", + "சிங்கிள்ஸ்": "single" }, "chan_prefix": "வழங்கியவர்:", "chan_suffix": "" @@ -5344,10 +5455,12 @@ }, "album_types": { "ఆల్బమ్": "album", + "ఆల్బమ్‌లు": "album", "ఆడియోబుక్": "audiobook", "ep": "ep", "చూపించు": "show", - "సింగిల్": "single" + "సింగిల్": "single", + "సింగిల్స్": "single" }, "chan_prefix": "", "chan_suffix": "ఛానెల్ ద్వారా" @@ -5505,10 +5618,12 @@ }, "album_types": { "albüm": "album", + "albümler": "album", "sesli kitap": "audiobook", "ep": "ep", "program": "show", - "single": "single" + "single": "single", + "single'lar": "single" }, "chan_prefix": "", "chan_suffix": "tarafından" @@ -5604,10 +5719,12 @@ }, "album_types": { "альбом": "album", + "альбоми": "album", "аудіокнига": "audiobook", "мініальбом": "ep", "аудіодрама": "show", - "сингл": "single" + "сингл": "single", + "сингли": "single" }, "chan_prefix": "власник:", "chan_suffix": "" @@ -5684,9 +5801,11 @@ }, "album_types": { "البم": "album", + "البمز": "album", "آڈیو بک": "audiobook", "ep": "ep", "شو": "show", + "سنگلز": "single", "واحد": "single" }, "chan_prefix": "منجانب", @@ -5754,10 +5873,12 @@ "number_nd_tokens": {}, "album_types": { "albom": "album", + "albomlar": "album", "audiokitob": "audiobook", "ep": "ep", "shou": "show", - "singl": "single" + "singl": "single", + "singllar": "single" }, "chan_prefix": "muallif:", "chan_suffix": "" @@ -6030,10 +6151,12 @@ "akukho": 0 }, "album_types": { + "ama-albhamu": "album", "i-albhamu": "album", "i-audiobook": "audiobook", "i-ep": "ep", "bonisa": "show", + "ama-single": "single", "i-single": "single" }, "chan_prefix": "ka-", diff --git a/testfiles/music_artist/artist_20250113_grouped_albums.json b/testfiles/music_artist/artist_20250113_grouped_albums.json new file mode 100644 index 0000000..daada11 --- /dev/null +++ b/testfiles/music_artist/artist_20250113_grouped_albums.json @@ -0,0 +1,15760 @@ +{ + "responseContext": { + "visitorData": "CgsycWViWkR6X3RueSiou5G8BjIKCgJVUxIEEgAgNQ%3D%3D", + "serviceTrackingParams": [ + { + "service": "GFEEDBACK", + "params": [ + { + "key": "context", + "value": "channel_creator" + }, + { + "key": "has_unlimited_entitlement", + "value": "False" + }, + { + "key": "browse_id", + "value": "UCOR4_bSVIXPsGa4BbCSt60Q" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "0" + }, + { + "key": "e", + "value": "23804281,24004644,24077241,24181174,24241378,24439361,24459435,24499534,24548629,24566687,51010235,51017346,51020570,51025415,51043775,51050361,51053689,51063643,51065188,51089007,51098299,51111738,51115184,51124104,51151423,51152050,51157411,51176511,51183909,51204329,51217504,51220493,51222382,51222973,51227037,51228850,51230478,51232636,51237842,51239093,51241028,51242448,51248734,51249749,51255676,51256074,51256084,51274583,51275785,51276557,51276565,51281227,51285717,51287196,51292055,51294322,51296439,51298020,51299710,51299724,51303667,51303669,51303789,51304155,51305839,51310741,51313109,51313767,51313802,51316744,51318845,51321893,51322669,51324941,51326932,51327613,51329458,51330194,51332801,51333879,51335366,51335392,51335594,51335928,51337186,51339005,51340662,51341214,51341974,51342753,51342857,51343368,51343796,51345629,51346046,51347325,51348672,51349433,51349880,51351446,51352762,51353231,51353393,51353453,51353498,51354114,51354507,51355428,51355679,51357477,51357763,51361727,51362455,51362643,51362674,51362857,51364291,51365255,51365460,51365462,51365569,51365860,51365987,51366423,51366864,51367993,51369432,51369559,51370273,51370986,51371294,51371521,51374438,51375168,51375719,51376320,51376330,51378003,51380894,51381973,51383101,51383428,51384307,51384347" + } + ] + }, + { + "service": "CSI", + "params": [ + { + "key": "c", + "value": "WEB_REMIX" + }, + { + "key": "cver", + "value": "1.20250108.01.00" + }, + { + "key": "yt_li", + "value": "0" + }, + { + "key": "GetBrowseArtistDetailPage_rid", + "value": "0x24a96387aeed7d7f" + } + ] + }, + { + "service": "ECATCHER", + "params": [ + { + "key": "client.version", + "value": "1.20000101" + }, + { + "key": "client.name", + "value": "WEB_REMIX" + } + ] + } + ], + "maxAgeSeconds": 300 + }, + "contents": { + "singleColumnBrowseResultsRenderer": { + "tabs": [ + { + "tabRenderer": { + "content": { + "sectionListRenderer": { + "contents": [ + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "Songs", + "navigationEndpoint": { + "clickTrackingParams": "CLcDEPleGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "VLOLAK5uy_miHesZCUQY5S9EwqfoNP2tZR9nZ0NBAeU", + "params": "ggMCCAI%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + } + } + } + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CIIEEMn0AhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/V_tvMqbuXgDgoAKuYZ-VFRru3cUb2WQvwO6vVBKY8pdFYAl1dkuIv_W2afjMUNN6uVNxet6r7mHISh0s=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/V_tvMqbuXgDgoAKuYZ-VFRru3cUb2WQvwO6vVBKY8pdFYAl1dkuIv_W2afjMUNN6uVNxet6r7mHISh0s=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJQEEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CJMEEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchEndpoint": { + "videoId": "YvidasjVLXk", + "playlistId": "OLAK5uy_miHesZCUQY5S9EwqfoNP2tZR9nZ0NBAeU", + "index": 0, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21pSGVzWkNVUVk1UzlFd3Fmb05QMnRaUjluWjBOQkFlVQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CJMEEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Bleib in der Schule" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Bleib in der Schule" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Bleib in der Schule", + "navigationEndpoint": { + "clickTrackingParams": "CIIEEMn0AhgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "YvidasjVLXk", + "playlistId": "OLAK5uy_miHesZCUQY5S9EwqfoNP2tZR9nZ0NBAeU", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21pSGVzWkNVUVk1UzlFd3Fmb05QMnRaUjluWjBOQkFlVQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CIIEEMn0AhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "71M plays" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Bleib in der Schule", + "navigationEndpoint": { + "clickTrackingParams": "CIIEEMn0AhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_8PsIyll0LFV", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJIEEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "YvidasjVLXk", + "playlistId": "RDAMVMYvidasjVLXk", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1ZdmlkYXNqVkxYaw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CJIEEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJAEEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "YvidasjVLXk", + "onEmptyQueue": { + "clickTrackingParams": "CJAEEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "YvidasjVLXk" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CJAEEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CJEEEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CJAEEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4EEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "YvidasjVLXk", + "onEmptyQueue": { + "clickTrackingParams": "CI4EEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "YvidasjVLXk" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CI4EEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CI8EEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CI4EEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIwEEMOUBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CI0EEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CI0EEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CIwEEMOUBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIsEEI_7BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_8PsIyll0LFV", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CIsEEI_7BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIoEEK-jChgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPTCYvidasjVLXk", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CIoEEK-jChgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIkEEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtZdmlkYXNqVkxYaw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CIkEEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIgEEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJa0kRexJO_Okp1on4GaISmQ1atyvRjRUqokuWId2gutKB3kM9S_gp8K3qm13Bb5AGnZnQk8-X-rsSU8zP698m4XWUZp1QuxrlyYeK5nchdObA1JMs" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIgEEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLBLsq1jhLAaYq70EjYH4T3M6PCPtMsDfXCYQAq63eBHMstf7V661fsZvG3bGatY4krtTCz_Xn_ypEMwG4ESN7u7Xt8gnbizssvYk2c12i5vaFduN0" + } + }, + "trackingParams": "CIgEEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CIQEEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "YvidasjVLXk" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CIUEEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "likesAllowed": true, + "dislikeNavigationEndpoint": { + "clickTrackingParams": "CIUEEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Not a fan?" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve your recommendations after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CIcEEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CIcEEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "CIUEEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CIYEEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CIYEEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "badges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CIMEEKHtAhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ], + "playlistItemData": { + "videoId": "YvidasjVLXk" + } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CPADEMn0AhgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/1fPBoTszY4e6Nf8egSwBTHWsQT8hotwhDnjArd1SHS8gZc5asCoo_3Z2WhN1IO2KMqyYly0xm7mMZ43d=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/1fPBoTszY4e6Nf8egSwBTHWsQT8hotwhDnjArd1SHS8gZc5asCoo_3Z2WhN1IO2KMqyYly0xm7mMZ43d=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIEEEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CIAEEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchEndpoint": { + "videoId": "h3T_NXRUUjM", + "playlistId": "OLAK5uy_miHesZCUQY5S9EwqfoNP2tZR9nZ0NBAeU", + "index": 1, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21pSGVzWkNVUVk1UzlFd3Fmb05QMnRaUjluWjBOQkFlVQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CIAEEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Fledermausland" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Fledermausland" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Fledermausland", + "navigationEndpoint": { + "clickTrackingParams": "CPADEMn0AhgBIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "h3T_NXRUUjM", + "playlistId": "OLAK5uy_miHesZCUQY5S9EwqfoNP2tZR9nZ0NBAeU", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21pSGVzWkNVUVk1UzlFd3Fmb05QMnRaUjluWjBOQkFlVQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CPADEMn0AhgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "30M plays" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Crackstreet Boys II X Version", + "navigationEndpoint": { + "clickTrackingParams": "CPADEMn0AhgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_POeT6m0bw9q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CP8DEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "h3T_NXRUUjM", + "playlistId": "RDAMVMh3T_NXRUUjM", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1oM1RfTlhSVVVqTQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CP8DEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0DEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "h3T_NXRUUjM", + "onEmptyQueue": { + "clickTrackingParams": "CP0DEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "h3T_NXRUUjM" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CP0DEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CP4DEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CP0DEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPsDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "h3T_NXRUUjM", + "onEmptyQueue": { + "clickTrackingParams": "CPsDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "h3T_NXRUUjM" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CPsDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CPwDEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CPsDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPkDEMOUBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CPoDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CPoDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CPkDEMOUBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPgDEI_7BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_POeT6m0bw9q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CPgDEI_7BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPcDEK-jChgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPTCh3T_NXRUUjM", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CPcDEK-jChgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPYDEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtoM1RfTlhSVVVqTQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CPYDEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPUDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJmhe0H3jHVv9b1KLWb2sRtUO8BZiV6kmqPbwl9ESH2EwbahpcQBI5g-OsfkEIXCVWstHpecz-5lg_nqnR00Xtl1-dGTOXELI0_pi2E-0FfBCxBkR8" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPUDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKvhh_7jE3FaN8Lg0s_TXXa6vTK6DxfpkOMzREtcylXUMG5wv60BeeuAtCI6UxQTLG5oVWw4YkLh5CbvGY2r9QOszbDXHNwI7bU6vhLKfY7bE9-Z9M" + } + }, + "trackingParams": "CPUDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CPEDEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "h3T_NXRUUjM" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CPIDEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "likesAllowed": true, + "dislikeNavigationEndpoint": { + "clickTrackingParams": "CPIDEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Not a fan?" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve your recommendations after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CPQDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CPQDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "CPIDEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CPMDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CPMDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "h3T_NXRUUjM" + } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CN0DEMn0AhgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/eQCwnR4YLYnizEhQKeSDDE3rulSTo64cTfs8fxR1K-3iWUfC477SHV0ZOOoQa2vJuvr_9i_WDYI-wbo=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/eQCwnR4YLYnizEhQKeSDDE3rulSTo64cTfs8fxR1K-3iWUfC477SHV0ZOOoQa2vJuvr_9i_WDYI-wbo=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CO8DEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CO4DEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchEndpoint": { + "videoId": "XZfoFwWvkGQ", + "playlistId": "OLAK5uy_miHesZCUQY5S9EwqfoNP2tZR9nZ0NBAeU", + "index": 2, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21pSGVzWkNVUVk1UzlFd3Fmb05QMnRaUjluWjBOQkFlVQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CO4DEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Sterben kannst du überall" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Sterben kannst du überall" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Sterben kannst du überall", + "navigationEndpoint": { + "clickTrackingParams": "CN0DEMn0AhgCIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "XZfoFwWvkGQ", + "playlistId": "OLAK5uy_miHesZCUQY5S9EwqfoNP2tZR9nZ0NBAeU", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21pSGVzWkNVUVk1UzlFd3Fmb05QMnRaUjluWjBOQkFlVQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CN0DEMn0AhgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "40M plays" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "TP4L", + "navigationEndpoint": { + "clickTrackingParams": "CN0DEMn0AhgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_UYdRV1nnK2J", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO0DEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "XZfoFwWvkGQ", + "playlistId": "RDAMVMXZfoFwWvkGQ", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1YWmZvRndXdmtHUQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CO0DEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COsDEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "XZfoFwWvkGQ", + "onEmptyQueue": { + "clickTrackingParams": "COsDEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "XZfoFwWvkGQ" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "COsDEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "COwDEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "COsDEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "XZfoFwWvkGQ", + "onEmptyQueue": { + "clickTrackingParams": "COkDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "XZfoFwWvkGQ" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "COkDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "COoDEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "COkDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "COcDEMOUBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "COgDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "COgDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "COcDEMOUBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "COYDEI_7BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_UYdRV1nnK2J", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "COYDEI_7BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "clickTrackingParams": "COUDEK-jChgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPTCXZfoFwWvkGQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "COUDEK-jChgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COQDEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtYWmZvRndXdmtHUQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "COQDEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COMDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKAroYGUs3hN_oiZ4EYOj5TqzwzxrZ204XbPNgX5GefQFKOkgUdyVGMcWZL0MOv5hm08C3B-EATLy4bqkNHd43_Fr3kGQzONtTOjroZSgFkPyUy2-M" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COMDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLBTISCxfGdM8UqBZu2ZXZcI6aQDki9D1e9227PpUbR3R9El1_1Mned0gJqKLA1lBn0z86NEypIaRK4rhmbqEjBqPVKubC8NXhD4nHb8eh_JlmjoC0" + } + }, + "trackingParams": "COMDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CN8DEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "XZfoFwWvkGQ" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "COADEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "likesAllowed": true, + "dislikeNavigationEndpoint": { + "clickTrackingParams": "COADEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Not a fan?" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve your recommendations after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "COIDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "COIDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "COADEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "COEDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "COEDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "badges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CN4DEKHtAhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ], + "playlistItemData": { + "videoId": "XZfoFwWvkGQ" + } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CMsDEMn0AhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/1fPBoTszY4e6Nf8egSwBTHWsQT8hotwhDnjArd1SHS8gZc5asCoo_3Z2WhN1IO2KMqyYly0xm7mMZ43d=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/1fPBoTszY4e6Nf8egSwBTHWsQT8hotwhDnjArd1SHS8gZc5asCoo_3Z2WhN1IO2KMqyYly0xm7mMZ43d=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CNwDEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CNsDEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchEndpoint": { + "videoId": "LOuVxwVFJhs", + "playlistId": "OLAK5uy_miHesZCUQY5S9EwqfoNP2tZR9nZ0NBAeU", + "index": 3, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21pSGVzWkNVUVk1UzlFd3Fmb05QMnRaUjluWjBOQkFlVQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CNsDEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Selbstbefriedigung" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Selbstbefriedigung" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Selbstbefriedigung", + "navigationEndpoint": { + "clickTrackingParams": "CMsDEMn0AhgDIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "LOuVxwVFJhs", + "playlistId": "OLAK5uy_miHesZCUQY5S9EwqfoNP2tZR9nZ0NBAeU", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21pSGVzWkNVUVk1UzlFd3Fmb05QMnRaUjluWjBOQkFlVQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CMsDEMn0AhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "13M plays" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Crackstreet Boys II X Version", + "navigationEndpoint": { + "clickTrackingParams": "CMsDEMn0AhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_POeT6m0bw9q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNoDEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "LOuVxwVFJhs", + "playlistId": "RDAMVMLOuVxwVFJhs", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1MT3VWeHdWRkpocw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CNoDEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNgDEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "LOuVxwVFJhs", + "onEmptyQueue": { + "clickTrackingParams": "CNgDEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "LOuVxwVFJhs" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CNgDEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CNkDEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CNgDEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNYDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "LOuVxwVFJhs", + "onEmptyQueue": { + "clickTrackingParams": "CNYDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "LOuVxwVFJhs" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CNYDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CNcDEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CNYDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNQDEMOUBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CNUDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CNUDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CNQDEMOUBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNMDEI_7BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_POeT6m0bw9q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CNMDEI_7BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNIDEK-jChgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPTCLOuVxwVFJhs", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CNIDEK-jChgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNEDEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtMT3VWeHdWRkpocw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CNEDEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNADEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL8QqFV4WksUMxzISgHgASDYsPV6U9U-0deKWVI4qh6s0xJIbQFiItwT236YK7JV0ylA_NDWmtBXh75XdgXWex5LAuA5qlewoX4s7hWamrA-I78Cn4" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNADEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKbAuACuNpvVo4DJ2EWUS0B3M_wueNpTJyFmKIOSdsCrZWJMyCUrARJuwQq1jNlxCzd1KKHuqIW3JUkZt1LxZFLyiwWBN20OhRzE7-Qft-sxML9IdU" + } + }, + "trackingParams": "CNADEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CMwDEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "LOuVxwVFJhs" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CM0DEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "likesAllowed": true, + "dislikeNavigationEndpoint": { + "clickTrackingParams": "CM0DEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Not a fan?" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve your recommendations after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CM8DEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CM8DEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "CM0DEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CM4DEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CM4DEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "LOuVxwVFJhs" + } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CLgDEMn0AhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/MIuap-H2LxqP5O7Dry1LdShBFBbg5YTjIPjuXOHWyrKlmnOogsO5cTk6yXH97DhI3WjZg0z3y-jkQxaM=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/MIuap-H2LxqP5O7Dry1LdShBFBbg5YTjIPjuXOHWyrKlmnOogsO5cTk6yXH97DhI3WjZg0z3y-jkQxaM=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CMoDEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CMkDEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchEndpoint": { + "videoId": "GePZUYeIQQQ", + "playlistId": "OLAK5uy_miHesZCUQY5S9EwqfoNP2tZR9nZ0NBAeU", + "index": 4, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21pSGVzWkNVUVk1UzlFd3Fmb05QMnRaUjluWjBOQkFlVQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CMkDEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Falsche Band" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Falsche Band" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Falsche Band", + "navigationEndpoint": { + "clickTrackingParams": "CLgDEMn0AhgEIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "GePZUYeIQQQ", + "playlistId": "OLAK5uy_miHesZCUQY5S9EwqfoNP2tZR9nZ0NBAeU", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21pSGVzWkNVUVk1UzlFd3Fmb05QMnRaUjluWjBOQkFlVQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CLgDEMn0AhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "13M plays" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Crackstreet Boys 3 (Bonus Tracks Version)", + "navigationEndpoint": { + "clickTrackingParams": "CLgDEMn0AhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_bi34SGT1xlc", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMgDEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "GePZUYeIQQQ", + "playlistId": "RDAMVMGePZUYeIQQQ", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1HZVBaVVllSVFRUQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CMgDEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMYDEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "GePZUYeIQQQ", + "onEmptyQueue": { + "clickTrackingParams": "CMYDEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "GePZUYeIQQQ" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CMYDEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CMcDEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CMYDEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMQDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "GePZUYeIQQQ", + "onEmptyQueue": { + "clickTrackingParams": "CMQDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "GePZUYeIQQQ" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CMQDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CMUDEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CMQDEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMIDEMOUBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CMMDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CMMDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CMIDEMOUBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMEDEI_7BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_bi34SGT1xlc", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CMEDEI_7BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMADEK-jChgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPTCGePZUYeIQQQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CMADEK-jChgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CL8DEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtHZVBaVVllSVFRUQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CL8DEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CL4DEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJGfDHXhyqYAvUKmk1m99FVIICYDz2QuA1sWfGageE7nZhyIX0MXOXnw_hEfb2HVSbB89pEU_y55wndqltUV8kQIup3jSanj4ph5v_S53KtaZCYr8A" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CL4DEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIMepnyUOvWzr9Tp5maa6jcrvwxt-mfF0sTBj0Jiy9KwqnxPbWdAzUC7cUh-NqG-aLn1JesEh6HgRfTu7Bv44RIXSQeh3luLPl-xXSiopPEcZRDCuM" + } + }, + "trackingParams": "CL4DEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CLoDEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "GePZUYeIQQQ" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CLsDEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "likesAllowed": true, + "dislikeNavigationEndpoint": { + "clickTrackingParams": "CLsDEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Not a fan?" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve your recommendations after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CL0DEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CL0DEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "CLsDEKVBGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CLwDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CLwDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "badges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CLkDEKHtAhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ], + "playlistItemData": { + "videoId": "GePZUYeIQQQ" + } + } + } + ], + "trackingParams": "CLcDEPleGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "bottomEndpoint": { + "clickTrackingParams": "CLcDEPleGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "VLOLAK5uy_miHesZCUQY5S9EwqfoNP2tZR9nZ0NBAeU", + "params": "ggMCCAI%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + }, + { + "musicCarouselShelfRenderer": { + "header": { + "musicCarouselShelfBasicHeaderRenderer": { + "title": { + "runs": [ + { + "text": "Albums" + } + ] + }, + "accessibilityData": { + "accessibilityData": { + "label": "Albums" + } + }, + "headerStyle": "MUSIC_CAROUSEL_SHELF_BASIC_HEADER_STYLE_DISPLAY_TWO", + "trackingParams": "CLYDEIi8BCITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "contents": [ + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/eQCwnR4YLYnizEhQKeSDDE3rulSTo64cTfs8fxR1K-3iWUfC477SHV0ZOOoQa2vJuvr_9i_WDYI-wbo=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/eQCwnR4YLYnizEhQKeSDDE3rulSTo64cTfs8fxR1K-3iWUfC477SHV0ZOOoQa2vJuvr_9i_WDYI-wbo=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CLUDEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "TP4L", + "navigationEndpoint": { + "clickTrackingParams": "CKUDEKCzAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_UYdRV1nnK2J", + "params": "ggMrGilPTEFLNXV5X24yWTVCXzk0OUJsOFUyWlJUam5veGdOR2ZOWFFFOEthbw%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "2017" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CKUDEKCzAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_UYdRV1nnK2J", + "params": "ggMrGilPTEFLNXV5X24yWTVCXzk0OUJsOFUyWlJUam5veGdOR2ZOWFFFOEthbw%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CKUDEKCzAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLQDEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_n2Y5B_949Bl8U2ZRTjnoxgNGfNXQE8Kao", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CLQDEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLMDEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_n2Y5B_949Bl8U2ZRTjnoxgNGfNXQE8Kao", + "params": "wAEB" + } + }, + "trackingParams": "CLMDEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLEDEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_n2Y5B_949Bl8U2ZRTjnoxgNGfNXQE8Kao", + "onEmptyQueue": { + "clickTrackingParams": "CLEDEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_n2Y5B_949Bl8U2ZRTjnoxgNGfNXQE8Kao" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CLEDEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CLIDEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CLEDEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8DEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_n2Y5B_949Bl8U2ZRTjnoxgNGfNXQE8Kao", + "onEmptyQueue": { + "clickTrackingParams": "CK8DEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_n2Y5B_949Bl8U2ZRTjnoxgNGfNXQE8Kao" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CK8DEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CLADEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CK8DEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CK0DEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CK4DEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CK4DEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CK0DEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_n2Y5B_949Bl8U2ZRTjnoxgNGfNXQE8Kao" + } + } + }, + "trackingParams": "CK0DEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKsDEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CKwDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CKwDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CKsDEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKoDEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X24yWTVCXzk0OUJsOFUyWlJUam5veGdOR2ZOWFFFOEthbw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CKoDEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKkDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLhC7RZRCnqe88-3fZaqKC2binpzxsZiaAZMvWbs_8Ry9OcOCOpNcQ_t4RN09zoJLRE708hsQTxWULx3wSBRcDrRixVoKlDPcZhIxedx4QWzDHji_lxpZTQ4FnDJ6Xbzz8FVTG3" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKkDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI_KaKk9i3hbcJulukuAS5dy1726Sm2FkcgFuMg68fAsLN-yIAFy0PczDbpeCwLY5BfZUDgBvNUAVkNxTBEKUJbVczVmizUCOaIDsnlTFZum7wVhcTbqxo1PavTBI5Zf0cXJvjz" + } + }, + "trackingParams": "CKkDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CKgDEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CKcDEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_n2Y5B_949Bl8U2ZRTjnoxgNGfNXQE8Kao" + } + }, + "trackingParams": "CKcDEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 2566914048, + "activeBackgroundColor": 4278190080, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 1308622847, + "activeScaleFactor": 1.2, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play TP4L" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause TP4L" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CKYDEKHtAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ] + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/MIuap-H2LxqP5O7Dry1LdShBFBbg5YTjIPjuXOHWyrKlmnOogsO5cTk6yXH97DhI3WjZg0z3y-jkQxaM=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/MIuap-H2LxqP5O7Dry1LdShBFBbg5YTjIPjuXOHWyrKlmnOogsO5cTk6yXH97DhI3WjZg0z3y-jkQxaM=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKQDEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Crackstreet Boys 3 (Bonus Tracks Version)", + "navigationEndpoint": { + "clickTrackingParams": "CJQDEKCzAhgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_bi34SGT1xlc", + "params": "ggMrGilPTEFLNXV5X2s4MWo1SFZJT0NybFRJNEE2UXFlWWNQSmgyelFVYkdTUQ%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "2014" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CJQDEKCzAhgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_bi34SGT1xlc", + "params": "ggMrGilPTEFLNXV5X2s4MWo1SFZJT0NybFRJNEE2UXFlWWNQSmgyelFVYkdTUQ%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CJQDEKCzAhgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKMDEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_k81j5HVIOCrlTI4A6QqeYcPJh2zQUbGSQ", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CKMDEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKIDEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_k81j5HVIOCrlTI4A6QqeYcPJh2zQUbGSQ", + "params": "wAEB" + } + }, + "trackingParams": "CKIDEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKADEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_k81j5HVIOCrlTI4A6QqeYcPJh2zQUbGSQ", + "onEmptyQueue": { + "clickTrackingParams": "CKADEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_k81j5HVIOCrlTI4A6QqeYcPJh2zQUbGSQ" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CKADEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CKEDEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CKADEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4DEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_k81j5HVIOCrlTI4A6QqeYcPJh2zQUbGSQ", + "onEmptyQueue": { + "clickTrackingParams": "CJ4DEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_k81j5HVIOCrlTI4A6QqeYcPJh2zQUbGSQ" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CJ4DEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJ8DEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CJ4DEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJwDEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ0DEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CJ0DEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJwDEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_k81j5HVIOCrlTI4A6QqeYcPJh2zQUbGSQ" + } + } + }, + "trackingParams": "CJwDEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJoDEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CJsDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CJsDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CJoDEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJkDEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2s4MWo1SFZJT0NybFRJNEE2UXFlWWNQSmgyelFVYkdTUQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CJkDEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJgDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLP8LjeNJg4X3g12TteN8vh3h8pDuUk6aT1AqfWUM8zAB4UX9DCKmnXc6j2LVldTD9NYeDWdSQPAbq4jriAoBrK8b4u5yKW6IxQdD5UN26HpK2nkzpWN74mLw1SfuKZ6HjANiQy" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJgDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLv1Y0X52YUDlPF-lZuzjI8wOxPfK40Ye4gtjYOa9AAe7ShbQy8cLAtDViFmLmaALOJHl7o1wvmSxLkBO1hw1-75I2KxqaNSlaxq6qOBZLhrzuS0eP0nV_sSnnrn61-CMx_wEMS" + } + }, + "trackingParams": "CJgDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CJcDEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CJYDEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_k81j5HVIOCrlTI4A6QqeYcPJh2zQUbGSQ" + } + }, + "trackingParams": "CJYDEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 2566914048, + "activeBackgroundColor": 4278190080, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 1308622847, + "activeScaleFactor": 1.2, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Crackstreet Boys 3 (Bonus Tracks Version)" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Crackstreet Boys 3 (Bonus Tracks Version)" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CJUDEKHtAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ] + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/ilzR9UxpZFwHZnYOL0L504H6a0Y8k_zPk0AYOhBiBqIjq4TGnX-B1uKcNah56dmjPZoDvp9vGWyfgY8=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/ilzR9UxpZFwHZnYOL0L504H6a0Y8k_zPk0AYOhBiBqIjq4TGnX-B1uKcNah56dmjPZoDvp9vGWyfgY8=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJMDEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Goldener Schluss (Live in Berlin)", + "navigationEndpoint": { + "clickTrackingParams": "CIMDEKCzAhgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_5gkbwhqC4AJ", + "params": "ggMrGilPTEFLNXV5X25GTzZDNFNsdjFaTVR3UlFOaDd2UmdFajhLUHlQeU4yaw%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "2024" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CIMDEKCzAhgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_5gkbwhqC4AJ", + "params": "ggMrGilPTEFLNXV5X25GTzZDNFNsdjFaTVR3UlFOaDd2UmdFajhLUHlQeU4yaw%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CIMDEKCzAhgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJIDEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nFO6C4Slv1ZMTwRQNh7vRgEj8KPyPyN2k", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CJIDEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJEDEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_nFO6C4Slv1ZMTwRQNh7vRgEj8KPyPyN2k", + "params": "wAEB" + } + }, + "trackingParams": "CJEDEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8DEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_nFO6C4Slv1ZMTwRQNh7vRgEj8KPyPyN2k", + "onEmptyQueue": { + "clickTrackingParams": "CI8DEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_nFO6C4Slv1ZMTwRQNh7vRgEj8KPyPyN2k" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CI8DEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJADEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CI8DEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0DEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_nFO6C4Slv1ZMTwRQNh7vRgEj8KPyPyN2k", + "onEmptyQueue": { + "clickTrackingParams": "CI0DEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_nFO6C4Slv1ZMTwRQNh7vRgEj8KPyPyN2k" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CI0DEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CI4DEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CI0DEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIsDEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CIwDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CIwDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIsDEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nFO6C4Slv1ZMTwRQNh7vRgEj8KPyPyN2k" + } + } + }, + "trackingParams": "CIsDEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIkDEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CIoDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CIoDEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CIkDEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIgDEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25GTzZDNFNsdjFaTVR3UlFOaDd2UmdFajhLUHlQeU4yaw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CIgDEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIcDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKq-wQiqpcnAxwipDDp7Dp9o11i8BR8GNXFPlUi9QHyNQ7FcQORxga8Cew7KtKwQigvb7WvZWsnfFOZJV58m5iXC-5F2E5hKrwQuZ1qimp-5S8q2TvgdsHatSVGen1F5zhFwG7m" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIcDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK1vCxUHEqHv1USf7SxBGs1GCDvrusQ0JWk3JymUAR4A5GQ6ahG-KtYLeTivDyCXL9DzPgT-bJMnStdfM4nHyDdCJ3fAgWNCed6Qw08Vf8RLcRvY0swdBNPwHtThMhRYLnCefcR" + } + }, + "trackingParams": "CIcDEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CIYDEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CIUDEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nFO6C4Slv1ZMTwRQNh7vRgEj8KPyPyN2k" + } + }, + "trackingParams": "CIUDEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 2566914048, + "activeBackgroundColor": 4278190080, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 1308622847, + "activeScaleFactor": 1.2, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Goldener Schluss (Live in Berlin)" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Goldener Schluss (Live in Berlin)" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CIQDEKHtAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ] + } + } + ], + "trackingParams": "CIIDEKGzAhgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "itemSize": "COLLECTION_STYLE_ITEM_SIZE_MEDIUM" + } + }, + { + "musicCarouselShelfRenderer": { + "header": { + "musicCarouselShelfBasicHeaderRenderer": { + "title": { + "runs": [ + { + "text": "Singles & EPs" + } + ] + }, + "accessibilityData": { + "accessibilityData": { + "label": "Singles & EPs" + } + }, + "headerStyle": "MUSIC_CAROUSEL_SHELF_BASIC_HEADER_STYLE_DISPLAY_TWO", + "trackingParams": "CIEDEIi8BCITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "contents": [ + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/8Ftr5oIt1q6RbGkdiW7cefw-XGUplUXcjXXN7QntI1Nzh_6oR0euh7Lj2Ner3yXV--U-hVxJewkeq8A=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/8Ftr5oIt1q6RbGkdiW7cefw-XGUplUXcjXXN7QntI1Nzh_6oR0euh7Lj2Ner3yXV--U-hVxJewkeq8A=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIADEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "TP4L", + "navigationEndpoint": { + "clickTrackingParams": "CPACEKCzAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_HPXN9BBzFpV", + "params": "ggMrGilPTEFLNXV5X2xZX1ZaV3d4MnMtTzRjRm5CSEhKWHplSXQwMHZfd2ZuZw%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CPACEKCzAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_HPXN9BBzFpV", + "params": "ggMrGilPTEFLNXV5X2xZX1ZaV3d4MnMtTzRjRm5CSEhKWHplSXQwMHZfd2ZuZw%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CPACEKCzAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CP8CEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lY_VZWwx2s-O4cFnBHHJXzeIt00v_wfng", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CP8CEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CP4CEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_lY_VZWwx2s-O4cFnBHHJXzeIt00v_wfng", + "params": "wAEB" + } + }, + "trackingParams": "CP4CEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPwCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_lY_VZWwx2s-O4cFnBHHJXzeIt00v_wfng", + "onEmptyQueue": { + "clickTrackingParams": "CPwCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_lY_VZWwx2s-O4cFnBHHJXzeIt00v_wfng" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CPwCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CP0CEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CPwCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPoCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_lY_VZWwx2s-O4cFnBHHJXzeIt00v_wfng", + "onEmptyQueue": { + "clickTrackingParams": "CPoCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_lY_VZWwx2s-O4cFnBHHJXzeIt00v_wfng" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CPoCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CPsCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CPoCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPgCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CPkCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CPkCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPgCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lY_VZWwx2s-O4cFnBHHJXzeIt00v_wfng" + } + } + }, + "trackingParams": "CPgCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPYCEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CPcCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CPcCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CPYCEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPUCEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xZX1ZaV3d4MnMtTzRjRm5CSEhKWHplSXQwMHZfd2ZuZw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CPUCEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPQCEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKZayLUhZ77SE6SPmqqkCimuRhAb-4XLqLkpKAgqIH7zezvj7krTY5keKhwLdd0jOeyJ-aI_XghBOw4fzcDWXSSRFfKXeW3DHy6FT-9r8nkuhoiWa-OnT6AdS0TFMcWuiSxBpyN" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPQCEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLwLmqXmF2bb84d_ZR89pBPtIUxP1TLEAsJI_7AgUM6w8WPd1mv7rdC0g-8uY2Z68SKCulibUgklH8ObOBnUH_HC8avEwLEDqFP0OeXH0JIWTgSp5-O-oX2tNkBKWYlmB5so7aQ" + } + }, + "trackingParams": "CPQCEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CPMCEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CPICEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lY_VZWwx2s-O4cFnBHHJXzeIt00v_wfng" + } + }, + "trackingParams": "CPICEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 2566914048, + "activeBackgroundColor": 4278190080, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 1308622847, + "activeScaleFactor": 1.2, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play TP4L" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause TP4L" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CPECEKHtAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ] + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/MW37LppS1rjDQIl5GaG0BxKeWk5fs4xphr6rU0z-KmJiHbvMbA3K5ZzrA9avinP2LjNrDGwB5tSLLsqe=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/MW37LppS1rjDQIl5GaG0BxKeWk5fs4xphr6rU0z-KmJiHbvMbA3K5ZzrA9avinP2LjNrDGwB5tSLLsqe=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CO8CEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Endlich normale Leute", + "navigationEndpoint": { + "clickTrackingParams": "CN8CEKCzAhgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_hcK0fXETEf9", + "params": "ggMrGilPTEFLNXV5X2xRdXpETEtMRW9kOFFNRWdxSGdrQUpKRjRuUXA4anZNYw%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CN8CEKCzAhgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_hcK0fXETEf9", + "params": "ggMrGilPTEFLNXV5X2xRdXpETEtMRW9kOFFNRWdxSGdrQUpKRjRuUXA4anZNYw%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CN8CEKCzAhgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO4CEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lQuzDLKLEod8QMEgqHgkAJJF4nQp8jvMc", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CO4CEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO0CEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_lQuzDLKLEod8QMEgqHgkAJJF4nQp8jvMc", + "params": "wAEB" + } + }, + "trackingParams": "CO0CEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COsCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_lQuzDLKLEod8QMEgqHgkAJJF4nQp8jvMc", + "onEmptyQueue": { + "clickTrackingParams": "COsCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_lQuzDLKLEod8QMEgqHgkAJJF4nQp8jvMc" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "COsCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "COwCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "COsCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_lQuzDLKLEod8QMEgqHgkAJJF4nQp8jvMc", + "onEmptyQueue": { + "clickTrackingParams": "COkCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_lQuzDLKLEod8QMEgqHgkAJJF4nQp8jvMc" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "COkCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "COoCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "COkCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COcCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "COgCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "COgCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COcCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lQuzDLKLEod8QMEgqHgkAJJF4nQp8jvMc" + } + } + }, + "trackingParams": "COcCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "COUCEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "COYCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "COYCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "COUCEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COQCEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xRdXpETEtMRW9kOFFNRWdxSGdrQUpKRjRuUXA4anZNYw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "COQCEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COMCEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKBcja_EGlMXXIZZnu7H6fDEHna5YNccxsw92kWPmVzQfFZIQp3dxbkUWOtcW6o3vqwS2qdfALfnDcGKhLpdkAhiY8MSM-XOsyr1NGx75EkseEmdCWRMyq1lP5VZs4J4_eqEip_" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COMCEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIc41y8UECq0X9quX5xhuFbfQBkHAUm6D__pHpKyBxtENwTl8r_MxqOxp6w4TZkZBu8aZcKvtejCaEYr9QnJ6PqRs91SiUyqHlknG1Oq7wpoHYOY81yCz-n8SuZLJKuB25G6yhy" + } + }, + "trackingParams": "COMCEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "COICEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "COECEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lQuzDLKLEod8QMEgqHgkAJJF4nQp8jvMc" + } + }, + "trackingParams": "COECEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 2566914048, + "activeBackgroundColor": 4278190080, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 1308622847, + "activeScaleFactor": 1.2, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Endlich normale Leute" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Endlich normale Leute" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "COACEKHtAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ] + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/kqKBF4JPQhKY1099AzRpJFGc2P7TFuFa2GeM7z8GGfTJ_DkfAzKTdV8gPtfVkyA5HQ0uZn3XG-VtMVj0=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/kqKBF4JPQhKY1099AzRpJFGc2P7TFuFa2GeM7z8GGfTJ_DkfAzKTdV8gPtfVkyA5HQ0uZn3XG-VtMVj0=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CN4CEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Armut treibt Jugendliche in die Popmusik", + "navigationEndpoint": { + "clickTrackingParams": "CM4CEKCzAhgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_R6EV2L1q0oc", + "params": "ggMrGilPTEFLNXV5X25HZVBzNVdqQy00LW54OURxdktlR3lwLUNxcEt6SFQxVQ%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CM4CEKCzAhgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_R6EV2L1q0oc", + "params": "ggMrGilPTEFLNXV5X25HZVBzNVdqQy00LW54OURxdktlR3lwLUNxcEt6SFQxVQ%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CM4CEKCzAhgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CN0CEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nGePs5WjC-4-nx9DqvKeGyp-CqpKzHT1U", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CN0CEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNwCEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_nGePs5WjC-4-nx9DqvKeGyp-CqpKzHT1U", + "params": "wAEB" + } + }, + "trackingParams": "CNwCEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNoCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_nGePs5WjC-4-nx9DqvKeGyp-CqpKzHT1U", + "onEmptyQueue": { + "clickTrackingParams": "CNoCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_nGePs5WjC-4-nx9DqvKeGyp-CqpKzHT1U" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CNoCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CNsCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CNoCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNgCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_nGePs5WjC-4-nx9DqvKeGyp-CqpKzHT1U", + "onEmptyQueue": { + "clickTrackingParams": "CNgCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_nGePs5WjC-4-nx9DqvKeGyp-CqpKzHT1U" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CNgCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CNkCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CNgCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNYCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CNcCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CNcCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNYCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nGePs5WjC-4-nx9DqvKeGyp-CqpKzHT1U" + } + } + }, + "trackingParams": "CNYCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNQCEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CNUCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CNUCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CNQCEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNMCEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25HZVBzNVdqQy00LW54OURxdktlR3lwLUNxcEt6SFQxVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CNMCEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNICEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIzstrucBbu7pIjfsp3t45InPhHT2j9Uq15_Q5nZdjP6GKqIrQvBKEaILcMSseiTZGuj2ebs7D9BMr5LuBu_crkHcKA5oTa4XdriXhZYol6xRfApqIFWhCh1lsqQ2VGH50__0ax" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNICEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJ58-fakR1BImCbnKA0QyBCP3r9csbQO3685mVqbl8OMUE38WCYHas1gr3kwJRIkcGxM6wWrxYixo3QNr8nFFJ_p9SeMmJfyT0lq3K2h-TdaJ1WbmszyRsnEBWXXnIvXZP-AXtK" + } + }, + "trackingParams": "CNICEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CNECEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CNACEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nGePs5WjC-4-nx9DqvKeGyp-CqpKzHT1U" + } + }, + "trackingParams": "CNACEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 2566914048, + "activeBackgroundColor": 4278190080, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 1308622847, + "activeScaleFactor": 1.2, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Armut treibt Jugendliche in die Popmusik" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Armut treibt Jugendliche in die Popmusik" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CM8CEKHtAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ] + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/IVvdOUgbTECe2cVKrwhhCYmhHuipV6p0t5cLqMYWm3E_23zBEABxodGiSuX3H_AxRcEZk2-4V-k3RZw6=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/IVvdOUgbTECe2cVKrwhhCYmhHuipV6p0t5cLqMYWm3E_23zBEABxodGiSuX3H_AxRcEZk2-4V-k3RZw6=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CM0CEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Dicks Sucken", + "navigationEndpoint": { + "clickTrackingParams": "CL0CEKCzAhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_oHieBHkXn3A", + "params": "ggMrGilPTEFLNXV5X2tHVVJNYzJudXF5SFhIcHd5ZmlxcWpWRTZNdVktVFV1aw%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CL0CEKCzAhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_oHieBHkXn3A", + "params": "ggMrGilPTEFLNXV5X2tHVVJNYzJudXF5SFhIcHd5ZmlxcWpWRTZNdVktVFV1aw%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CL0CEKCzAhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMwCEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kGURMc2nuqyHXHpwyfiqqjVE6MuY-TUuk", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CMwCEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMsCEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_kGURMc2nuqyHXHpwyfiqqjVE6MuY-TUuk", + "params": "wAEB" + } + }, + "trackingParams": "CMsCEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_kGURMc2nuqyHXHpwyfiqqjVE6MuY-TUuk", + "onEmptyQueue": { + "clickTrackingParams": "CMkCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_kGURMc2nuqyHXHpwyfiqqjVE6MuY-TUuk" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CMkCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CMoCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CMkCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_kGURMc2nuqyHXHpwyfiqqjVE6MuY-TUuk", + "onEmptyQueue": { + "clickTrackingParams": "CMcCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_kGURMc2nuqyHXHpwyfiqqjVE6MuY-TUuk" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CMcCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CMgCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CMcCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMUCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CMYCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CMYCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMUCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kGURMc2nuqyHXHpwyfiqqjVE6MuY-TUuk" + } + } + }, + "trackingParams": "CMUCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMMCEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CMQCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CMQCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CMMCEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMICEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2tHVVJNYzJudXF5SFhIcHd5ZmlxcWpWRTZNdVktVFV1aw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CMICEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMECEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLgtJrm5acr-gtDWvs1pMBBT2h5R8mtCa5RxhQjowUi_yE1TCMSTQZbovt4yN2IqifWxRfAf7fi5IZdE9GHH2gpzURB5pR1BU1nEVqXRvK_Dxefm-QP6opDyN_12Em0y1iI_tmt" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMECEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI5Cuo_qyIfW8hGcHvnEZ_IUI4ncfIgz5rXcovod9gZ-5JEDOxSg2A3XbRTDUM8rtducGnuY1NInL-ssvf_LN7RLa8BeWbJtkahxaSyjNI2zwQS39y8sczoomXICl924Tl47rfM" + } + }, + "trackingParams": "CMECEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CMACEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CL8CEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kGURMc2nuqyHXHpwyfiqqjVE6MuY-TUuk" + } + }, + "trackingParams": "CL8CEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 2566914048, + "activeBackgroundColor": 4278190080, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 1308622847, + "activeScaleFactor": 1.2, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Dicks Sucken" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Dicks Sucken" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CL4CEKHtAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ] + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/V_tvMqbuXgDgoAKuYZ-VFRru3cUb2WQvwO6vVBKY8pdFYAl1dkuIv_W2afjMUNN6uVNxet6r7mHISh0s=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/V_tvMqbuXgDgoAKuYZ-VFRru3cUb2WQvwO6vVBKY8pdFYAl1dkuIv_W2afjMUNN6uVNxet6r7mHISh0s=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CLwCEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Bleib in der Schule", + "navigationEndpoint": { + "clickTrackingParams": "CKwCEKCzAhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_8PsIyll0LFV", + "params": "ggMrGilPTEFLNXV5X2taUFpYSVE3TFFONDlyS2QyYUJuTTRmYkpyc2pOZGtkbw%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CKwCEKCzAhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_8PsIyll0LFV", + "params": "ggMrGilPTEFLNXV5X2taUFpYSVE3TFFONDlyS2QyYUJuTTRmYkpyc2pOZGtkbw%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CKwCEKCzAhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLsCEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kZPZXIQ7LQN49rKd2aBnM4fbJrsjNdkdo", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CLsCEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLoCEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_kZPZXIQ7LQN49rKd2aBnM4fbJrsjNdkdo", + "params": "wAEB" + } + }, + "trackingParams": "CLoCEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLgCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_kZPZXIQ7LQN49rKd2aBnM4fbJrsjNdkdo", + "onEmptyQueue": { + "clickTrackingParams": "CLgCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_kZPZXIQ7LQN49rKd2aBnM4fbJrsjNdkdo" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CLgCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CLkCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CLgCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLYCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_kZPZXIQ7LQN49rKd2aBnM4fbJrsjNdkdo", + "onEmptyQueue": { + "clickTrackingParams": "CLYCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_kZPZXIQ7LQN49rKd2aBnM4fbJrsjNdkdo" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CLYCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CLcCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CLYCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLQCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CLUCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CLUCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLQCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kZPZXIQ7LQN49rKd2aBnM4fbJrsjNdkdo" + } + } + }, + "trackingParams": "CLQCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLICEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CLMCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CLMCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CLICEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLECEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2taUFpYSVE3TFFONDlyS2QyYUJuTTRmYkpyc2pOZGtkbw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CLECEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLACEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIR9PyW_326zSmIummhjr2exyCRh-DXr0pDsel_HgteWQQSr4f48fn7hqZw2JV3xjtLVWoUUz4VhtA08JUwCXKu7hsncqARCjwxf4VxkNWD3uXrIEsUsLw49SI73VxZ5bjzp0ls" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLACEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK7vHoBER570lljXbOAQHpFh60obzNnKqT93ON0C9fBmdk4HzNQaFIVsvWhtav0v8pV0eGDB7Sr46UVbAL_88ewqJ1aLlqutKkxJwDDnruiTQUMVhAFOfFtx4TiHysrcL2URZzU" + } + }, + "trackingParams": "CLACEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CK8CEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CK4CEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kZPZXIQ7LQN49rKd2aBnM4fbJrsjNdkdo" + } + }, + "trackingParams": "CK4CEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 2566914048, + "activeBackgroundColor": 4278190080, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 1308622847, + "activeScaleFactor": 1.2, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Bleib in der Schule" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Bleib in der Schule" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CK0CEKHtAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ] + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/1fPBoTszY4e6Nf8egSwBTHWsQT8hotwhDnjArd1SHS8gZc5asCoo_3Z2WhN1IO2KMqyYly0xm7mMZ43d=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/1fPBoTszY4e6Nf8egSwBTHWsQT8hotwhDnjArd1SHS8gZc5asCoo_3Z2WhN1IO2KMqyYly0xm7mMZ43d=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKsCEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Crackstreet Boys II X Version", + "navigationEndpoint": { + "clickTrackingParams": "CJwCEKCzAhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_POeT6m0bw9q", + "params": "ggMrGilPTEFLNXV5X200LWQzZTdleDY0RzdxelRVc2ItSHBfOFhvdDRYY3N6WQ%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "EP" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CJwCEKCzAhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_POeT6m0bw9q", + "params": "ggMrGilPTEFLNXV5X200LWQzZTdleDY0RzdxelRVc2ItSHBfOFhvdDRYY3N6WQ%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CJwCEKCzAhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKoCEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_m4-d3e7ex64G7qzTUsb-Hp_8Xot4XcszY", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CKoCEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKkCEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_m4-d3e7ex64G7qzTUsb-Hp_8Xot4XcszY", + "params": "wAEB" + } + }, + "trackingParams": "CKkCEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_m4-d3e7ex64G7qzTUsb-Hp_8Xot4XcszY", + "onEmptyQueue": { + "clickTrackingParams": "CKcCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_m4-d3e7ex64G7qzTUsb-Hp_8Xot4XcszY" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CKcCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CKgCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CKcCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKUCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_m4-d3e7ex64G7qzTUsb-Hp_8Xot4XcszY", + "onEmptyQueue": { + "clickTrackingParams": "CKUCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_m4-d3e7ex64G7qzTUsb-Hp_8Xot4XcszY" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CKUCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CKYCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CKUCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKMCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CKQCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CKQCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKMCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_m4-d3e7ex64G7qzTUsb-Hp_8Xot4XcszY" + } + } + }, + "trackingParams": "CKMCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKECEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CKICEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CKICEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CKECEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKACEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X200LWQzZTdleDY0RzdxelRVc2ItSHBfOFhvdDRYY3N6WQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CKACEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJ8CEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI_tCAUo1q-uR9xObdlpoFFT3Mhpnd2h_Vu3_-uTT5Na1Q_-nLbBWV1vIPYA5SLsFwkeNXXaf5mVGqp1GK8BJWC6JAxzuxdJsW-0il92E6vkfTwJ_vRtYMZZqiYGCuAD7UUCtFu" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJ8CEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI6heJH9wmoDsKrpyvSKnNK0VsqD9HbKXUvXEvp15QPfFt100d0W_U8vEjRL49CFv6CGXqR6I_y5QDW9pTlE8tbp799NPDO5iPaiWJqpNRyvkj9BCC-zzoTY2D_sQgeZzmRxORK" + } + }, + "trackingParams": "CJ8CEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CJ4CEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CJ0CEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_m4-d3e7ex64G7qzTUsb-Hp_8Xot4XcszY" + } + }, + "trackingParams": "CJ0CEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 2566914048, + "activeBackgroundColor": 4278190080, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 1308622847, + "activeScaleFactor": 1.2, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Crackstreet Boys II X Version" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Crackstreet Boys II X Version" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/VNjspSA1Fm0yFJEKUCuetOziiET6sQG9QXQCiydknEny98Lc_MEmUp8e37FtCbDz1bQ6yvM6AqpsvL0=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/VNjspSA1Fm0yFJEKUCuetOziiET6sQG9QXQCiydknEny98Lc_MEmUp8e37FtCbDz1bQ6yvM6AqpsvL0=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJsCEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Bleib in der Schule (Live in Berlin)", + "navigationEndpoint": { + "clickTrackingParams": "CIsCEKCzAhgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_tdFqP579jQz", + "params": "ggMrGilPTEFLNXV5X2xOQndEN2RWazZsN2dzbUUxR09ndzUzSWxyeE1ERklTMA%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2024" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CIsCEKCzAhgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_tdFqP579jQz", + "params": "ggMrGilPTEFLNXV5X2xOQndEN2RWazZsN2dzbUUxR09ndzUzSWxyeE1ERklTMA%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CIsCEKCzAhgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJoCEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lNBwD7dVk6l7gsmE1GOgw53IlrxMDFIS0", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CJoCEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJkCEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_lNBwD7dVk6l7gsmE1GOgw53IlrxMDFIS0", + "params": "wAEB" + } + }, + "trackingParams": "CJkCEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_lNBwD7dVk6l7gsmE1GOgw53IlrxMDFIS0", + "onEmptyQueue": { + "clickTrackingParams": "CJcCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_lNBwD7dVk6l7gsmE1GOgw53IlrxMDFIS0" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CJcCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJgCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CJcCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJUCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_lNBwD7dVk6l7gsmE1GOgw53IlrxMDFIS0", + "onEmptyQueue": { + "clickTrackingParams": "CJUCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_lNBwD7dVk6l7gsmE1GOgw53IlrxMDFIS0" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CJUCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJYCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CJUCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJMCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CJQCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CJQCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJMCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lNBwD7dVk6l7gsmE1GOgw53IlrxMDFIS0" + } + } + }, + "trackingParams": "CJMCEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJECEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CJICEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CJICEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CJECEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJACEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xOQndEN2RWazZsN2dzbUUxR09ndzUzSWxyeE1ERklTMA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CJACEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CI8CEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJOufvwSwoeI0RNPlkAXCsmfmVddhGKiyImhoA3yRlnZnJxHf2CifLfNujc4wB23Qat3Wj18ldkqywVUMANn2KH9YmBeUx8Haols1XDy-yZXqll2sB3GNXz8fbQef5ywCHtErDQ" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CI8CEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIjpMrz_fIUoOTXYg4RgH9aOczsfxvkcGeh7JinepqlbQ1V5rgLG9PoYH6c1RFXSTwuNVx3I8ASKADv785vUTTyWQ5gAjLBard7ieMecg0DbCbgLqCtqHX1KDIdIFCw3je8qkhz" + } + }, + "trackingParams": "CI8CEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CI4CEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CI0CEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lNBwD7dVk6l7gsmE1GOgw53IlrxMDFIS0" + } + }, + "trackingParams": "CI0CEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 2566914048, + "activeBackgroundColor": 4278190080, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 1308622847, + "activeScaleFactor": 1.2, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Bleib in der Schule (Live in Berlin)" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Bleib in der Schule (Live in Berlin)" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CIwCEKHtAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ] + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/dV3PCeAdRQgLOuSUdIfA4q8jVgNwSoTceeK085ZOCzEe6YBm5c9gNIvO8wGM_K2NKpip-8-PxJtWEPJo=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/dV3PCeAdRQgLOuSUdIfA4q8jVgNwSoTceeK085ZOCzEe6YBm5c9gNIvO8wGM_K2NKpip-8-PxJtWEPJo=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIoCEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Bleib in der Schule (Live at Wacken 2019)", + "navigationEndpoint": { + "clickTrackingParams": "CPsBEKCzAhgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_kLvmX2AzYBL", + "params": "ggMrGilPTEFLNXV5X210N2hnM3JZeFVhUmxmZ3NvRGVYa1FGdHdaVVZiX2EwOA%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CPsBEKCzAhgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "MPREb_kLvmX2AzYBL", + "params": "ggMrGilPTEFLNXV5X210N2hnM3JZeFVhUmxmZ3NvRGVYa1FGdHdaVVZiX2EwOA%3D%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CPsBEKCzAhgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIkCEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mt7hg3rYxUaRlfgsoDeXkQFtwZUVb_a08", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CIkCEJrzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIgCEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_mt7hg3rYxUaRlfgsoDeXkQFtwZUVb_a08", + "params": "wAEB" + } + }, + "trackingParams": "CIgCEJvzBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIYCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_mt7hg3rYxUaRlfgsoDeXkQFtwZUVb_a08", + "onEmptyQueue": { + "clickTrackingParams": "CIYCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_mt7hg3rYxUaRlfgsoDeXkQFtwZUVb_a08" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CIYCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CIcCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CIYCEL7uBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIQCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_mt7hg3rYxUaRlfgsoDeXkQFtwZUVb_a08", + "onEmptyQueue": { + "clickTrackingParams": "CIQCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "playlistId": "OLAK5uy_mt7hg3rYxUaRlfgsoDeXkQFtwZUVb_a08" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CIQCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CIUCEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CIQCEPvvBRgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIICEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Save favorites to your library after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CIMCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CIMCEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIICEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mt7hg3rYxUaRlfgsoDeXkQFtwZUVb_a08" + } + } + }, + "trackingParams": "CIICEIT_BRgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIACEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CIECEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CIECEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CIACEMOUBhgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CP8BEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X210N2hnM3JZeFVhUmxmZ3NvRGVYa1FGdHdaVVZiX2EwOA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CP8BEJH7BRgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CP4BEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJ0aasNIxCX1e_VD-6csdGjic4OI1j-1in9bDBLBX8BT22i08WhekZ9ChphMER3gcBSoBea1WS9Yj0FLl_Gwzgy2DNxwrx-DU535bN9IV9ti3KkappOyY1ndTYJa4D5T4VKuqkv" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CP4BEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKxMqnkBqYispy21nYp0qGN4VdqEGeIqOXouYDK7J9JXK_VpQQ2yUHvq2GMfCrh75OtwHW5V8-F65W5f_7Lp5fBvnNRvxwhm_SKCccarmYjjT8aBKe1gSFBZum3ZgCx1U5197Jj" + } + }, + "trackingParams": "CP4BEP7eChgHIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CP0BEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CPwBEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mt7hg3rYxUaRlfgsoDeXkQFtwZUVb_a08" + } + }, + "trackingParams": "CPwBEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 2566914048, + "activeBackgroundColor": 4278190080, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 1308622847, + "activeScaleFactor": 1.2, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Bleib in der Schule (Live at Wacken 2019)" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Bleib in der Schule (Live at Wacken 2019)" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_HOVER" + } + } + } + } + ], + "trackingParams": "CPoBEKGzAhgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "itemSize": "COLLECTION_STYLE_ITEM_SIZE_MEDIUM" + } + }, + { + "musicCarouselShelfRenderer": { + "header": { + "musicCarouselShelfBasicHeaderRenderer": { + "title": { + "runs": [ + { + "text": "Videos", + "navigationEndpoint": { + "clickTrackingParams": "CPgBEIi8BCITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "browseEndpoint": { + "browseId": "VLOLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "params": "ggMCCAI%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + } + } + } + } + ] + }, + "accessibilityData": { + "accessibilityData": { + "label": "Videos" + } + }, + "headerStyle": "MUSIC_CAROUSEL_SHELF_BASIC_HEADER_STYLE_DISPLAY_TWO", + "moreContentButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "text": { + "runs": [ + { + "text": "More" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CPkBEOvLBSITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "browseEndpoint": { + "browseId": "VLOLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "params": "ggMCCAI%3D", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "trackingParams": "CPkBEOvLBSITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "accessibilityData": { + "accessibilityData": { + "label": "More" + } + } + } + }, + "trackingParams": "CPgBEIi8BCITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "contents": [ + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/0mcING0Zdis/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k5JY0WRBeKNaotfUYrpbObz1mceA", + "width": 400, + "height": 225 + }, + { + "url": "https://i.ytimg.com/vi/0mcING0Zdis/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3kinVfBJUF-SDFagYKazKmS_ad75w", + "width": 800, + "height": 450 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CPcBEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "title": { + "runs": [ + { + "text": "Trailerpark - TP4L (Live Abschiedskonzert)" + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "COkBEKCzAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "13K views" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "COkBEKCzAhgAIhMIubrd8LfxigMVrwRzCR2H8SODSKvs5ejGhsKz0gGaAQQQw9gC", + "watchEndpoint": { + "videoId": "0mcING0Zdis", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 0, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "COkBEKCzAhgAIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPYBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "0mcING0Zdis", + "playlistId": "RDAMVM0mcING0Zdis", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0wbWNJTkcwWmRpcw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CPYBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPQBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "0mcING0Zdis", + "onEmptyQueue": { + "clickTrackingParams": "CPQBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "0mcING0Zdis" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CPQBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CPUBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CPQBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPIBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "0mcING0Zdis", + "onEmptyQueue": { + "clickTrackingParams": "CPIBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "0mcING0Zdis" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CPIBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CPMBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CPIBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPABEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CPEBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CPEBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CPABEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO4BEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CO8BEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CO8BEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CO4BEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO0BEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "CgswbWNJTkcwWmRpcw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CO0BEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COwBEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKe9GLTpYpZy1ROu6aSEktKICcb9vEygASW86Xcpzi8rcumfxcNL_7ZMNTAugDJuQCZU2M9qrT_va3EWuCIeJfEtbfmL50zWypCqQ1xuvBYYMxwcms" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COwBEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJIvZZsqWlM0F2uy6u1Mo7ovoGd-fbXn-3F2o21DmInZ2nCtEknjE_wK8pwDfRzU1gCsAwJl6sgLQIrdNbH9S6IjWMMcNNtM_cf7FC_e0wogxfMuz0" + } + }, + "trackingParams": "COwBEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "COsBEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "COoBEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchEndpoint": { + "videoId": "0mcING0Zdis", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 0, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "COoBEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Trailerpark - TP4L (Live Abschiedskonzert)" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Trailerpark - TP4L (Live Abschiedskonzert)" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/EAC-2ttHCyk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nlrgFTz_pwbBwXFbaASgklpX78vA", + "width": 400, + "height": 225 + }, + { + "url": "https://i.ytimg.com/vi/EAC-2ttHCyk/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nHzhiahqhmIkZ0eUXD09BGak2MHQ", + "width": 800, + "height": 450 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "COgBEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "title": { + "runs": [ + { + "text": "Fledermausland (Bonus Track)" + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CNoBEKCzAhgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "25M views" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CNoBEKCzAhgBIhMIubrd8LfxigMVrwRzCR2H8SODSKmWnNqt26-AEJoBBBDD2AI=", + "watchEndpoint": { + "videoId": "EAC-2ttHCyk", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 1, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CNoBEKCzAhgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "COcBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "EAC-2ttHCyk", + "playlistId": "RDAMVMEAC-2ttHCyk", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1FQUMtMnR0SEN5aw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "COcBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COUBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "EAC-2ttHCyk", + "onEmptyQueue": { + "clickTrackingParams": "COUBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "EAC-2ttHCyk" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "COUBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "COYBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "COUBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COMBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "EAC-2ttHCyk", + "onEmptyQueue": { + "clickTrackingParams": "COMBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "EAC-2ttHCyk" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "COMBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "COQBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "COMBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COEBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "COIBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "COIBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "COEBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CN8BEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "COABEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "COABEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CN8BEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CN4BEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtFQUMtMnR0SEN5aw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CN4BEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CN0BEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJDZS2D-8dTyfQ8sWjiXBdFq-WVJAlqd2GXnLb8VLRfGLKj7afImGbX65EwKcC67Qy1pvJW-ehyrSAaTUru1F8SJ1YTOzcEADLvAALmvbF_h1rQlGU" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CN0BEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIHm9tSBkD2oKMKby3-rdXAJePrNmu5q1diR5PiG6Lml4McfQoCSJtqs2sHu9mZB8Vvl7Co8zYznHRbwqP6dAnUqaDDsfYBb2PnmQ9k9ztXCZ1qCtw" + } + }, + "trackingParams": "CN0BEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CNwBEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CNsBEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchEndpoint": { + "videoId": "EAC-2ttHCyk", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 1, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CNsBEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Fledermausland (Bonus Track)" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Fledermausland (Bonus Track)" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/Bret5VaVzJk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nFa4qUxqJzCtxr-zPdzP15Ixvu-A", + "width": 400, + "height": 225 + }, + { + "url": "https://i.ytimg.com/vi/Bret5VaVzJk/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3l1hGZVAWUwaJQbZXmbRpcbsMdTeQ", + "width": 800, + "height": 450 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CNkBEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "title": { + "runs": [ + { + "text": "New Kids on the Blech (Bonus Track)" + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CMsBEKCzAhgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "6.9M views" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CMsBEKCzAhgCIhMIubrd8LfxigMVrwRzCR2H8SODSJmZ17TVvOvbBpoBBBDD2AI=", + "watchEndpoint": { + "videoId": "Bret5VaVzJk", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 2, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CMsBEKCzAhgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNgBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "Bret5VaVzJk", + "playlistId": "RDAMVMBret5VaVzJk", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1CcmV0NVZhVnpKaw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CNgBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNYBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Bret5VaVzJk", + "onEmptyQueue": { + "clickTrackingParams": "CNYBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "Bret5VaVzJk" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CNYBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CNcBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CNYBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNQBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Bret5VaVzJk", + "onEmptyQueue": { + "clickTrackingParams": "CNQBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "Bret5VaVzJk" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CNQBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CNUBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CNQBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNIBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CNMBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CNMBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CNIBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNABEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CNEBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CNEBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CNABEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM8BEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtCcmV0NVZhVnpKaw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CM8BEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CM4BEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKyy-BFgCfukLDIOUb9DYyFnRCIGmSU60hRU99MTRBhTWDHi22oTFtniiGAGEYtrxjGQiN52tsCmN0mRdUeZkBOZ-SUQfVEvLbyTyt0rzlSMEIV-gI" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CM4BEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKSlm9bYD8KOfYgemhVqfssKW0FoN1mul7Gg3V1aGEsiQtWGehDE4Za4XDyRwbEC3znXeLeUCgpCxwHAfD97qtm4k5ygqddD2eA3kup5QSJ9_Yo8mk" + } + }, + "trackingParams": "CM4BEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CM0BEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CMwBEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchEndpoint": { + "videoId": "Bret5VaVzJk", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 2, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CMwBEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play New Kids on the Blech (Bonus Track)" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause New Kids on the Blech (Bonus Track)" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/EqP1_IcjW-s/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lIeltSLpA_XwwZzdJfHnNZ0vqBzA", + "width": 400, + "height": 225 + }, + { + "url": "https://i.ytimg.com/vi/EqP1_IcjW-s/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nfiByY3RfcFYGfg92C5Vlkar0GJA", + "width": 800, + "height": 450 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CMoBEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "title": { + "runs": [ + { + "text": "Pimpulsiv feat. DNP, Sudden & Dana - Wohnwagensiedlung" + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CLwBEKCzAhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "7.1M views" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CLwBEKCzAhgDIhMIubrd8LfxigMVrwRzCR2H8SODSOu3jbnIv_3REpoBBBDD2AI=", + "watchEndpoint": { + "videoId": "EqP1_IcjW-s", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 3, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CLwBEKCzAhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMkBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "EqP1_IcjW-s", + "playlistId": "RDAMVMEqP1_IcjW-s", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1FcVAxX0ljalctcw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CMkBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "EqP1_IcjW-s", + "onEmptyQueue": { + "clickTrackingParams": "CMcBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "EqP1_IcjW-s" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CMcBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CMgBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CMcBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMUBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "EqP1_IcjW-s", + "onEmptyQueue": { + "clickTrackingParams": "CMUBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "EqP1_IcjW-s" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CMUBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CMYBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CMUBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMMBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CMQBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CMQBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CMMBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMEBEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CMIBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CMIBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CMEBEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMABEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtFcVAxX0ljalctcw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CMABEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CL8BEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLdnQjxVPEBOjmLPpk-Ue2jwMg7e7Pm8bEM9Ul2-yCThvAo2Zivo1xuLHHApHf3OJ_fxFoag2d9qlAsZT8GjrViBpFzYTQavzYGhvtjYaIX5yL7ddw" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CL8BEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLYWIWfPLdA6Qcj4FBR12YkmpazWtlxpHpzBcTY_VbbG8MovokC2ZvqPkYvOinKuYt8BKWuH36jU4sFlC8D1xO6fQK2VlHEh-LXTGA6jJXV1aWS3Ek" + } + }, + "trackingParams": "CL8BEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CL4BEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CL0BEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchEndpoint": { + "videoId": "EqP1_IcjW-s", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 3, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CL0BEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Pimpulsiv feat. DNP, Sudden & Dana - Wohnwagensiedlung" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Pimpulsiv feat. DNP, Sudden & Dana - Wohnwagensiedlung" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/3EoF9Of98e4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kvWHX-5mYREKEkf-CM3TLfjrLjlw", + "width": 400, + "height": 225 + }, + { + "url": "https://i.ytimg.com/vi/3EoF9Of98e4/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lItzsg6wamh_xSdpoZxTWOHHLS-g", + "width": 800, + "height": 450 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CLsBEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "title": { + "runs": [ + { + "text": "Armut treibt Jugendliche in die Popmusik" + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CK0BEKCzAhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "5.4M views" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CK0BEKCzAhgEIhMIubrd8LfxigMVrwRzCR2H8SODSO7j97_OvoGl3AGaAQQQw9gC", + "watchEndpoint": { + "videoId": "3EoF9Of98e4", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 4, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CK0BEKCzAhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLoBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "3EoF9Of98e4", + "playlistId": "RDAMVM3EoF9Of98e4", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0zRW9GOU9mOThlNA%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CLoBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLgBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "3EoF9Of98e4", + "onEmptyQueue": { + "clickTrackingParams": "CLgBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "3EoF9Of98e4" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CLgBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CLkBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CLgBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLYBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "3EoF9Of98e4", + "onEmptyQueue": { + "clickTrackingParams": "CLYBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "3EoF9Of98e4" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CLYBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CLcBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CLYBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLQBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CLUBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CLUBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CLQBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLIBEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CLMBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CLMBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CLIBEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLEBEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "CgszRW9GOU9mOThlNA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CLEBEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLABEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIWKknw0mOykCOgttw268EFotuxeAqvz10avsm6vSjlJHM9L2zxlTziocRKfStCmLqyHflmEgPRLjWLe-bl6JnGwcdeUhuQ_m27yggTe2dosolim14" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLABEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJ1Fz6QT3aKJtO2dawwSGzZfilxuU1gy3Es6yzl_1ICMdLUFHf5EHTqBE_qBTIAyFsXcD0vS8yKyhFdz8FvJj1OLJ_MZVL-Jd5xJUID5qzmGK5fD_o" + } + }, + "trackingParams": "CLABEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CK8BEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CK4BEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchEndpoint": { + "videoId": "3EoF9Of98e4", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 4, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CK4BEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Armut treibt Jugendliche in die Popmusik" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Armut treibt Jugendliche in die Popmusik" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/qr0eN_uIcTs/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nspTbohIYzDFOjTg90KEmKecVVvg", + "width": 400, + "height": 225 + }, + { + "url": "https://i.ytimg.com/vi/qr0eN_uIcTs/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3n0SIeq4dPTPvbGv4STsTWNt24cig", + "width": 800, + "height": 450 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKwBEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "title": { + "runs": [ + { + "text": "Bleib in der Schule (Live in Berlin)" + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CJ4BEKCzAhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "56K views" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ4BEKCzAhgFIhMIubrd8LfxigMVrwRzCR2H8SODSLviodz_xsfeqgGaAQQQw9gC", + "watchEndpoint": { + "videoId": "qr0eN_uIcTs", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 5, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CJ4BEKCzAhgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKsBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "qr0eN_uIcTs", + "playlistId": "RDAMVMqr0eN_uIcTs", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1xcjBlTl91SWNUcw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CKsBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "qr0eN_uIcTs", + "onEmptyQueue": { + "clickTrackingParams": "CKkBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "qr0eN_uIcTs" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CKkBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CKoBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CKkBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "qr0eN_uIcTs", + "onEmptyQueue": { + "clickTrackingParams": "CKcBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "qr0eN_uIcTs" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CKcBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CKgBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CKcBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKUBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CKYBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CKYBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CKUBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKMBEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CKQBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CKQBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CKMBEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKIBEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtxcjBlTl91SWNUcw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CKIBEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKEBEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJo63NQziSW2mNaHX9N0pUiv8H-5znzXnCZBNiyaYZvlq-K31e40lO9XEspb1cBoTY1qj5e-gFG37GKIwRrf24TknUkczXV-Jd9DsoldrHixAKBn8A" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKEBEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK8w96n4dWatAGB2zww8iEeDEVZfn4TM5aHs7vdO7GLPcamgXrnAuPr2Xf3ZKQZskr9_aGep3gXuH1O7Czseg03vu_eV4P2peYiot4ezjF1ZP_ad5A" + } + }, + "trackingParams": "CKEBEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CKABEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CJ8BEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchEndpoint": { + "videoId": "qr0eN_uIcTs", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 5, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CJ8BEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Bleib in der Schule (Live in Berlin)" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Bleib in der Schule (Live in Berlin)" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/McgSyiug6XE/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nxe3Xz99BVFg-VOra20J682me5JQ", + "width": 400, + "height": 225 + }, + { + "url": "https://i.ytimg.com/vi/McgSyiug6XE/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lSGwKx_hnqYA-CkoLHapr1PiyX6w", + "width": 800, + "height": 450 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJ0BEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "title": { + "runs": [ + { + "text": "We Are Family" + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CI8BEKCzAhgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " & " + }, + { + "text": "Timi Hendrix", + "navigationEndpoint": { + "clickTrackingParams": "CI8BEKCzAhgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UC5HSrFHr6lMzwAyGjlClm0A", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "1.8M views" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CI8BEKCzAhgGIhMIubrd8LfxigMVrwRzCR2H8SODSPHSg92i2YTkMZoBBBDD2AI=", + "watchEndpoint": { + "videoId": "McgSyiug6XE", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 6, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CI8BEKCzAhgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJwBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "McgSyiug6XE", + "playlistId": "RDAMVMMcgSyiug6XE", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1NY2dTeWl1ZzZYRQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CJwBEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJoBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "McgSyiug6XE", + "onEmptyQueue": { + "clickTrackingParams": "CJoBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "McgSyiug6XE" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CJoBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CJsBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CJoBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJgBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "McgSyiug6XE", + "onEmptyQueue": { + "clickTrackingParams": "CJgBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "McgSyiug6XE" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CJgBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CJkBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CJgBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJYBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CJcBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CJcBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CJYBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJQBEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CJUBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CJUBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CJQBEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJMBEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtNY2dTeWl1ZzZYRQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CJMBEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJIBEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJ-F2hDqJjdSK7IoSsxveaMhI7rkZ9GI6IkHbwtVVFefD1MlhMQZcOG0b7J-QMmwt5m9S-kaNiUvSmzOpT3CsdNJzXNEx0GAnj3OapQRiskqEZ2Mf0" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJIBEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLYDG5NjICWVPisJj4f4-CuKYbfvbSC_I5CzfQ2HpBJLEcUBzZsPvHEK_ZzCF1mlPyNN7xki1wJGOTalgIllKhOtnAhAc_6jcsC8Dm9u9Y73p41bWA" + } + }, + "trackingParams": "CJIBEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CJEBEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CJABEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchEndpoint": { + "videoId": "McgSyiug6XE", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 6, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CJABEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play We Are Family" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause We Are Family" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/ioZxvVhjFs8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3ltQmZbH1DF9nmho5HLGehqLSGzTw", + "width": 400, + "height": 225 + }, + { + "url": "https://i.ytimg.com/vi/ioZxvVhjFs8/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lsluKPeCNxP7QoOCc24tZy4jsn7Q", + "width": 800, + "height": 450 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CI4BEIS_AiITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "title": { + "runs": [ + { + "text": "Schlechter Tag" + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CIABEKCzAhgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "7.1M views" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CIABEKCzAhgHIhMIubrd8LfxigMVrwRzCR2H8SODSM-tjMPVt5zDigGaAQQQw9gC", + "watchEndpoint": { + "videoId": "ioZxvVhjFs8", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 7, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CIABEKCzAhgHIhMIubrd8LfxigMVrwRzCR2H8SOD", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI0BEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SODmgEEEMPYAg==", + "watchEndpoint": { + "videoId": "ioZxvVhjFs8", + "playlistId": "RDAMVMioZxvVhjFs8", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1pb1p4dlZoakZzOA%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CI0BEJvzBRgAIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIsBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "ioZxvVhjFs8", + "onEmptyQueue": { + "clickTrackingParams": "CIsBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "ioZxvVhjFs8" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CIsBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CIwBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CIsBEL7uBRgBIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "ioZxvVhjFs8", + "onEmptyQueue": { + "clickTrackingParams": "CIkBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "ioZxvVhjFs8" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CIkBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CIoBEMrHAyITCLm63fC38YoDFa8Ecwkdh_Ejgw==" + } + } + } + } + ] + } + }, + "trackingParams": "CIkBEPvvBRgCIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIcBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CIgBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CIgBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CIcBEIyfBhgDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIUBEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CIYBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CIYBEPBbIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + } + }, + "trackingParams": "CIUBEMOUBhgEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIQBEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgtpb1p4dlZoakZzOA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CIQBEJH7BRgFIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIMBEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK6iCVC0wDpxXbT9wkR7YJeLRpnsIphhCJzpqV7FlQ_zvlfyREwBo4zQ8zjltgkM9FENi-RBjfrXA-7FLVVDjlP4B2qBQ5qyXNdk9z5uxCUeWaUn6k" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIMBEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJlMjuTADAy1k4y7_szydlANnkC0dk7zz1-jhAQjr8o1Zu9gyYle_3FgWsvucXwLzGx5BaCrf_n0IedrlqXG7wkvldX4_6L-KH8wnMAFmgxyTFz7UY" + } + }, + "trackingParams": "CIMBEP7eChgGIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + ], + "trackingParams": "CIIBEKc7IhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CIEBEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "watchEndpoint": { + "videoId": "ioZxvVhjFs8", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 7, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CIEBEMjeAiITCLm63fC38YoDFa8Ecwkdh_Ejgw==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Schlechter Tag" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Schlechter Tag" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/3jyZJEcomkw/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k46-OFTCnpEJry_PNst1C11FPA1A", + "width": 400, + "height": 225 + }, + { + "url": "https://i.ytimg.com/vi/3jyZJEcomkw/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3kN1ryaQSy4M_Y9bQGh9S-tbYGqdg", + "width": 800, + "height": 450 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CH8QhL8CIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "title": { + "runs": [ + { + "text": "Timi Hendrix feat. Alligatoah - Schlaflos in Guantanamo ► prod. by Mantra" + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CHEQoLMCGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "1.5M views" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CHEQoLMCGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4NIzLSiucSkpp7eAZoBBBDD2AI=", + "watchEndpoint": { + "videoId": "3jyZJEcomkw", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 8, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CHEQoLMCGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CH4Qm_MFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4OaAQQQw9gC", + "watchEndpoint": { + "videoId": "3jyZJEcomkw", + "playlistId": "RDAMVM3jyZJEcomkw", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0zanlaSkVjb21rdw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CH4Qm_MFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHwQvu4FGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "3jyZJEcomkw", + "onEmptyQueue": { + "clickTrackingParams": "CHwQvu4FGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchEndpoint": { + "videoId": "3jyZJEcomkw" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CHwQvu4FGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CH0QyscDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + ] + } + }, + "trackingParams": "CHwQvu4FGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHoQ--8FGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "3jyZJEcomkw", + "onEmptyQueue": { + "clickTrackingParams": "CHoQ--8FGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchEndpoint": { + "videoId": "3jyZJEcomkw" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CHoQ--8FGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CHsQyscDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + ] + } + }, + "trackingParams": "CHoQ--8FGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CHgQjJ8GGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CHkQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CHkQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CHgQjJ8GGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHYQw5QGGAQiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CHcQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CHcQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "trackingParams": "CHYQw5QGGAQiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHUQkfsFGAUiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgszanlaSkVjb21rdw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CHUQkfsFGAUiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CHQQ_t4KGAYiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJJHsOgqTR4ioQ8y9dZm3luiZYn2nhYDeaMmrmTmt9PyqIDlOB2A7wrohnpm2z0u2A9TQKsqDMQtd2Lh_ZUlY-ZsRrTsmCdenZx7ebDYnjgAnqrNeY" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CHQQ_t4KGAYiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJNNyN04VoDbztqeaYHiKyFHzwwOKoFuckTL3vs7eIb54bal07S95h0gLbGcYzy9px1iWTgRxTsa62a-h_4z5rjCKPD8S3oFb-IU6NvvL5olWgEFMw" + } + }, + "trackingParams": "CHQQ_t4KGAYiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ], + "trackingParams": "CHMQpzsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CHIQyN4CIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "3jyZJEcomkw", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 8, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CHIQyN4CIhMIubrd8LfxigMVrwRzCR2H8SOD", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Timi Hendrix feat. Alligatoah - Schlaflos in Guantanamo ► prod. by Mantra" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Timi Hendrix feat. Alligatoah - Schlaflos in Guantanamo ► prod. by Mantra" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/9oM-cflYhGk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3m6MksfA1NWyIMv6cTk03J21pA0NQ", + "width": 400, + "height": 225 + }, + { + "url": "https://i.ytimg.com/vi/9oM-cflYhGk/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3n7oy_XobzQBkUVxEx08iSKNPIB0Q", + "width": 800, + "height": 450 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CHAQhL8CIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "title": { + "runs": [ + { + "text": "Timi Hendrix - Kaiser von China (Official Video) 🐲" + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Trailerpark", + "navigationEndpoint": { + "clickTrackingParams": "CGIQoLMCGAkiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCOR4_bSVIXPsGa4BbCSt60Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "1.1M views" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CGIQoLMCGAkiEwi5ut3wt_GKAxWvBHMJHYfxI4NI6Yjiyp_Oz8H2AZoBBBDD2AI=", + "watchEndpoint": { + "videoId": "9oM-cflYhGk", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 9, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CGIQoLMCGAkiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CG8Qm_MFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4OaAQQQw9gC", + "watchEndpoint": { + "videoId": "9oM-cflYhGk", + "playlistId": "RDAMVM9oM-cflYhGk", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk05b00tY2ZsWWhHaw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CG8Qm_MFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CG0Qvu4FGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "9oM-cflYhGk", + "onEmptyQueue": { + "clickTrackingParams": "CG0Qvu4FGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchEndpoint": { + "videoId": "9oM-cflYhGk" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CG0Qvu4FGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CG4QyscDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + ] + } + }, + "trackingParams": "CG0Qvu4FGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGsQ--8FGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "9oM-cflYhGk", + "onEmptyQueue": { + "clickTrackingParams": "CGsQ--8FGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchEndpoint": { + "videoId": "9oM-cflYhGk" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CGsQ--8FGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CGwQyscDIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + } + } + } + ] + } + }, + "trackingParams": "CGsQ--8FGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CGkQjJ8GGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CGoQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CGoQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CGkQjJ8GGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGcQw5QGGAQiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Save this for later" + } + ] + }, + "content": { + "runs": [ + { + "text": "Make playlists and share them after signing in" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CGgQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CGgQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "trackingParams": "CGcQw5QGGAQiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGYQkfsFGAUiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgs5b00tY2ZsWWhHaw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CGYQkfsFGAUiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Pin to Listen again" + } + ] + }, + "defaultIcon": { + "iconType": "KEEP" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CGUQ_t4KGAYiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJgxOAsFSs5movzyIiOT-wO7AaKjhz0GW2VKqy7B0P7XvwCEjq8X5ooMfOXhBaB3CwkwrsbnCLj-Dlrha7zwwViEO1A5ARVNAn8oTy66CXhSztkBVw" + } + }, + "toggledText": { + "runs": [ + { + "text": "Unpin from Listen again" + } + ] + }, + "toggledIcon": { + "iconType": "KEEP_OFF" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CGUQ_t4KGAYiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK-KbCpITQUCIkP5FO1OWJ34Dc3DE6-d5MYKUsM7sghu5lAKfWFq7-U-ZgYOTLAU9i_Ud-odpBnk_-phJIz0XH22ckK8s0AGovoQa1tgySlKLNyA7w" + } + }, + "trackingParams": "CGUQ_t4KGAYiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ], + "trackingParams": "CGQQpzsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CGMQyN4CIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "9oM-cflYhGk", + "playlistId": "OLAK5uy_mqbgE6T9uvusUWrAxJGiImf4_P4dM7IvQ", + "index": 9, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21xYmdFNlQ5dXZ1c1VXckF4SkdpSW1mNF9QNGRNN0l2UQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CGMQyN4CIhMIubrd8LfxigMVrwRzCR2H8SOD", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Timi Hendrix - Kaiser von China (Official Video) 🐲" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Timi Hendrix - Kaiser von China (Official Video) 🐲" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + } + } + } + ], + "trackingParams": "CGEQobMCGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "itemSize": "COLLECTION_STYLE_ITEM_SIZE_MEDIUM" + } + }, + { + "musicCarouselShelfRenderer": { + "header": { + "musicCarouselShelfBasicHeaderRenderer": { + "title": { + "runs": [ + { + "text": "Fans might also like" + } + ] + }, + "accessibilityData": { + "accessibilityData": { + "label": "Fans might also like" + } + }, + "headerStyle": "MUSIC_CAROUSEL_SHELF_BASIC_HEADER_STYLE_DISPLAY_TWO", + "trackingParams": "CGAQiLwEIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "contents": [ + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/yPjiQ4ZVblOXbft1Yo2jd3uJXKJDuSWOP1MCAG6kTIwYqTWsOKRbZBnPhW4gjzvvVll7yVtjbu3e3Q=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/yPjiQ4ZVblOXbft1Yo2jd3uJXKJDuSWOP1MCAG6kTIwYqTWsOKRbZBnPhW4gjzvvVll7yVtjbu3e3Q=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CF8QhL8CIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "257ers", + "navigationEndpoint": { + "clickTrackingParams": "CFgQoLMCGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCVRREKn7V1Cb8qvf43dwZ6w", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "67.3K subscribers" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CFgQoLMCGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCVRREKn7V1Cb8qvf43dwZ6w", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CFgQoLMCGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CF4QmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDAODO8VJUKOA_cryeATvi6KLw", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CF4QmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CF0Qm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDEMDO8VJUKOA_cryeATvi6KLw", + "params": "wAEB" + } + }, + "trackingParams": "CF0Qm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CFsQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CFwQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CFwQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "trackingParams": "CFsQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFoQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ1ZSUkVLbjdWMUNiOHF2ZjQzZHdaNnc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CFoQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ], + "trackingParams": "CFkQpzsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/ffIVPiIldrcfp9UEoAbDid6fnAOajn_kgI4OisFoFhK28rk3HVdpYfe2h27T3d_hHfNR943PPSOhHw=w226-h226-p-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/ffIVPiIldrcfp9UEoAbDid6fnAOajn_kgI4OisFoFhK28rk3HVdpYfe2h27T3d_hHfNR943PPSOhHw=w544-h544-p-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CFcQhL8CIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Alligatoah", + "navigationEndpoint": { + "clickTrackingParams": "CFAQoLMCGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCuNyvmBfTzQZmWI2rsVX3QQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "779K subscribers" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CFAQoLMCGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCuNyvmBfTzQZmWI2rsVX3QQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CFAQoLMCGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFYQmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDAOrDx6tt3Bs4LB3ne59Nu8Fw", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CFYQmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFUQm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDEMrDx6tt3Bs4LB3ne59Nu8Fw", + "params": "wAEB" + } + }, + "trackingParams": "CFUQm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CFMQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CFQQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CFQQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "trackingParams": "CFMQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFIQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ3VOeXZtQmZUelFabVdJMnJzVlgzUVE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CFIQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ], + "trackingParams": "CFEQpzsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/TEdMt2cE-UCbnjm6AJtyasWv9-a3LFpdmh2X6w3iBwIMATHUtYIQ_F0cJ30vL5m6uJkqL3qFvNYLpYrN=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/TEdMt2cE-UCbnjm6AJtyasWv9-a3LFpdmh2X6w3iBwIMATHUtYIQ_F0cJ30vL5m6uJkqL3qFvNYLpYrN=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CE8QhL8CIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Sudden", + "navigationEndpoint": { + "clickTrackingParams": "CEgQoLMCGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCO04sIqN7F4ff2-1ycVZSgQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "3.66K subscribers" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CEgQoLMCGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCO04sIqN7F4ff2-1ycVZSgQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CEgQoLMCGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CE4QmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDAOnngmNSSgaVgUNIMI9c_5fw", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CE4QmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CE0Qm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDEMnngmNSSgaVgUNIMI9c_5fw", + "params": "wAEB" + } + }, + "trackingParams": "CE0Qm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CEsQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CEwQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CEwQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "trackingParams": "CEsQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEoQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ08wNHNJcU43RjRmZjItMXljVlpTZ1E%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CEoQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ], + "trackingParams": "CEkQpzsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/PVaIRDAgRRyLMuFp7OTS7h3HEMoY9ejKxt7GLgfgi6aFt3bP-Edb1YU5t1IlGN0Z-qcrb86qspETNoI=w226-h226-p-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/PVaIRDAgRRyLMuFp7OTS7h3HEMoY9ejKxt7GLgfgi6aFt3bP-Edb1YU5t1IlGN0Z-qcrb86qspETNoI=w544-h544-p-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CEcQhL8CIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "K.I.Z", + "navigationEndpoint": { + "clickTrackingParams": "CEAQoLMCGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UC5k_3LEPSGchsGEGpqoF6dg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "522K subscribers" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CEAQoLMCGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UC5k_3LEPSGchsGEGpqoF6dg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CEAQoLMCGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEYQmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDAOPZvMxTyxV_IZlHwvN09HGw", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CEYQmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEUQm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDEMPZvMxTyxV_IZlHwvN09HGw", + "params": "wAEB" + } + }, + "trackingParams": "CEUQm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CEMQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CEQQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CEQQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "trackingParams": "CEMQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEIQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQzVrXzNMRVBTR2Noc0dFR3Bxb0Y2ZGc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CEIQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ], + "trackingParams": "CEEQpzsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/cofqKPsHr5dzuLexkKAYQF3vVMkKTT2FuZgIMXs6XIO3J8diK29qqfKQkqrga8NOCmwVl7x-w4z3mQ=w226-h226-p-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/cofqKPsHr5dzuLexkKAYQF3vVMkKTT2FuZgIMXs6XIO3J8diK29qqfKQkqrga8NOCmwVl7x-w4z3mQ=w544-h544-p-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CD8QhL8CIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "FiNCH", + "navigationEndpoint": { + "clickTrackingParams": "CDgQoLMCGAQiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCG8K_22LRSRwqhoJXBWGmbA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "533K subscribers" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CDgQoLMCGAQiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCG8K_22LRSRwqhoJXBWGmbA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CDgQoLMCGAQiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CD4QmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDAO85leopxykjryzrBTksNNeA", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CD4QmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CD0Qm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDEM85leopxykjryzrBTksNNeA", + "params": "wAEB" + } + }, + "trackingParams": "CD0Qm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CDsQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CDwQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CDwQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "trackingParams": "CDsQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDoQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ0c4S18yMkxSU1J3cWhvSlhCV0dtYkE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CDoQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ], + "trackingParams": "CDkQpzsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/1yi83YgKDBSQ0rgsA2GuZRa0rBABPR2BH41DsuCfGMRmLdF9oR7vv7T6QGLbhNP8FfX6qVHUQci4YM8=w226-h226-p-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/1yi83YgKDBSQ0rgsA2GuZRa0rBABPR2BH41DsuCfGMRmLdF9oR7vv7T6QGLbhNP8FfX6qVHUQci4YM8=w544-h544-p-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CDcQhL8CIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Timi Hendrix", + "navigationEndpoint": { + "clickTrackingParams": "CDAQoLMCGAUiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UC5HSrFHr6lMzwAyGjlClm0A", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "6.41K subscribers" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CDAQoLMCGAUiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UC5HSrFHr6lMzwAyGjlClm0A", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CDAQoLMCGAUiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDYQmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDAOfPqG9PYe5xUikT8TrJOH0A", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CDYQmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDUQm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDEMfPqG9PYe5xUikT8TrJOH0A", + "params": "wAEB" + } + }, + "trackingParams": "CDUQm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CDMQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CDQQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CDQQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "trackingParams": "CDMQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDIQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQzVIU3JGSHI2bE16d0F5R2psQ2xtMEE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CDIQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ], + "trackingParams": "CDEQpzsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/QXuirXSQsdO1KUZCz-ZX-kRVSorZxIUC4YrxQD0IeSr1mY-42VwvAjf4TTownRVzm-02-U8kLM3VuETf9w=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/QXuirXSQsdO1KUZCz-ZX-kRVSorZxIUC4YrxQD0IeSr1mY-42VwvAjf4TTownRVzm-02-U8kLM3VuETf9w=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CC8QhL8CIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Pimpulsiv", + "navigationEndpoint": { + "clickTrackingParams": "CCgQoLMCGAYiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UC9izv9vxcTVKA1IibcGTrNA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "985 subscribers" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CCgQoLMCGAYiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UC9izv9vxcTVKA1IibcGTrNA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CCgQoLMCGAYiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CC4QmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDAOeDmIcHDElpzFtY0NDvU5Ag", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CC4QmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CC0Qm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDEMeDmIcHDElpzFtY0NDvU5Ag", + "params": "wAEB" + } + }, + "trackingParams": "CC0Qm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CCsQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CCwQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CCwQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "trackingParams": "CCsQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCoQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQzlpenY5dnhjVFZLQTFJaWJjR1RyTkE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CCoQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ], + "trackingParams": "CCkQpzsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/HZpnexwxNS5FkIrpz6hdHZuNhBS-GKjs0C9NU8nDSTmHFlPaviqxV-dDLS_ubSEbpEvu0m2P2WT3kaQ=w226-h226-p-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/HZpnexwxNS5FkIrpz6hdHZuNhBS-GKjs0C9NU8nDSTmHFlPaviqxV-dDLS_ubSEbpEvu0m2P2WT3kaQ=w544-h544-p-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CCcQhL8CIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Sido", + "navigationEndpoint": { + "clickTrackingParams": "CCAQoLMCGAciEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCgosMU69MpoCqhuS1JZj6Cw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "1.55M subscribers" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CCAQoLMCGAciEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCgosMU69MpoCqhuS1JZj6Cw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CCAQoLMCGAciEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCYQmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDAOluG6ELhckpkqp_TXQW7KTA", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CCYQmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCUQm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDEMluG6ELhckpkqp_TXQW7KTA", + "params": "wAEB" + } + }, + "trackingParams": "CCUQm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CCMQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CCQQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CCQQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "trackingParams": "CCMQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCIQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ2dvc01VNjlNcG9DcWh1UzFKWmo2Q3c%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CCIQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ], + "trackingParams": "CCEQpzsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/Ms5gYOttabL03qfFYx7SNhRsx-K_Y7hxMN0WXgc7iquYAfLV5cgYZfTBn3nsi0_sN5BaqAaIr1z5iGc=w226-h226-p-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/Ms5gYOttabL03qfFYx7SNhRsx-K_Y7hxMN0WXgc7iquYAfLV5cgYZfTBn3nsi0_sN5BaqAaIr1z5iGc=w544-h544-p-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CB8QhL8CIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Marteria", + "navigationEndpoint": { + "clickTrackingParams": "CBgQoLMCGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCAiLb3B6iCjxv7HhPf1S4ag", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "422K subscribers" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CBgQoLMCGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCAiLb3B6iCjxv7HhPf1S4ag", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CBgQoLMCGAgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CB4QmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDAOB-3PMrfX5W6J9uq5wrUJqQ", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CB4QmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CB0Qm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDEMB-3PMrfX5W6J9uq5wrUJqQ", + "params": "wAEB" + } + }, + "trackingParams": "CB0Qm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CBsQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CBwQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CBwQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "trackingParams": "CBsQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBoQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ0FpTGIzQjZpQ2p4djdIaFBmMVM0YWc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CBoQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ], + "trackingParams": "CBkQpzsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + }, + { + "musicTwoRowItemRenderer": { + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/lkbE9cB4qTxtRmzkjAaLEHrpIgeCOzeBXaL4BpBRq6wp4PlCoSIFej3ita3du8lqniIA67NRYfsVwuFj=w226-h226-p-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/lkbE9cB4qTxtRmzkjAaLEHrpIgeCOzeBXaL4BpBRq6wp4PlCoSIFej3ita3du8lqniIA67NRYfsVwuFj=w544-h544-p-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CBcQhL8CIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "title": { + "runs": [ + { + "text": "Dame", + "navigationEndpoint": { + "clickTrackingParams": "CBAQoLMCGAkiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCtoec88rzlhABHeo_4d-H8g", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "37.7K subscribers" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CBAQoLMCGAkiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "browseEndpoint": { + "browseId": "UCtoec88rzlhABHeo_4d-H8g", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CBAQoLMCGAkiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBYQmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDAObe49xKIy081oNCIHzO6WXQ", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CBYQmvMFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBUQm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "watchPlaylistEndpoint": { + "playlistId": "RDEMbe49xKIy081oNCIHzO6WXQ", + "params": "wAEB" + } + }, + "trackingParams": "CBUQm_MFGAEiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CBMQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CBQQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CBQQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "trackingParams": "CBMQqJwGGAIiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBIQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ3RvZWM4OHJ6bGhBQkhlb180ZC1IOGc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CBIQkfsFGAMiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ], + "trackingParams": "CBEQpzsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + } + } + } + ], + "trackingParams": "CA8QobMCGAQiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "itemSize": "COLLECTION_STYLE_ITEM_SIZE_MEDIUM" + } + } + ], + "trackingParams": "CA4Qui8iEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + "trackingParams": "CA0Q8JMBGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ] + } + }, + "header": { + "musicImmersiveHeaderRenderer": { + "title": { + "runs": [ + { + "text": "Trailerpark" + } + ] + }, + "subscriptionButton": { + "subscribeButtonRenderer": { + "subscriberCountText": { + "runs": [ + { + "text": "270K" + } + ] + }, + "subscribed": false, + "enabled": true, + "type": "FREE", + "channelId": "UCC9192yGQD25eBZgFZ84MPw", + "showPreferences": false, + "subscriberCountWithSubscribeText": { + "runs": [ + { + "text": "270K" + } + ] + }, + "subscribedButtonText": { + "runs": [ + { + "text": "Subscribed" + } + ] + }, + "unsubscribedButtonText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "trackingParams": "CAgQmysiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "unsubscribeButtonText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoints": [ + { + "clickTrackingParams": "CAgQmysiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "subscribeEndpoint": { + "channelIds": [ + "UCC9192yGQD25eBZgFZ84MPw" + ], + "params": "GAA%3D" + } + }, + { + "clickTrackingParams": "CAgQmysiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAgQmysiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "openPopupAction": { + "popup": { + "confirmDialogRenderer": { + "trackingParams": "CAoQxjgiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "dialogMessages": [ + { + "runs": [ + { + "text": "Unsubscribe from " + }, + { + "text": "Trailerpark" + }, + { + "text": "?" + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "text": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "serviceEndpoint": { + "clickTrackingParams": "CAwQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "unsubscribeEndpoint": { + "channelIds": [ + "UCC9192yGQD25eBZgFZ84MPw" + ] + } + }, + "trackingParams": "CAwQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "trackingParams": "CAsQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + }, + "popupType": "DIALOG" + } + } + ] + } + } + ], + "longSubscriberCountText": { + "runs": [ + { + "text": "270K subscribers" + } + ], + "accessibility": { + "accessibilityData": { + "label": "270K subscribers" + } + } + }, + "shortSubscriberCountText": { + "runs": [ + { + "text": "270K" + } + ] + }, + "subscribeAccessibility": { + "accessibilityData": { + "label": "Subscribe to this channel." + } + }, + "unsubscribeAccessibility": { + "accessibilityData": { + "label": "Unsubscribe from this channel." + } + }, + "signInEndpoint": { + "clickTrackingParams": "CAgQmysiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAkQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CAkQ8FsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + } + } + } + } + } + }, + "moreButton": { + "toggleButtonRenderer": { + "isToggled": false, + "isDisabled": false, + "defaultIcon": { + "iconType": "EXPAND" + }, + "defaultText": { + "runs": [ + { + "text": "More" + } + ] + }, + "toggledIcon": { + "iconType": "COLLAPSE" + }, + "toggledText": { + "runs": [ + { + "text": "Less" + } + ] + }, + "trackingParams": "CAcQmE0iEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAYQkfsFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ09SNF9iU1ZJWFBzR2E0QmJDU3Q2MFE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CAYQkfsFGAAiEwi5ut3wt_GKAxWvBHMJHYfxI4M=" + } + } + ], + "trackingParams": "CAUQpzsiEwi5ut3wt_GKAxWvBHMJHYfxI4M=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/II101BviJo-tGcGg1KKWSU8D3EZjALHQMbQ4v-7-hP4Zfk1pBESaTCLcz8eQb-hggzxq4Z1MuFkBeRE=w540-h225-p-l90-rj", + "width": 540, + "height": 225 + }, + { + "url": "https://lh3.googleusercontent.com/II101BviJo-tGcGg1KKWSU8D3EZjALHQMbQ4v-7-hP4Zfk1pBESaTCLcz8eQb-hggzxq4Z1MuFkBeRE=w721-h300-p-l90-rj", + "width": 721, + "height": 300 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CAQQhL8CIhMIubrd8LfxigMVrwRzCR2H8SOD" + } + }, + "trackingParams": "CAEQ-NwCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "playButton": { + "buttonRenderer": { + "style": "STYLE_DARK_ON_WHITE", + "size": "SIZE_DEFAULT", + "text": { + "runs": [ + { + "text": "Shuffle" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAMQ6YQEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "GePZUYeIQQQ", + "playlistId": "RDAO7AbogW0cCnElSU0WYm1GqA", + "params": "wAEB8gECGAE%3D", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhpSREFPN0Fib2dXMGNDbkVsU1UwV1ltMUdxQQ%3D%3D" + } + } + } + }, + "accessibility": { + "label": "Shuffle" + }, + "trackingParams": "CAMQ6YQEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibilityData": { + "accessibilityData": { + "label": "Shuffle" + } + } + } + }, + "startRadioButton": { + "buttonRenderer": { + "text": { + "runs": [ + { + "text": "Radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAIQ84QEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "watchEndpoint": { + "videoId": "XZfoFwWvkGQ", + "playlistId": "RDEM7AbogW0cCnElSU0WYm1GqA", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhpSREVNN0Fib2dXMGNDbkVsU1UwV1ltMUdxQQ%3D%3D" + } + } + } + }, + "accessibility": { + "label": "Radio" + }, + "trackingParams": "CAIQ84QEIhMIubrd8LfxigMVrwRzCR2H8SOD", + "accessibilityData": { + "accessibilityData": { + "label": "Radio" + } + } + } + }, + "shareEndpoint": { + "clickTrackingParams": "CAEQ-NwCIhMIubrd8LfxigMVrwRzCR2H8SOD", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ09SNF9iU1ZJWFBzR2E0QmJDU3Q2MFE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + } + } + }, + "trackingParams": "CAAQhGciEwi5ut3wt_GKAxWvBHMJHYfxI4M=" +} From 75c3746890f3428f3314b7b10c9ec816ad275836 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 13 Jan 2025 03:30:07 +0100 Subject: [PATCH 085/191] fix: switch to rquickjs crate for deobfuscator --- Cargo.toml | 6 ++--- src/deobfuscate.rs | 63 ++++++++++++++++++++++++++++------------------ src/error.rs | 2 +- 3 files changed, 41 insertions(+), 30 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 17e3a20..c8b2077 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,9 +24,7 @@ keywords = ["youtube", "video", "music"] categories = ["api-bindings", "multimedia"] [workspace.dependencies] -quick-js-dtp = { version = "0.4.1", default-features = false, features = [ - "patch-dateparser", -] } +rquickjs = "0.8.1" once_cell = "1.12.0" regex = "1.6.0" fancy-regex = "0.14.0" @@ -94,7 +92,7 @@ rustls-tls-webpki-roots = ["reqwest/rustls-tls-webpki-roots"] rustls-tls-native-roots = ["reqwest/rustls-tls-native-roots"] [dependencies] -quick-js-dtp.workspace = true +rquickjs.workspace = true once_cell.workspace = true regex.workspace = true fancy-regex.workspace = true diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index dc1c2c8..aab5d53 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -4,6 +4,7 @@ use once_cell::sync::Lazy; use regex::Regex; use reqwest::Client; use ress::tokens::Token; +use rquickjs::{Context, Runtime}; use serde::{Deserialize, Serialize}; use crate::{ @@ -13,7 +14,7 @@ use crate::{ }; pub struct Deobfuscator { - ctx: quick_js::Context, + ctx: Context, } #[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq)] @@ -76,29 +77,34 @@ impl DeobfData { impl Deobfuscator { /// Instantiate a new deobfuscator with the given data pub fn new(data: &DeobfData) -> Result { - let ctx = - quick_js::Context::new().or(Err(DeobfError::Other("could not create QuickJS rt")))?; - ctx.eval(&data.sig_fn)?; - ctx.eval(&data.nsig_fn)?; - + let rt = Runtime::new()?; + let ctx = Context::full(&rt)?; + ctx.with(|ctx| { + let mut opts = rquickjs::context::EvalOptions::default(); + opts.strict = false; + ctx.eval_with_options::<(), _>(data.sig_fn.as_bytes(), opts)?; + let mut opts = rquickjs::context::EvalOptions::default(); + opts.strict = false; + ctx.eval_with_options::<(), _>(data.nsig_fn.as_bytes(), opts) + })?; Ok(Self { ctx }) } /// Deobfuscate the `s` parameter from the `signature_cipher` field pub fn deobfuscate_sig(&self, sig: &str) -> Result { - let res = self.ctx.call_function(DEOBF_SIG_FUNC_NAME, [sig])?; - - res.into_string() - .ok_or(DeobfError::Other("sig deobfuscation fn returned no string")) + let res = self + .ctx + .with(|ctx| call_fn(&ctx, DEOBF_SIG_FUNC_NAME, sig))?; + tracing::trace!("deobf sig: {sig} -> {res}"); + Ok(res) } /// Deobfuscate the `n` stream URL parameter to circumvent throttling pub fn deobfuscate_nsig(&self, nsig: &str) -> Result { - let res = self.ctx.call_function(DEOBF_NSIG_FUNC_NAME, [nsig])?; - let res = res.into_string().ok_or(DeobfError::Other( - "nsig deobfuscation fn returned no string", - ))?; - tracing::debug!("deobf nsig: {nsig} -> {res}"); + let res = self + .ctx + .with(|ctx| call_fn(&ctx, DEOBF_NSIG_FUNC_NAME, nsig))?; + tracing::trace!("deobf nsig: {nsig} -> {res}"); if res.starts_with("enhanced_except_") || res.ends_with(nsig) { return Err(DeobfError::Other("nsig fn returned an exception")); } @@ -279,6 +285,7 @@ fn extract_js_fn(js: &str, offset: usize, name: &str) -> Result Result(var_code.as_bytes())) { tracing::warn!("invalid var ({e}): {var_code}"); code = format!("var {ident}={{}}; {code}"); } else { - code = format!("var {var_code}; {code}"); + code = format!("{var_code} {code}"); } } } @@ -362,15 +369,21 @@ fn extract_js_var(js: &str) -> Option<&str> { } } +fn call_fn(ctx: &rquickjs::Ctx, fn_name: &str, arg: &str) -> Result { + let f: rquickjs::Function = ctx.globals().get(fn_name)?; + f.call((arg,)) +} + /// Verify if the deobfuscation function successfully processes a random input string fn verify_fn(js_fn: &str, fn_name: &str) -> Result<(), DeobfError> { - let ctx = quick_js::Context::new().or(Err(DeobfError::Other("could not create QuickJS rt")))?; - ctx.eval(js_fn)?; + let rt = Runtime::new()?; + let ctx = Context::full(&rt)?; let testinp = util::generate_content_playback_nonce(); - let res = ctx - .call_function(fn_name, [testinp.to_owned()])? - .into_string() - .ok_or(DeobfError::Other("deobfuscation fn returned no string"))?; + let res = ctx.with(|ctx| { + ctx.eval::<(), _>(js_fn)?; + call_fn(&ctx, fn_name, &testinp) + })?; + if res.is_empty() { return Err(DeobfError::Other("deobfuscation fn returned empty string")); } diff --git a/src/error.rs b/src/error.rs index a2125e8..f41cd8a 100644 --- a/src/error.rs +++ b/src/error.rs @@ -156,7 +156,7 @@ pub(crate) mod internal { pub enum DeobfError { /// Error during JavaScript execution #[error("js execution error: {0}")] - JavaScript(#[from] quick_js::ExecutionError), + JavaScript(#[from] rquickjs::Error), /// Error during JavaScript parsing #[error("js parsing: {0}")] JsParser(#[from] ress::error::Error), From 51dacf8df299c47994e8fac4ed5b0ffd29e480bb Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 13 Jan 2025 03:46:45 +0100 Subject: [PATCH 086/191] ci: skip authenticated tests --- .forgejo/workflows/ci.yaml | 8 +- Justfile | 11 +- tests/youtube.rs | 229 ++++++++++++++----------------------- 3 files changed, 97 insertions(+), 151 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 325cc80..3f6ec46 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -28,15 +28,9 @@ jobs: run: cargo clippy --all --tests --features=rss,indicatif,audiotag -- -D warnings - name: 🧪 Test - run: | - printf '%s\n' "$RUSTYPIPE_CACHE" > rustypipe_cache.json - echo "authenticated=$YT_AUTHENTICATED" - wc -c rustypipe_cache.json - cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace + run: cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace -- --skip 'cookie_auth::' env: ALL_PROXY: "http://warpproxy:8124" - RUSTYPIPE_CACHE: "${{ secrets.RUSTYPIPE_CACHE }}" - YT_AUTHENTICATED: "${{ secrets.RUSTYPIPE_CACHE != '' }}" - name: Move test report if: always() diff --git a/Justfile b/Justfile index fcf3068..76e8102 100644 --- a/Justfile +++ b/Justfile @@ -1,15 +1,19 @@ test: # cargo test --features=rss - cargo nextest run --workspace --features=rss --no-fail-fast --retries 1 + cargo nextest run --workspace --features=rss --no-fail-fast --retries 1 -- --skip 'cookie_auth::' unittest: cargo nextest run --features=rss --no-fail-fast --lib testyt: + cargo nextest run --features=rss --no-fail-fast --retries 1 --test youtube -- --skip 'cookie_auth::' + +testyt-cookie: cargo nextest run --features=rss --no-fail-fast --retries 1 --test youtube testyt-localized: - YT_LANG=th cargo nextest run --features=rss --no-fail-fast ---retries 1 --test youtube + YT_LANG=th cargo nextest run --features=rss --no-fail-fast --retries 1 --test youtube -- \ + --skip 'cookie_auth::' --skip 'search_suggestion' --skip 'isrc_search_languages' testintl: #!/usr/bin/env bash @@ -28,7 +32,8 @@ testintl: for YT_LANG in "${LANGUAGES[@]}"; do echo "---TESTS FOR $YT_LANG ---" - if YT_LANG="$YT_LANG" cargo nextest run --no-fail-fast --retries 1 --test-threads 4 --test youtube -E 'not test(/^resolve/)'; then + if YT_LANG="$YT_LANG" cargo nextest run --no-fail-fast --retries 1 --test-threads 4 --test youtube -- \ + --skip 'cookie_auth::' --skip 'search_suggestion' --skip 'isrc_search_languages' --skip 'resolve_'; then echo "--- $YT_LANG COMPLETED ---" else echo "--- $YT_LANG FAILED ---" diff --git a/tests/youtube.rs b/tests/youtube.rs index 633032a..2a79c5c 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2734,6 +2734,94 @@ async fn isrc_search_languages(rp: RustyPipe) { } } +mod cookie_auth { + use super::*; + + #[rstest] + #[tokio::test] + async fn history(rp: RustyPipe) { + let videos = rp.query().history().await.unwrap(); + assert_next_history(videos, rp.query(), 100).await; + } + + #[rstest] + #[tokio::test] + async fn history_search(rp: RustyPipe) { + let videos = rp.query().history_search("a").await.unwrap(); + assert_next_history(videos, rp.query(), 5).await; + } + + #[rstest] + #[tokio::test] + async fn subscriptions(rp: RustyPipe) { + let channels = rp.query().subscriptions().await.unwrap(); + assert_next_items(channels, rp.query(), 5).await; + } + + #[rstest] + #[tokio::test] + async fn subscription_feed(rp: RustyPipe) { + let videos = rp.query().subscription_feed().await.unwrap(); + assert_next_items(videos, rp.query(), 50).await; + } + + #[rstest] + #[tokio::test] + async fn liked_videos(rp: RustyPipe) { + let videos = rp.query().liked_videos().await.unwrap(); + assert_next_items(videos.videos, rp.query(), 5).await; + } + + #[rstest] + #[tokio::test] + async fn watch_later(rp: RustyPipe) { + let videos = rp.query().watch_later().await.unwrap(); + assert_next_items(videos.videos, rp.query(), 5).await; + } + + #[rstest] + #[tokio::test] + async fn music_history(rp: RustyPipe) { + let tracks = rp.query().music_history().await.unwrap(); + assert_next_music_history(tracks, rp.query(), 150).await; + } + + #[rstest] + #[tokio::test] + async fn music_saved_artists(rp: RustyPipe) { + let artists = rp.query().music_saved_artists().await.unwrap(); + assert_next_items(artists, rp.query(), 5).await; + } + + #[rstest] + #[tokio::test] + async fn music_saved_albums(rp: RustyPipe) { + let albums = rp.query().music_saved_albums().await.unwrap(); + assert_next_items(albums, rp.query(), 5).await; + } + + #[rstest] + #[tokio::test] + async fn music_saved_tracks(rp: RustyPipe) { + let tracks = rp.query().music_saved_tracks().await.unwrap(); + assert_next_items(tracks, rp.query(), 50).await; + } + + #[rstest] + #[tokio::test] + async fn music_saved_playlists(rp: RustyPipe) { + let playlists = rp.query().music_saved_playlists().await.unwrap(); + assert_next_items(playlists, rp.query(), 5).await; + } + + #[rstest] + #[tokio::test] + async fn music_liked_tracks(rp: RustyPipe) { + let tracks = rp.query().music_liked_tracks().await.unwrap(); + assert_next_items(tracks.tracks, rp.query(), 5).await; + } +} + #[rstest] #[tokio::test] async fn user_auth_check_login(rp: RustyPipe, auth_enabled: bool) { @@ -2743,138 +2831,6 @@ async fn user_auth_check_login(rp: RustyPipe, auth_enabled: bool) { } } -#[rstest] -#[tokio::test] -async fn history(rp: RustyPipe, cookie_auth_enabled: bool) { - if !cookie_auth_enabled { - return; - } - - let videos = rp.query().history().await.unwrap(); - assert_next_history(videos, rp.query(), 100).await; -} - -#[rstest] -#[tokio::test] -async fn history_search(rp: RustyPipe, cookie_auth_enabled: bool) { - if !cookie_auth_enabled { - return; - } - - let videos = rp.query().history_search("a").await.unwrap(); - assert_next_history(videos, rp.query(), 5).await; -} - -#[rstest] -#[tokio::test] -async fn subscriptions(rp: RustyPipe, cookie_auth_enabled: bool) { - if !cookie_auth_enabled { - return; - } - - let channels = rp.query().subscriptions().await.unwrap(); - assert_next_items(channels, rp.query(), 5).await; -} - -#[rstest] -#[tokio::test] -async fn subscription_feed(rp: RustyPipe, cookie_auth_enabled: bool) { - if !cookie_auth_enabled { - return; - } - - let videos = rp.query().subscription_feed().await.unwrap(); - assert_next_items(videos, rp.query(), 50).await; -} - -#[rstest] -#[tokio::test] -async fn liked_videos(rp: RustyPipe, cookie_auth_enabled: bool) { - if !cookie_auth_enabled { - return; - } - - let videos = rp.query().liked_videos().await.unwrap(); - assert_next_items(videos.videos, rp.query(), 5).await; -} - -#[rstest] -#[tokio::test] -async fn watch_later(rp: RustyPipe, cookie_auth_enabled: bool) { - if !cookie_auth_enabled { - return; - } - - let videos = rp.query().watch_later().await.unwrap(); - assert_next_items(videos.videos, rp.query(), 5).await; -} - -#[rstest] -#[tokio::test] -async fn music_history(rp: RustyPipe, cookie_auth_enabled: bool) { - if !cookie_auth_enabled { - return; - } - - let tracks = rp.query().music_history().await.unwrap(); - assert_next_music_history(tracks, rp.query(), 150).await; -} - -#[rstest] -#[tokio::test] -async fn music_saved_artists(rp: RustyPipe, cookie_auth_enabled: bool) { - if !cookie_auth_enabled { - return; - } - - let artists = rp.query().music_saved_artists().await.unwrap(); - assert_next_items(artists, rp.query(), 5).await; -} - -#[rstest] -#[tokio::test] -async fn music_saved_albums(rp: RustyPipe, cookie_auth_enabled: bool) { - if !cookie_auth_enabled { - return; - } - - let albums = rp.query().music_saved_albums().await.unwrap(); - assert_next_items(albums, rp.query(), 5).await; -} - -#[rstest] -#[tokio::test] -async fn music_saved_tracks(rp: RustyPipe, cookie_auth_enabled: bool) { - if !cookie_auth_enabled { - return; - } - - let tracks = rp.query().music_saved_tracks().await.unwrap(); - assert_next_items(tracks, rp.query(), 50).await; -} - -#[rstest] -#[tokio::test] -async fn music_saved_playlists(rp: RustyPipe, cookie_auth_enabled: bool) { - if !cookie_auth_enabled { - return; - } - - let playlists = rp.query().music_saved_playlists().await.unwrap(); - assert_next_items(playlists, rp.query(), 5).await; -} - -#[rstest] -#[tokio::test] -async fn music_liked_tracks(rp: RustyPipe, cookie_auth_enabled: bool) { - if !cookie_auth_enabled { - return; - } - - let tracks = rp.query().music_liked_tracks().await.unwrap(); - assert_next_items(tracks.tracks, rp.query(), 5).await; -} - //#TESTUTIL /// Get the language setting from the environment variable @@ -2914,15 +2870,6 @@ fn auth_enabled(rp: RustyPipe) -> bool { || rp.query().auth_enabled(ClientType::Tv) } -/// Get a flag signaling if an authenticated user is expected -#[fixture] -fn cookie_auth_enabled(rp: RustyPipe) -> bool { - std::env::var("YT_AUTHENTICATED") - .map(|v| !v.is_empty() && !v.eq_ignore_ascii_case("false")) - .unwrap_or_default() - || rp.query().auth_enabled(ClientType::Desktop) -} - /* /// Get a new RustyPipe instance with pre-set visitor data fn rp_visitor_data(vdata: &str) -> RustyPipe { From 6a604252b1af7a9388db5dc170f737069cc31051 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 13 Jan 2025 03:00:02 +0000 Subject: [PATCH 087/191] chore(deps): update rust crate dirs to v6 (#24) --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index c8b2077..eec0cb4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,7 +61,7 @@ anyhow = "1.0" clap = { version = "4.0.0", features = ["derive"] } tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } serde_yaml = "0.9.0" -dirs = "5.0.0" +dirs = "6.0.0" filenamify = "0.1.0" # Testing From 5c6d992939f55a203ac1784f1e9175ac1d498ce8 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 13 Jan 2025 04:12:46 +0100 Subject: [PATCH 088/191] fix: remove Unix file metadata usage (Windows compatibility) --- downloader/src/lib.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 9efccc7..178b934 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -10,7 +10,6 @@ use std::{ cmp::Ordering, ffi::OsString, ops::Range, - os::unix::fs::MetadataExt, path::{Path, PathBuf}, sync::Arc, time::Duration, @@ -1269,7 +1268,7 @@ async fn download_single_file( if let Err(e) = res { // Remove temporary file if nothing was downloaded (e.g. 403 error) if std::fs::metadata(&output_path_tmp) - .map(|md| md.size() == 0) + .map(|md| md.len() == 0) .unwrap_or_default() { _ = std::fs::remove_file(&output_path_tmp); From 7cd9246260493d7839018cb39a2dfb4dded8b343 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 15 Jan 2025 18:12:33 +0100 Subject: [PATCH 089/191] chore: update pre-commit hooks --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 05a4482..d48fd4e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.3.0 + rev: v5.0.0 hooks: - id: end-of-file-fixer - id: check-json From d5abee275300ab1bc10fc8d6c35a4e3813fd2bd4 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 16 Jan 2025 00:47:49 +0100 Subject: [PATCH 090/191] feat: add DRM and audio channel number filtering to StreamFilter --- downloader/src/lib.rs | 3 + src/client/player.rs | 4 + ...nt__player__tests__map_player_data_tv.snap | 52 +- src/model/ordering.rs | 52 +- src/param/mod.rs | 1 + src/param/stream_filter.rs | 167 +- testfiles/player_model/drm.json | 1705 +++++++++++++++++ testfiles/player_model/surround.json | 546 ++++++ 8 files changed, 2443 insertions(+), 87 deletions(-) create mode 100644 testfiles/player_model/drm.json create mode 100644 testfiles/player_model/surround.json diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 178b934..5cb6ae4 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -800,6 +800,9 @@ impl DownloadQuery { let (video, audio) = player_data.select_video_audio_stream(filter); if video.is_none() && audio.is_none() { + if player_data.drm.is_some() { + return Err(DownloadError::Input("video is DRM-protected".into())); + } return Err(DownloadError::Input("no stream found".into())); } diff --git a/src/client/player.rs b/src/client/player.rs index e98142a..d0da7cc 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -796,6 +796,10 @@ fn get_audio_codec(codecs: Vec<&str>) -> AudioCodec { return AudioCodec::Mp4a; } else if codec.starts_with("opus") { return AudioCodec::Opus; + } else if codec.starts_with("ac-3") { + return AudioCodec::Ac3; + } else if codec.starts_with("ec-3") { + return AudioCodec::Ec3; } } AudioCodec::Unknown diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap index c9e6bf2..5f54102 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap @@ -279,32 +279,6 @@ VideoPlayer( drm_track_type: None, drm_systems: [], ), - VideoStream( - url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=34544823&dur=163.046&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=298&keepalive=yes&lmt=1705967092637061&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRgIhAIIGU41JunuODw9qIlSoYQcwkCYO6k9XOVlDn1Nxqnu7AiEAoiMOgYU8s8lp01fW0L86hHrSrtlvOLSI9XA50iyIGBc%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=1308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", - itag: 298, - bitrate: 2188961, - average_bitrate: 1694973, - size: Some(34544823), - index_range: Some(Range( - start: 739, - end: 1166, - )), - init_range: Some(Range( - start: 0, - end: 738, - )), - duration_ms: Some(163046), - width: 1280, - height: 720, - fps: 60, - quality: "720p60", - hdr: false, - mime: "video/mp4; codecs=\"avc1.4d4020\"", - format: mp4, - codec: avc1, - drm_track_type: None, - drm_systems: [], - ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=14723992&dur=163.029&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=247&keepalive=yes&lmt=1705966613897741&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRgIhAL-upITxk7r9FQL5F4WL0A6SjPw673qyyzmXIC48eKfTAiEAlkdkx7IFYtehbhKakbffvIebpPXRtxSgBWLl7WEHCrE%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=130F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", itag: 247, @@ -331,6 +305,32 @@ VideoPlayer( drm_track_type: None, drm_systems: [], ), + VideoStream( + url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=34544823&dur=163.046&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=298&keepalive=yes&lmt=1705967092637061&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRgIhAIIGU41JunuODw9qIlSoYQcwkCYO6k9XOVlDn1Nxqnu7AiEAoiMOgYU8s8lp01fW0L86hHrSrtlvOLSI9XA50iyIGBc%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=1308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + itag: 298, + bitrate: 2188961, + average_bitrate: 1694973, + size: Some(34544823), + index_range: Some(Range( + start: 739, + end: 1166, + )), + init_range: Some(Range( + start: 0, + end: 738, + )), + duration_ms: Some(163046), + width: 1280, + height: 720, + fps: 60, + quality: "720p60", + hdr: false, + mime: "video/mp4; codecs=\"avc1.4d4020\"", + format: mp4, + codec: avc1, + drm_track_type: None, + drm_systems: [], + ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=30205331&dur=163.046&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=302&keepalive=yes&lmt=1705966545733919&lmw=1&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=SWvqB0UTkUvifuM&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&pl=26&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRQIhAL428Az_BKxxff4FlH4WleHSy4Igq3mR71NuTMOc9xU3AiBN4lXfH9DklGaQUMnOT8wAhiMuzR73bW3cwr744TSoNA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=130F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", itag: 302, diff --git a/src/model/ordering.rs b/src/model/ordering.rs index b99f7bf..445dcad 100644 --- a/src/model/ordering.rs +++ b/src/model/ordering.rs @@ -1,8 +1,7 @@ use std::cmp::Ordering; -use crate::model::AudioCodec; - -use super::{AudioStream, VideoStream}; +use super::{AudioStream, AudioTrackType, VideoStream}; +use crate::param::cmp_bitrate; /// Trait for ordering YouTube video/audio streams by quality /// @@ -16,28 +15,39 @@ pub trait QualityOrd { impl QualityOrd for VideoStream { fn quality_cmp(&self, other: &Self) -> Ordering { - match (self.width * self.height).cmp(&(other.width * other.height)) { - Ordering::Less => Ordering::Less, - Ordering::Greater => Ordering::Greater, - Ordering::Equal => match self.codec.cmp(&other.codec) { - Ordering::Less => Ordering::Less, - Ordering::Greater => Ordering::Greater, - Ordering::Equal => self.average_bitrate.cmp(&other.average_bitrate), - }, - } + self.width + .min(self.height) + .cmp(&(other.width.min(other.height))) + .then_with(|| self.hdr.cmp(&other.hdr)) + .then_with(|| self.fps.cmp(&other.fps)) + .then_with(|| self.codec.cmp(&other.codec)) + .then_with(|| self.average_bitrate.cmp(&other.average_bitrate)) } } impl QualityOrd for AudioStream { fn quality_cmp(&self, other: &Self) -> Ordering { - fn cmp_bitrate(s: &AudioStream) -> u32 { - match s.codec { - // Opus is more efficient - AudioCodec::Opus => (s.average_bitrate as f32 * 1.3) as u32, - _ => s.average_bitrate, - } - } - - cmp_bitrate(self).cmp(&cmp_bitrate(other)) + self.track + .as_ref() + .map(|t| track_type_rating(t.track_type)) + .cmp( + &other + .track + .as_ref() + .map(|t| track_type_rating(t.track_type)), + ) + .then_with(|| self.channels.cmp(&other.channels)) + .then_with(|| cmp_bitrate(self).cmp(&cmp_bitrate(other))) } } + +fn track_type_rating(track_type: Option) -> i8 { + track_type + .map(|t| match t { + AudioTrackType::Original => 2, + AudioTrackType::Dubbed => 1, + AudioTrackType::DubbedAuto => -1, + AudioTrackType::Descriptive => -2, + }) + .unwrap_or_default() +} diff --git a/src/param/mod.rs b/src/param/mod.rs index f0dd293..bec58ee 100644 --- a/src/param/mod.rs +++ b/src/param/mod.rs @@ -9,6 +9,7 @@ mod stream_filter; pub mod search_filter; pub use locale::{Country, Language, COUNTRIES, LANGUAGES}; +pub(crate) use stream_filter::cmp_bitrate; pub use stream_filter::StreamFilter; /// Channel video tab diff --git a/src/param/stream_filter.rs b/src/param/stream_filter.rs index ae110c5..b690bb0 100644 --- a/src/param/stream_filter.rs +++ b/src/param/stream_filter.rs @@ -3,8 +3,8 @@ use std::cmp::Ordering; use crate::model::{ - traits::QualityOrd, AudioCodec, AudioFormat, AudioStream, AudioTrackType, VideoCodec, - VideoFormat, VideoPlayer, VideoStream, + traits::QualityOrd, AudioCodec, AudioFormat, AudioStream, AudioTrackType, DrmSystem, + DrmTrackType, VideoCodec, VideoFormat, VideoPlayer, VideoStream, }; /// The StreamFilter is used for selecting audio/video streams from an extracted video @@ -13,6 +13,7 @@ pub struct StreamFilter { audio_max_bitrate: Option, audio_formats: Option>, audio_codecs: Option>, + audio_max_channels: Option, audio_languages: Vec, audio_autodub: bool, audio_descriptive: bool, @@ -22,6 +23,8 @@ pub struct StreamFilter { video_codecs: Option>, video_hdr: bool, video_none: bool, + drm_track_types: Vec, + drm_system: Option, } const N_RES_AUDIO: usize = 4; @@ -60,6 +63,13 @@ impl StreamFilter { self } + /// Set the maximum number of audio channels + #[must_use] + pub fn audio_max_channels(mut self, max_channels: u8) -> Self { + self.audio_max_channels = Some(max_channels); + self + } + /// Set the preferred audio languages /// Some YouTube videos feature multiple audio streams in /// different languages (e.g. ). @@ -148,10 +158,46 @@ impl StreamFilter { self } + /// Allow DRM protected streams of the given track types + /// + /// By default no DRM-protected streams are returned + #[must_use] + pub fn drm_track_types>>(mut self, track_types: T) -> Self { + self.drm_track_types = track_types.into(); + self + } + + /// Allow DRM protected streams that can be played back with the given DRM system + /// + /// By default no DRM-protected streams are returned + #[must_use] + pub fn drm_system(mut self, drm_system: DrmSystem) -> Self { + self.drm_system = Some(drm_system); + self + } + + fn check_drm(&self, track_type: Option, drm_systems: &[DrmSystem]) -> Option<()> { + if let Some(track_type) = track_type { + if !self.drm_track_types.contains(&track_type) { + return None; + } + if !drm_systems.contains(&self.drm_system?) { + return None; + } + } + Some(()) + } + fn apply_audio(&self, stream: &AudioStream) -> AudioRes { let bitrate = match self.audio_max_bitrate { - Some(max) => filter_max(stream.average_bitrate, max), - None => stream.average_bitrate.into(), + Some(max) => { + if stream.average_bitrate > max { + i64::from(max).wrapping_sub(stream.average_bitrate.into()) + } else { + i64::from(cmp_bitrate(stream)) + } + } + None => i64::from(cmp_bitrate(stream)), }; if let Some(formats) = &self.audio_formats { @@ -165,13 +211,6 @@ impl StreamFilter { return None; } } - let codecs = match stream.codec { - AudioCodec::Unknown => -10, - AudioCodec::Mp4a => 0, - AudioCodec::Opus => 10, - AudioCodec::Ac3 => 20, - AudioCodec::Ec3 => 25, - }; let language = if self.audio_languages.is_empty() { 0 @@ -220,7 +259,16 @@ impl StreamFilter { None => 0, }; - Some([language, track_type, codecs, bitrate]) + let channels = stream.channels.unwrap_or_default(); + if let Some(max_channels) = self.audio_max_channels { + if channels > max_channels { + return None; + } + } + + self.check_drm(stream.drm_track_type, &stream.drm_systems)?; + + Some([language, track_type, channels.into(), bitrate]) } fn apply_video(&self, stream: &VideoStream) -> VideoRes { @@ -266,7 +314,9 @@ impl StreamFilter { 0 }; - Some([hdr, res, fps, codecs, stream.average_bitrate.into()]) + self.check_drm(stream.drm_track_type, &stream.drm_systems)?; + + Some([res, hdr, fps, codecs, stream.average_bitrate.into()]) } /// Return true if no video stream should be selected @@ -346,6 +396,16 @@ impl VideoPlayer { } } +pub(crate) fn cmp_bitrate(s: &AudioStream) -> u32 { + match s.codec { + // Opus is more efficient + AudioCodec::Opus | AudioCodec::Ac3 => (s.average_bitrate as f32 * 1.3) as u32, + // Dolby audio should be preferred + AudioCodec::Ec3 => (s.average_bitrate as f32 * 1.5) as u32, + _ => s.average_bitrate, + } +} + #[cfg(test)] mod tests { use std::{fs::File, io::BufReader}; @@ -371,18 +431,39 @@ mod tests { serde_json::from_reader(BufReader::new(json_file)).unwrap() }); + static PLAYER_SURROUND: Lazy = Lazy::new(|| { + let json_path = path!(*TESTFILES / "player_model" / "surround.json"); + let json_file = File::open(json_path).unwrap(); + + serde_json::from_reader(BufReader::new(json_file)).unwrap() + }); + + static PLAYER_DRM: Lazy = Lazy::new(|| { + let json_path = path!(*TESTFILES / "player_model" / "drm.json"); + let json_file = File::open(json_path).unwrap(); + + serde_json::from_reader(BufReader::new(json_file)).unwrap() + }); + #[rstest] - #[case::default(StreamFilter::default(), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=16104136&dur=1012.661&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=251&keepalive=yes&lmt=1683782301237288&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRQIhAPcUhhfkNVA_JcdU6KLTOFjRCnNl6n8gamJA-Q0PgCpIAiBTMV2k2JfHzbHBtsHxuNW7zHvSaYaUbz-dEIQC45o1eA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Doriginal%3Alang%3Den-US"))] - #[case::bitrate(StreamFilter::default().audio_max_bitrate(100_000).clone(), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=8217508&dur=1012.661&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=250&keepalive=yes&lmt=1683782195315620&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRQIga2iMQsToMxO7hTOx0gNAzhYoV1lL5PpE9lkAuBXt1nkCIQCuFuQXWNixIquEugtkT1C9khuKRP_C-wzSOiUmRp1DRg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Doriginal%3Alang%3Den-US"))] - #[case::m4a_format(StreamFilter::default().audio_formats([AudioFormat::M4a]).clone(), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=16390508&dur=1012.691&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=140&keepalive=yes&lmt=1683782363698612&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRgIhAMgM470I-QXq4lTRuPtXf5UInHB_tG0tTGXRhVZ6nwImAiEAn0JYRknq5dtTwcmzZheekxVOZKhZ2Rpxc_UyvX2CMRY%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Doriginal%3Alang%3Den-US"))] - #[case::m4a_codec(StreamFilter::default().audio_codecs([AudioCodec::Mp4a]).clone(), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=16390508&dur=1012.691&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=140&keepalive=yes&lmt=1683782363698612&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRgIhAMgM470I-QXq4lTRuPtXf5UInHB_tG0tTGXRhVZ6nwImAiEAn0JYRknq5dtTwcmzZheekxVOZKhZ2Rpxc_UyvX2CMRY%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Doriginal%3Alang%3Den-US"))] - #[case::french(StreamFilter::default().audio_language("fr").clone(), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=940286&dur=60.101&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=251&keepalive=yes&lmt=1683774002236584&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRQIhAIUUin7WZBnoVDb2p0wuTPc7HZwbF8I5sxzLrVN9WeBwAiBQTZwhxCQ1IdrUkkD1-cSGYBtMF1aKkjPZ-LWeie0aZA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Ddubbed%3Alang%3Dfr"))] - #[case::br_fallback(StreamFilter::default().audio_max_bitrate(0).clone(), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=6306327&dur=1012.661&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=249&keepalive=yes&lmt=1683782187865292&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRAIgW1DTCrLV_GyEM1rdjScgyceZE1llb73KJMFXmPm5Y04CIAYOLZuuzFX4ba5720kMOcQ1-Ld1DULs85nLxJglitCl&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Doriginal%3Alang%3Den-US"))] - #[case::lang_fallback(StreamFilter::default().audio_language("xx").clone(), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=16104136&dur=1012.661&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=251&keepalive=yes&lmt=1683782301237288&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRQIhAPcUhhfkNVA_JcdU6KLTOFjRCnNl6n8gamJA-Q0PgCpIAiBTMV2k2JfHzbHBtsHxuNW7zHvSaYaUbz-dEIQC45o1eA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Doriginal%3Alang%3Den-US"))] - #[case::noformat(StreamFilter::default().audio_formats([]).clone(), None)] - #[case::nocodec(StreamFilter::default().audio_codecs([]).clone(), None)] - fn t_select_audio_stream(#[case] filter: StreamFilter, #[case] expect_url: Option<&str>) { - let selection = PLAYER_ML.select_audio_stream(&filter); + #[case::default(&PLAYER_ML, StreamFilter::new(), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=16104136&dur=1012.661&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=251&keepalive=yes&lmt=1683782301237288&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRQIhAPcUhhfkNVA_JcdU6KLTOFjRCnNl6n8gamJA-Q0PgCpIAiBTMV2k2JfHzbHBtsHxuNW7zHvSaYaUbz-dEIQC45o1eA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Doriginal%3Alang%3Den-US"))] + #[case::bitrate(&PLAYER_ML, StreamFilter::new().audio_max_bitrate(100_000), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=8217508&dur=1012.661&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=250&keepalive=yes&lmt=1683782195315620&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRQIga2iMQsToMxO7hTOx0gNAzhYoV1lL5PpE9lkAuBXt1nkCIQCuFuQXWNixIquEugtkT1C9khuKRP_C-wzSOiUmRp1DRg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Doriginal%3Alang%3Den-US"))] + #[case::m4a_format(&PLAYER_ML, StreamFilter::new().audio_formats([AudioFormat::M4a]), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=16390508&dur=1012.691&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=140&keepalive=yes&lmt=1683782363698612&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRgIhAMgM470I-QXq4lTRuPtXf5UInHB_tG0tTGXRhVZ6nwImAiEAn0JYRknq5dtTwcmzZheekxVOZKhZ2Rpxc_UyvX2CMRY%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Doriginal%3Alang%3Den-US"))] + #[case::m4a_codec(&PLAYER_ML, StreamFilter::new().audio_codecs([AudioCodec::Mp4a]), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=16390508&dur=1012.691&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=140&keepalive=yes&lmt=1683782363698612&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRgIhAMgM470I-QXq4lTRuPtXf5UInHB_tG0tTGXRhVZ6nwImAiEAn0JYRknq5dtTwcmzZheekxVOZKhZ2Rpxc_UyvX2CMRY%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Doriginal%3Alang%3Den-US"))] + #[case::french(&PLAYER_ML, StreamFilter::new().audio_language("fr"), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=940286&dur=60.101&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=251&keepalive=yes&lmt=1683774002236584&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRQIhAIUUin7WZBnoVDb2p0wuTPc7HZwbF8I5sxzLrVN9WeBwAiBQTZwhxCQ1IdrUkkD1-cSGYBtMF1aKkjPZ-LWeie0aZA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Ddubbed%3Alang%3Dfr"))] + #[case::br_fallback(&PLAYER_ML, StreamFilter::new().audio_max_bitrate(0), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=6306327&dur=1012.661&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=249&keepalive=yes&lmt=1683782187865292&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRAIgW1DTCrLV_GyEM1rdjScgyceZE1llb73KJMFXmPm5Y04CIAYOLZuuzFX4ba5720kMOcQ1-Ld1DULs85nLxJglitCl&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Doriginal%3Alang%3Den-US"))] + #[case::lang_fallback(&PLAYER_ML, StreamFilter::new().audio_language("xx"), Some("https://rr4---sn-h0jeener.googlevideo.com/videoplayback?c=WEB&clen=16104136&dur=1012.661&ei=6OtcZNqtBdOi7gP1upHYCQ&expire=1683832904&fexp=24007246&fvip=2&gir=yes&id=o-ABVtPh3j24hkJeXp8igjvreyODn-oV0CacOqb7pDjJoG&initcwndbps=1720000&ip=2003%3Ade%3Aaf31%3A5200%3A791a%3A897%3Ac15c%3Aae59&itag=251&keepalive=yes&lmt=1683782301237288&lsig=AG3C_xAwRQIgC7HZtYuc6dI92m6wCcoXYpdzSpVtPTIbO7jBKGpUrYMCIQCc0WNtFvN8Awqx9uuRVp5SUSe3rOt2D7M-rCKpgVv_0A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=wB&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jeln7l&ms=au%2Crdu&mt=1683811031&mv=m&mvi=4&n=U8mCOo4eYD4n0A&ns=LToEdXWVFHcH53e3aTe1N7kN&pl=37&requiressl=yes&sig=AOq0QJ8wRQIhAPcUhhfkNVA_JcdU6KLTOFjRCnNl6n8gamJA-Q0PgCpIAiBTMV2k2JfHzbHBtsHxuNW7zHvSaYaUbz-dEIQC45o1eA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=qEK7B81AP536F3aOi5JzMyLCUDiktWigtEpf9nI2xg&svpuc=1&txp=4532434&vprv=1&xtags=acont%3Doriginal%3Alang%3Den-US"))] + #[case::noformat(&PLAYER_ML, StreamFilter::new().audio_formats([]), None)] + #[case::nocodec(&PLAYER_ML, StreamFilter::new().audio_codecs([]), None)] + #[case::surround(&PLAYER_SURROUND, StreamFilter::new(), Some("https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=73404667&dur=1528.864&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=328&keepalive=yes&lmt=1728213526028394&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=audio%2Fmp4&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgWzmlzm0Po3ervktgNwWpuFCrXT8sr1wxYrj2j8XQx58CIC8vqHqPEgSS7LYOXLXlWeHiCJsB6FbIgv9JYsBwC-pB&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D"))] + #[case::drm_none(&PLAYER_DRM, StreamFilter::new(), None)] + #[case::drm_widevine(&PLAYER_DRM, StreamFilter::new().drm_system(DrmSystem::Widevine).drm_track_types([DrmTrackType::Audio, DrmTrackType::Hd]), Some("https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=469250041&ctier=A&dur=9722.240&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=329&keepalive=yes&lmt=1687683252651200&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAILjbszDNz0ese6Cb02T8WRudpVkIlsCQDizjrMeByN3AiAjW8WSTC7AYQsoQrbBmBqb5U15Jz3RNAww352BUg8vmQ%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den"))] + fn t_select_audio_stream( + #[case] player: &VideoPlayer, + #[case] filter: StreamFilter, + #[case] expect_url: Option<&str>, + ) { + let selection = player.select_audio_stream(&filter); match expect_url { Some(expect_url) => assert_eq!(selection.unwrap().url, expect_url), @@ -391,17 +472,23 @@ mod tests { } #[rstest] - #[case::default(StreamFilter::default(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=998696577&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=315&keepalive=yes&lmt=1647476955807851&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIfP4IVSo-00_kq_JIkuh032hcLoJzNEhYjvwgLiDpEzQIhALPVrvDBjRwiFddXiAyADmRtYygte4HvlJ3XOrkOf_TR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] - #[case::hdr(StreamFilter::default().video_hdr().clone(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=976824147&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=701&keepalive=yes&lmt=1647469891607029&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAOax_lAWCW5ENOYxe3gZfBHgHA5oZJPyMlYQFy73t7-pAiEA46J7dsT-1pv9smuoP3Kx5T7c_IJ6cEZN4U9UkSNuT7o%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] - #[case::resolution(StreamFilter::default().video_max_res(720).clone(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=76313586&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=302&keepalive=yes&lmt=1647455155369524&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgW0H1434eh9Axw6zw95qezJB0D2aVd2bxEIs4T5bcfFACIDOjha9WLycp0L188FZyFGa1RBkLPoGrrJOppsaXqwDR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] - #[case::resolution_fps(StreamFilter::default().video_max_res(720).video_max_fps(30).clone(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=47531179&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=247&keepalive=yes&lmt=1647458657499381&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAMUsmcl1zgbr3YQranPWNV1kcxT5IdEoLL7FTFEDdHHPAiEAhQnrfYMU0A9xZ69MfBujWA4pXtCOQCg2Jn6ve9J_vBQ%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] - #[case::res_fallback(StreamFilter::default().video_max_res(100).clone(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=3182932&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=278&keepalive=yes&lmt=1647458650479323&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAKcXzSIMQGA4R_rvoVg3ONpXOjpbaNZ5y9WJHLiQDTTVAiA6ePO9vuh5_zYE3Dw-QoRfqhT0CBDkg6w4dIo0MEfWnA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] - #[case::webm_format(StreamFilter::default().video_formats([VideoFormat::Webm]).clone(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=998696577&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=315&keepalive=yes&lmt=1647476955807851&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIfP4IVSo-00_kq_JIkuh032hcLoJzNEhYjvwgLiDpEzQIhALPVrvDBjRwiFddXiAyADmRtYygte4HvlJ3XOrkOf_TR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] - #[case::vp9_codec(StreamFilter::default().video_codecs([VideoCodec::Vp9]).clone(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=998696577&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=315&keepalive=yes&lmt=1647476955807851&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIfP4IVSo-00_kq_JIkuh032hcLoJzNEhYjvwgLiDpEzQIhALPVrvDBjRwiFddXiAyADmRtYygte4HvlJ3XOrkOf_TR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] - #[case::noformat(StreamFilter::default().video_formats([]).clone(), None)] - #[case::nocodec(StreamFilter::default().video_codecs([]).clone(), None)] - fn t_select_video_only_stream(#[case] filter: StreamFilter, #[case] expect_url: Option<&str>) { - let selection = PLAYER_HDR.select_video_only_stream(&filter); + #[case::default(&PLAYER_HDR, StreamFilter::new(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=998696577&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=315&keepalive=yes&lmt=1647476955807851&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIfP4IVSo-00_kq_JIkuh032hcLoJzNEhYjvwgLiDpEzQIhALPVrvDBjRwiFddXiAyADmRtYygte4HvlJ3XOrkOf_TR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] + #[case::hdr(&PLAYER_HDR, StreamFilter::new().video_hdr(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=976824147&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=701&keepalive=yes&lmt=1647469891607029&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAOax_lAWCW5ENOYxe3gZfBHgHA5oZJPyMlYQFy73t7-pAiEA46J7dsT-1pv9smuoP3Kx5T7c_IJ6cEZN4U9UkSNuT7o%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] + #[case::resolution(&PLAYER_HDR, StreamFilter::new().video_max_res(720), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=76313586&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=302&keepalive=yes&lmt=1647455155369524&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgW0H1434eh9Axw6zw95qezJB0D2aVd2bxEIs4T5bcfFACIDOjha9WLycp0L188FZyFGa1RBkLPoGrrJOppsaXqwDR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] + #[case::resolution_fps(&PLAYER_HDR, StreamFilter::new().video_max_res(720).video_max_fps(30), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=47531179&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=247&keepalive=yes&lmt=1647458657499381&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAMUsmcl1zgbr3YQranPWNV1kcxT5IdEoLL7FTFEDdHHPAiEAhQnrfYMU0A9xZ69MfBujWA4pXtCOQCg2Jn6ve9J_vBQ%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] + #[case::res_fallback(&PLAYER_HDR, StreamFilter::new().video_max_res(100), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=3182932&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=278&keepalive=yes&lmt=1647458650479323&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAKcXzSIMQGA4R_rvoVg3ONpXOjpbaNZ5y9WJHLiQDTTVAiA6ePO9vuh5_zYE3Dw-QoRfqhT0CBDkg6w4dIo0MEfWnA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] + #[case::webm_format(&PLAYER_HDR, StreamFilter::new().video_formats([VideoFormat::Webm]), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=998696577&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=315&keepalive=yes&lmt=1647476955807851&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIfP4IVSo-00_kq_JIkuh032hcLoJzNEhYjvwgLiDpEzQIhALPVrvDBjRwiFddXiAyADmRtYygte4HvlJ3XOrkOf_TR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] + #[case::vp9_codec(&PLAYER_HDR, StreamFilter::new().video_codecs([VideoCodec::Vp9]), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=998696577&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=315&keepalive=yes&lmt=1647476955807851&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIfP4IVSo-00_kq_JIkuh032hcLoJzNEhYjvwgLiDpEzQIhALPVrvDBjRwiFddXiAyADmRtYygte4HvlJ3XOrkOf_TR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"))] + #[case::noformat(&PLAYER_HDR, StreamFilter::new().video_formats([]), None)] + #[case::nocodec(&PLAYER_HDR, StreamFilter::new().video_codecs([]), None)] + #[case::drm_none(&PLAYER_DRM, StreamFilter::new(), None)] + #[case::drm_widevine(&PLAYER_DRM, StreamFilter::new().drm_system(DrmSystem::Widevine).drm_track_types([DrmTrackType::Audio, DrmTrackType::Hd]), Some("https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=6316012989&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=360&keepalive=yes&lmt=1687684175871682&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgXpaSy6Bm-MMSD_sEZpIzwvOzV9F8l0ydWul08VTpigcCIFEwz3HufM7FXciR_AeUEet0J6Y-GUwI4YEEFIa3BLwi&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D"))] + fn t_select_video_only_stream( + #[case] player: &VideoPlayer, + #[case] filter: StreamFilter, + #[case] expect_url: Option<&str>, + ) { + let selection = player.select_video_only_stream(&filter); match expect_url { Some(expect_url) => assert_eq!(selection.unwrap().url, expect_url), @@ -411,26 +498,26 @@ mod tests { #[rstest] #[case::default( - StreamFilter::default(), + StreamFilter::new(), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=998696577&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=315&keepalive=yes&lmt=1647476955807851&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIfP4IVSo-00_kq_JIkuh032hcLoJzNEhYjvwgLiDpEzQIhALPVrvDBjRwiFddXiAyADmRtYygte4HvlJ3XOrkOf_TR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?c=WEB&clen=5199784&dur=313.801&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=251&keepalive=yes&lmt=1647453650291076&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhALtI3j8ZChpNb0LcyDZ3yosbWnSpqaO0-jKAe_UM_RQyAiAMwrpdeNbJEnQn3q1eveaAcRcNIwy5iJ4fIjeBW_MUfg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1") )] #[case::webm( - StreamFilter::default().video_formats([VideoFormat::Webm]).clone(), + StreamFilter::new().video_formats([VideoFormat::Webm]), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303%2C308%2C315%2C330%2C331%2C332%2C333%2C334%2C335%2C336%2C337%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401%2C694%2C695%2C696%2C697%2C698%2C699%2C700%2C701&c=WEB&clen=998696577&dur=313.780&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=315&keepalive=yes&lmt=1647476955807851&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIfP4IVSo-00_kq_JIkuh032hcLoJzNEhYjvwgLiDpEzQIhALPVrvDBjRwiFddXiAyADmRtYygte4HvlJ3XOrkOf_TR&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1"), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?c=WEB&clen=5199784&dur=313.801&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=251&keepalive=yes&lmt=1647453650291076&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhALtI3j8ZChpNb0LcyDZ3yosbWnSpqaO0-jKAe_UM_RQyAiAMwrpdeNbJEnQn3q1eveaAcRcNIwy5iJ4fIjeBW_MUfg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1") )] #[case::noaudio( - StreamFilter::default().audio_formats([]).clone(), + StreamFilter::new().audio_formats([]), Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?c=WEB&clen=23544588&dur=313.834&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=18&lmt=1647456546485912&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=HWZNhARNT_nJgg&ns=pLFQxzhiCbZ9F2HJmDLveKoH&pl=37&ratebypass=yes&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgeCEjusAq6p33rH0NHyTAbPIRaaEkjDE32AXBFzDvR-ICIQD0LI8hQVH8oCMWu6OuADzc1FSQhIqYs5RLkxBmObIdsw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4530434&vprv=1"), None )] #[case::novideo( - StreamFilter::default().no_video().clone(), + StreamFilter::new().no_video(), None, Some("https://rr5---sn-h0jelne7.googlevideo.com/videoplayback?c=WEB&clen=5199784&dur=313.801&ei=eckIY72IKcGZ8gOMt6CwDg&expire=1661541849&fexp=24001373%2C24007246&fvip=2&gir=yes&id=o-AOqXE9lVS424yszv6LN5V_gaevdHxenJl-tYNy3Drs6g&initcwndbps=1428750&ip=2003%3Ade%3Aaf05%3A2500%3A5dad%3A319b%3Aca30%3Ae212&itag=251&keepalive=yes&lmt=1647453650291076&lsig=AG3C_xAwRQIhAMioKyc-dqs-6uvAwLViCcCTXKHn9sIbo0cbSSBXGG4kAiBQNsRBAvQrbWdOjZIsQXYrfPEb1KDpE_AlSEGQZXB9uA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=NH&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jelne7%2Csn-h0jeenl6&ms=au%2Crdu&mt=1661519833&mv=m&mvi=5&n=Zd7nrOM1B2C6PA&ns=426LxLap5MonJD_YWdS4lSYH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhALtI3j8ZChpNb0LcyDZ3yosbWnSpqaO0-jKAe_UM_RQyAiAMwrpdeNbJEnQn3q1eveaAcRcNIwy5iJ4fIjeBW_MUfg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-KhuPtxVzL5-QbZ7S9zNeOHsWTdms&txp=4532434&vprv=1") )] - #[case::noformat(StreamFilter::default().audio_formats([]).video_formats([]).clone(), None, None)] + #[case::noformat(StreamFilter::new().audio_formats([]).video_formats([]), None, None)] fn t_select_video_audio_stream( #[case] filter: StreamFilter, #[case] expect_video_url: Option<&str>, diff --git a/testfiles/player_model/drm.json b/testfiles/player_model/drm.json new file mode 100644 index 0000000..6e1e2ac --- /dev/null +++ b/testfiles/player_model/drm.json @@ -0,0 +1,1705 @@ +{ + "details": { + "id": "XASI9TModTA", + "name": "Avatar", + "description": "Avatar takes us to the amazing world of Pandora, where a man embarks on an epic journey of adventure and love, ultimately fighting to save the unique place he has learned to call home. James Cameron, the Oscar®-winning director of Titanic, delivers an immersive cinematic experience, where revolutionary technology meets engaging characters in a timeless, emotional story.", + "duration": 9722, + "thumbnail": [ + { + "url": "https://i.ytimg.com/vi/XASI9TModTA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCENHwM_7kGDBhzmx_NpWUOHBMXXw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/XASI9TModTA/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDFiFEEia4E0SYSzyyycw5zMZuPyQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/XASI9TModTA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC5W-urYiRePsFjqP-sdti54kaRtw", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/XASI9TModTA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCbGABCWcPPgBLJ58GisNmRTmk86A", + "width": 336, + "height": 188 + }, + { + "url": "https://i.ytimg.com/vi/XASI9TModTA/maxresdefault.jpg", + "width": 1920, + "height": 1080 + } + ], + "channel_id": "UCiN-1mdDS4H9QJN_1-5PRdg", + "channel_name": "YouTube Movies", + "view_count": 21329, + "keywords": [], + "is_live": false, + "is_live_content": false + }, + "video_streams": [], + "video_only_streams": [ + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=138989079&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=161&keepalive=yes&lmt=1687683654023984&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgZkrGFNUrKMopxS_s8oS2amZ7nHc4bXnppqncjIjOTycCIFW70I_H8Yv5cTADUWocsfujyWr3JGnMMYd3i-sJERYB&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 161, + "bitrate": 152720, + "average_bitrate": 114368, + "size": 138989079, + "index_range": { "start": 1776, "end": 25123 }, + "init_range": { "start": 0, "end": 1775 }, + "duration_ms": 9722170, + "width": 256, + "height": 144, + "fps": 24, + "quality": "144p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.4d400c\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": "sd", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=302568044&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=142&keepalive=yes&lmt=1687683619087379&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgIqNbxgoc7FtxutRfhsM-4Uxw_WTkf7iHPd5Q7HzS18cCIQCJUYw7r_fU02wWz4sigMI1DgQHWMxTxM0jB7Tl1VZnVg%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 142, + "bitrate": 287758, + "average_bitrate": 248971, + "size": 302568044, + "index_range": { "start": 1778, "end": 25125 }, + "init_range": { "start": 0, "end": 1777 }, + "duration_ms": 9722170, + "width": 426, + "height": 240, + "fps": 24, + "quality": "240p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.4d4015\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": "sd", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=246923966&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=279&keepalive=yes&lmt=1687683751847583&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAKrSziEp3CMW2MrfrJNBfHeiJbJmg1kQXg670tH5tD9tAiBHXmWzW_MUn5FBN6HvgmvFZdMnScfvDA_NZkJbjtmvTw%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 279, + "bitrate": 231979, + "average_bitrate": 203184, + "size": 246923966, + "index_range": { "start": 295, "end": 35112 }, + "init_range": { "start": 0, "end": 294 }, + "duration_ms": 9722170, + "width": 426, + "height": 240, + "fps": 24, + "quality": "240p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "sd", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=247765564&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=647&keepalive=yes&lmt=1687683691243925&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgCuwtvgCt1z94wG-Yfqo1YtmJmfz7qfb4sBgVgpbIQnACIQCzXkQD8yTaPH0CqX-IS6euSsEDdPOJ7bwY6Dpi0oFKGQ%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 647, + "bitrate": 232661, + "average_bitrate": 203876, + "size": 247765564, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 426, + "height": 240, + "fps": 24, + "quality": "240p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.20.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "sd", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=682827628&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=143&keepalive=yes&lmt=1687683641270221&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgOrlfvh6xVjzQ4fkMKlsUUn0cNuoGAvvYibzbo1mnbi8CIQDKmDlliJSpECvvS7mAcxe1uznPpBSwDRKl2PCbsefcXA%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 143, + "bitrate": 638911, + "average_bitrate": 561872, + "size": 682827628, + "index_range": { "start": 1778, "end": 25125 }, + "init_range": { "start": 0, "end": 1777 }, + "duration_ms": 9722170, + "width": 640, + "height": 360, + "fps": 24, + "quality": "360p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.4d401e\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": "sd", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=359933858&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=280&keepalive=yes&lmt=1687683756929528&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgLz0zOLe2mLiIVCvIUY7YaBDbmfq-4oCtpwCmYlDpOIQCIGktblmaOJWeteIHUf97olfZK7uX0u9T_d_l6uUayxZv&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 280, + "bitrate": 363757, + "average_bitrate": 296175, + "size": 359933858, + "index_range": { "start": 296, "end": 35166 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 640, + "height": 360, + "fps": 24, + "quality": "360p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "sd", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=449938438&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=648&keepalive=yes&lmt=1687683695361935&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAL1LeqQpZ8NKGkY9gKBQhD1_X25jEY51RE1J8Ooc8YEjAiBpdHzWNNvWOwmX-7S_fO50HlUeS_hmwaOuiTA9HB_GMw%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 648, + "bitrate": 437584, + "average_bitrate": 370237, + "size": 449938438, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 640, + "height": 360, + "fps": 24, + "quality": "360p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.21.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "sd", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=1385544597&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=144&keepalive=yes&lmt=1687683596543580&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgcz2hwfcq7M8SUjhXW-wWDWlgzcAjhPgqs9q6hSqCdxkCIQDZpjhmxeDHEQFX_JVkLaFCS03Pc9gFfF5pSArIWOEXsg%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 144, + "bitrate": 1198193, + "average_bitrate": 1140111, + "size": 1385544597, + "index_range": { "start": 1778, "end": 25125 }, + "init_range": { "start": 0, "end": 1777 }, + "duration_ms": 9722170, + "width": 854, + "height": 480, + "fps": 24, + "quality": "480p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.4d401e\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": "sd", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=2077571467&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=222&keepalive=yes&lmt=1687683612981003&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgbS0N0Bv_sJciOlfZZO_pG7io6rcLdjfgl-Ldpqxn-jQCIQCcxPs6sbOE0txRtkRLUMKQzVkw4w9DG32Rdn1071Lyqw%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 222, + "bitrate": 1746864, + "average_bitrate": 1709553, + "size": 2077571467, + "index_range": { "start": 1778, "end": 25125 }, + "init_range": { "start": 0, "end": 1777 }, + "duration_ms": 9722170, + "width": 854, + "height": 480, + "fps": 24, + "quality": "480p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.4d401e\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": "sd", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=3721411674&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=223&keepalive=yes&lmt=1687683636281206&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAOHC_D3nzb1WH__Zd3P3Oo6i3VcLsCHcnjyFMY5G5jWvAiEA8HRgYG2DeWfYn7zJZZ-xqBYD3Ljg0sUHJszZEeGpyQU%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 223, + "bitrate": 3493287, + "average_bitrate": 3062206, + "size": 3721411674, + "index_range": { "start": 1778, "end": 25125 }, + "init_range": { "start": 0, "end": 1777 }, + "duration_ms": 9722170, + "width": 854, + "height": 480, + "fps": 24, + "quality": "480p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.4d401e\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": "sd", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=732948177&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=317&keepalive=yes&lmt=1687683706845220&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgPky54zHGLreIrI70H6KYvTtuJ8YvEyidRT-h_0ZvUakCIQCtNIE5e5poy1vT2-VOMFBZCV3wfnZJEs4RetgChdRsUg%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 317, + "bitrate": 673112, + "average_bitrate": 603114, + "size": 732948177, + "index_range": { "start": 296, "end": 35211 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 854, + "height": 480, + "fps": 24, + "quality": "480p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "sd", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=820981204&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=649&keepalive=yes&lmt=1687683673174509&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgcNmZBnpsxq_-rtI9OFASyrAWQ-OSWArbaF78UDZx3L8CIAzimXvANw5G3biJ958E0Xs_8nvns3n8MeULXboVYbN1&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 649, + "bitrate": 784607, + "average_bitrate": 675553, + "size": 820981204, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 854, + "height": 480, + "fps": 24, + "quality": "480p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.30.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "sd", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=1089308208&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=650&keepalive=yes&lmt=1687683689658220&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgWddY8FBjhLKmA502x96oQkLX35PEN9MgPjz3AF45zzwCIQCIwLJrzZxsK0d_lufm7rGe4tIqKw4aZeK4rNEV59IKEQ%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 650, + "bitrate": 1140776, + "average_bitrate": 896349, + "size": 1089308208, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 854, + "height": 480, + "fps": 24, + "quality": "480p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.30.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "sd", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=1217604656&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=318&keepalive=yes&lmt=1687683766633750&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhANv36YddF_-PEBL7bQPlXx-L6bQtiGCanHyCCjKaUlf5AiEA1nnM4-4CwyoUmuPy4MTcV8ZHWI8eb_LXkl5pNMAKTrI%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 318, + "bitrate": 1077978, + "average_bitrate": 1001920, + "size": 1217604656, + "index_range": { "start": 296, "end": 35230 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 854, + "height": 480, + "fps": 24, + "quality": "480p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "sd", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=1564152654&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=651&keepalive=yes&lmt=1687683674357492&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAKP6OpkI1ucbYHTRsQ_M7fgS1rKL9b07q1dA48XzWkoiAiB8WroZ5W8N87Ps_15jIqnwOOvvjiWiwKQNy7VesNf1yA%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 651, + "bitrate": 2118737, + "average_bitrate": 1287081, + "size": 1564152654, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 854, + "height": 480, + "fps": 24, + "quality": "480p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.30.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "sd", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=3050086373&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=273&keepalive=yes&lmt=1687683827682140&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAP1LFWFFPq_8OA2hvftrtFnltn5rdw6gbO2RHVlsxh9yAiEApo6W8APqH4BWLarBhSD6wnbd9QisKaqI3cybenNhzDA%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 273, + "bitrate": 2636389, + "average_bitrate": 2509798, + "size": 3050086373, + "index_range": { "start": 296, "end": 35246 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 854, + "height": 480, + "fps": 24, + "quality": "480p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "sd", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=2758091505&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=145&keepalive=yes&lmt=1687683584528515&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAKmUqc46-yGqgsS_Gb-iO7lL3__wuZgrAnIxR1WTpfbJAiEAgJn01hO4SZ1fjFpxanTaWXBc0szICqtbJr_Oko363LI%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 145, + "bitrate": 2330809, + "average_bitrate": 2269527, + "size": 2758091505, + "index_range": { "start": 1778, "end": 25125 }, + "init_range": { "start": 0, "end": 1777 }, + "duration_ms": 9722170, + "width": 1280, + "height": 720, + "fps": 24, + "quality": "720p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.4d401f\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": "hd", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=4148939275&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=224&keepalive=yes&lmt=1687683648849848&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAIfUECZGkOSKnJUPbvN-j8gJk2eaKppHeTsWSB120VeoAiBop7tl2DxYb4ZjBMcm-WWUpzFJ95rpCrEuwU6l9Kuw7w%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 224, + "bitrate": 3490515, + "average_bitrate": 3414002, + "size": 4148939275, + "index_range": { "start": 1778, "end": 25125 }, + "init_range": { "start": 0, "end": 1777 }, + "duration_ms": 9722170, + "width": 1280, + "height": 720, + "fps": 24, + "quality": "720p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.4d401f\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": "hd", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=6484897237&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=225&keepalive=yes&lmt=1687683682213043&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAO7aBQpqAtQBRGVPCyDnNlOzZR_q4UhoCsYgNlK_IBUDAiATDsjxN4ExrkPPNI1r20EcdbQmgyWEyjNARosx0-BlRQ%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 225, + "bitrate": 5822460, + "average_bitrate": 5336172, + "size": 6484897237, + "index_range": { "start": 1778, "end": 25125 }, + "init_range": { "start": 0, "end": 1777 }, + "duration_ms": 9722170, + "width": 1280, + "height": 720, + "fps": 24, + "quality": "720p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.4d401f\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": "hd", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=1526532630&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=274&keepalive=yes&lmt=1687683695743068&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAOJI_UCRZ26vKJorJGc8_RKjMuCu76QpRdTg5h9ZG5dyAiAkL2hoSu8Uch5_mPJrdqXnw640H677H4CL1GmjoYFQwA%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 274, + "bitrate": 1353802, + "average_bitrate": 1256125, + "size": 1526532630, + "index_range": { "start": 296, "end": 35235 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 1280, + "height": 720, + "fps": 24, + "quality": "720p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "hd", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=1654154289&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=652&keepalive=yes&lmt=1687683666044813&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgbHrKRlX1DEkEoYUsVBsJ3XFa_yGuioN7BDdXq54wpqACIQDS3lPEUdFIrImh1pA_ePhl7hNKKzjna6vlHLmu2UfGAw%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 652, + "bitrate": 1648390, + "average_bitrate": 1361139, + "size": 1654154289, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 1280, + "height": 720, + "fps": 24, + "quality": "720p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.31.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "hd", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=2440702853&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=357&keepalive=yes&lmt=1687683701335613&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgWKKO59NLXM_2AM2_BtLHlyq3-s1njqMINJIkmWLDI4cCIQCq2m8AgNuW_5EPFevn9XjChvB7TvZ2xIU3d-Gqh3wgVw%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 357, + "bitrate": 2123777, + "average_bitrate": 2008360, + "size": 2440702853, + "index_range": { "start": 296, "end": 35243 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 1280, + "height": 720, + "fps": 24, + "quality": "720p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "hd", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=2519784719&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=653&keepalive=yes&lmt=1687683721397421&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgegvpca7PnIfdnMy9xGKRXlzXEaOJSQADmcYc7bciQwgCID-wU3GewzCFyk6zzhCzyEDerK_xyr5NqQxoiwqjWEuk&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 653, + "bitrate": 3118631, + "average_bitrate": 2073433, + "size": 2519784719, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 1280, + "height": 720, + "fps": 24, + "quality": "720p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.31.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "hd", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=2884061232&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=654&keepalive=yes&lmt=1687683671137810&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAJusW3sVH73Q8fti3ukJcCGai7-0nFPH3VFZ6BKAaS8BAiEAhmY0v0IOLy-n2v2QUgRYHpOFU0x2S3QyAnZ0Slc5TG4%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 654, + "bitrate": 5409323, + "average_bitrate": 2373183, + "size": 2884061232, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 1280, + "height": 720, + "fps": 24, + "quality": "720p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.31.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "hd", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=4279750869&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=358&keepalive=yes&lmt=1687683741007967&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhANrgKzQMOEFka-jdwW5LoVPqA8oc8xeAPruEDdf0yArrAiEAkDBy4oIZS9XBtaj-VRxnIQ1iMO2cxLQ29fCphNXsGQo%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 358, + "bitrate": 3729729, + "average_bitrate": 3521642, + "size": 4279750869, + "index_range": { "start": 296, "end": 35250 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 1280, + "height": 720, + "fps": 24, + "quality": "720p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "hd", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=5090115460&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=146&keepalive=yes&lmt=1687683698262673&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgEXH7kzp9Wvl9VX2yqh0NFQyD3bDQPpYUuNYt2QXIRcoCIQDZVR1SStvHdb25emyY5aUdsHqdp8hL_rIocCRr3MmDhw%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 146, + "bitrate": 4428107, + "average_bitrate": 4188460, + "size": 5090115460, + "index_range": { "start": 1780, "end": 25127 }, + "init_range": { "start": 0, "end": 1779 }, + "duration_ms": 9722170, + "width": 1920, + "height": 1080, + "fps": 24, + "quality": "1080p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.640028\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": "hd", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=6706636851&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=226&keepalive=yes&lmt=1687683768078443&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgT-8dSHwxXMEdOJ4JwMjENY40NvM2WY0NQoqMdXbJhjoCIHEmB9_BC-CyfbsiufQK6jPxgLYnBYBT_nA1TvqSiiUB&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 226, + "bitrate": 5834499, + "average_bitrate": 5518633, + "size": 6706636851, + "index_range": { "start": 1780, "end": 25127 }, + "init_range": { "start": 0, "end": 1779 }, + "duration_ms": 9722170, + "width": 1920, + "height": 1080, + "fps": 24, + "quality": "1080p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.640028\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": "hd", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=9178025379&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=227&keepalive=yes&lmt=1687683751294147&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAIXUwZwd71QZseSsqeQIFd9ybx8Oot_X6dj09PmWgdIAAiEA__ni0L-zm0ckgec8F4CuttqvaI8MYKHO5_joD2In65Y%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 227, + "bitrate": 8147513, + "average_bitrate": 7552244, + "size": 9178025379, + "index_range": { "start": 1780, "end": 25127 }, + "init_range": { "start": 0, "end": 1779 }, + "duration_ms": 9722170, + "width": 1920, + "height": 1080, + "fps": 24, + "quality": "1080p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.640028\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": "hd", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=2696431037&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=275&keepalive=yes&lmt=1687683707126198&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgHzMBbbCHFDnFihGmbpEknm3hW4EiaaL7ZI__knKIl_UCIEsODAd5oR2OSGO_J7-mqgFFQrcv92euV40RwtoVyIv3&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 275, + "bitrate": 2431079, + "average_bitrate": 2218789, + "size": 2696431037, + "index_range": { "start": 296, "end": 35245 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 1920, + "height": 1080, + "fps": 24, + "quality": "1080p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "hd", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=2895314587&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=657&keepalive=yes&lmt=1687683660875438&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgJ8GeeFrTkVlNZagANyL8zl5Dd4Jg-PTvl0pj2TnshfcCIQCVz4968qewi2zzaoXuN0d8IAKVsU4N8mzv8cNEyDmMLg%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 657, + "bitrate": 3060344, + "average_bitrate": 2382443, + "size": 2895314587, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 1920, + "height": 1080, + "fps": 24, + "quality": "1080p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.40.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "hd", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=4196769612&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=359&keepalive=yes&lmt=1687683736359115&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhANXFMSEQq6fSy4Z7vBB2awrf96GMOEAURHONWt9zMq4dAiEAnvy-jWWLP6eIuMST1wJz9A8aHchR0LFUPfeFO40WVCc%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 359, + "bitrate": 3735584, + "average_bitrate": 3453360, + "size": 4196769612, + "index_range": { "start": 296, "end": 35250 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 1920, + "height": 1080, + "fps": 24, + "quality": "1080p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "hd", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=4532417137&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=658&keepalive=yes&lmt=1687683892653149&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgQMhPnhNcgD1FuAZKcRjdMGfU97XMfk5p1vQQnDLrbEUCIGgp7791fKWGBy0riSHnu7Qd0beM5kZlWvwsjJgBbOer&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 658, + "bitrate": 5455969, + "average_bitrate": 3729551, + "size": 4532417137, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 1920, + "height": 1080, + "fps": 24, + "quality": "1080p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.40.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "hd", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=5448753910&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=659&keepalive=yes&lmt=1687683799852999&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAITFnd_lJmqz3Oi8MnJAmw1S7lNeOszng4bhETmenDueAiEAoFI8N5pM1Vl4PHr9ae72GcuXW9CV7ONgGgPSotpTH6U%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 659, + "bitrate": 5513945, + "average_bitrate": 4483570, + "size": 5448753910, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 1920, + "height": 1080, + "fps": 24, + "quality": "1080p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.40.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "hd", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=6316012989&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=360&keepalive=yes&lmt=1687684175871682&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgXpaSy6Bm-MMSD_sEZpIzwvOzV9F8l0ydWul08VTpigcCIFEwz3HufM7FXciR_AeUEet0J6Y-GUwI4YEEFIa3BLwi&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 360, + "bitrate": 5602846, + "average_bitrate": 5197204, + "size": 6316012989, + "index_range": { "start": 296, "end": 35900 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 1920, + "height": 1080, + "fps": 24, + "quality": "1080p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "hd", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=7342818065&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=276&keepalive=yes&lmt=1687684169971282&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgNbbBDBKmAIDh7ZxcoE3fAZdpoZEiCR8wlmjDcEZptSoCIA8HcWFDqeoG7QNrfH7ATYe03M2o9CGcSHIa1XMY6vCg&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 276, + "bitrate": 7001858, + "average_bitrate": 6042122, + "size": 7342818065, + "index_range": { "start": 296, "end": 36061 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 2560, + "height": 1440, + "fps": 24, + "quality": "1440p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "uhd1", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=8549759835&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=583&keepalive=yes&lmt=1687684326619633&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAIFd_9vVmpyPQ8fUfq7WVCGiQdSeCiCd5DtD2UoIoPoIAiBrReL1LlPkOua5A4AO0FUfQBk-p5Fo6PmAJVvhDsfqQw%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 583, + "bitrate": 8133269, + "average_bitrate": 7035268, + "size": 8549759835, + "index_range": { "start": 296, "end": 36224 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 2560, + "height": 1440, + "fps": 24, + "quality": "1440p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "uhd1", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=9100013831&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=663&keepalive=yes&lmt=1687684667734429&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAMcfdUrnBy81snZKbqZEKgDxlYqDTT-HFnDxfYXsuCMWAiEAp5P69WvyEa0FnG7MsmTP5iRa_Z5Obi3EOE9Ar3_-9h8%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 663, + "bitrate": 9149028, + "average_bitrate": 7488051, + "size": 9100013831, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 2560, + "height": 1440, + "fps": 24, + "quality": "1440p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.50.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "uhd1", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=10790590716&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=664&keepalive=yes&lmt=1687685389653542&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgPOdKo5a_fT_CNNZO-PNRGWSgbkr7iHT0S08ldyMRsN4CIAam3j9zN8f9fuNOtsWw002ujUiXfX-4ElRWP-4l4bWN&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 664, + "bitrate": 12185050, + "average_bitrate": 8879162, + "size": 10790590716, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 2560, + "height": 1440, + "fps": 24, + "quality": "1440p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.50.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "uhd1", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=10972220765&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=584&keepalive=yes&lmt=1687685214905296&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAITDSwNqXkxWuBsbRSYvMSELHMvYyWs_AL6lHLcGSMhQAiEAr6HJvx2LT2qdKBplc9Yjdy9zT8LrWcdwtF2j4OQuhlw%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 584, + "bitrate": 10016580, + "average_bitrate": 9028618, + "size": 10972220765, + "index_range": { "start": 296, "end": 36440 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 2560, + "height": 1440, + "fps": 24, + "quality": "1440p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "uhd1", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=14399508762&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=665&keepalive=yes&lmt=1687685656892939&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhALcGIFvGjcc-r_jdJWhdffNK_z7pM30cuXaudBRcBlG1AiAyrvLe8WODMWJkCP_XqA_Xiw9tr0ULrT4geqYtD8suOg%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 665, + "bitrate": 18145013, + "average_bitrate": 11848802, + "size": 14399508762, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 2560, + "height": 1440, + "fps": 24, + "quality": "1440p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.50.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "uhd1", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=14638328358&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=314&keepalive=yes&lmt=1687687073338379&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAL9fd9aoKgbZCsBPgGZOD5SH033dG_hPErVBFyMXHKODAiEA0_v4L2EoOQqNQ65E37YvVu4i7de3ygwR40-DAtz6UdY%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 314, + "bitrate": 12784615, + "average_bitrate": 12045317, + "size": 14638328358, + "index_range": { "start": 296, "end": 36631 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 3840, + "height": 2160, + "fps": 24, + "quality": "2160p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "uhd1", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=20717969939&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=668&keepalive=yes&lmt=1687685991320824&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAO8g-CC6s2a4QIg085MCuSS08rjvgtgtM9auKIrHudVcAiB7C__X1_DLuDVmDxoOomdKuJiYLfCf5kDVz0K43rBJ-g%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 668, + "bitrate": 18280166, + "average_bitrate": 17048021, + "size": 20717969939, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 3840, + "height": 2160, + "fps": 24, + "quality": "2160p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.50.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "uhd1", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=21991389034&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=585&keepalive=yes&lmt=1687688508684718&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAKf-MW244Bg9SkS7N5Jo1YPgC1wortgianFQ4-DNHddsAiB-qsC98ahQMw8CjsH0bJk0Hffg7eUWQi7Q6wL8WhuMrg%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 585, + "bitrate": 19165247, + "average_bitrate": 18095868, + "size": 21991389034, + "index_range": { "start": 296, "end": 36822 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 3840, + "height": 2160, + "fps": 24, + "quality": "2160p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "uhd1", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=22312819777&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=669&keepalive=yes&lmt=1687686742395745&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgFEFyG7oJ86MSVt2wnc7LJejXUyXdjwWyUL1lMzqJMIoCIQCcz0OkwSipLTsz2aWDp7mfQMGm41kDrDG83uajqHdSbw%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 669, + "bitrate": 19778734, + "average_bitrate": 18360361, + "size": 22312819777, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 3840, + "height": 2160, + "fps": 24, + "quality": "2160p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.50.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "uhd1", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=30574533904&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=561&keepalive=yes&lmt=1687687968457629&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhALCVNCKUP3Q5Za6AxdO1D_6naUgdUv9WYn8tW98s2zftAiEAm1OYJy71X04JY-nljGh5xfSXt_fhzFf-EPD_lc8k2i8%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 561, + "bitrate": 26705606, + "average_bitrate": 25158608, + "size": 30574533904, + "index_range": { "start": 296, "end": 36927 }, + "init_range": { "start": 0, "end": 295 }, + "duration_ms": 9722170, + "width": 3840, + "height": 2160, + "fps": 24, + "quality": "2160p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": "uhd1", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&aitags=142%2C143%2C144%2C145%2C146%2C161%2C222%2C223%2C224%2C225%2C226%2C227%2C273%2C274%2C275%2C276%2C279%2C280%2C314%2C317%2C318%2C357%2C358%2C359%2C360%2C561%2C583%2C584%2C585%2C647%2C648%2C649%2C650%2C651%2C652%2C653%2C654%2C657%2C658%2C659%2C663%2C664%2C665%2C668%2C669%2C670&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=44813135183&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=670&keepalive=yes&lmt=1687688928999646&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAKUc2SC2YNg2ZNc4F1aVAZcf6yBQxURlJYbVrL_JjVZgAiEAiGN9UovM1eM9aMXx61XCv4Sp7I2hv59FQEpFO74hdL4%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 670, + "bitrate": 45017841, + "average_bitrate": 36875006, + "size": 44813135183, + "index_range": { "start": 1733, "end": 25080 }, + "init_range": { "start": 0, "end": 1732 }, + "duration_ms": 9722170, + "width": 3840, + "height": 2160, + "fps": 24, + "quality": "2160p", + "hdr": false, + "mime": "video/mp4; codecs=\"vp09.00.50.08.00.01.01.01.00\"", + "format": "mp4", + "codec": "vp9", + "drm_track_type": "uhd1", + "drm_systems": ["fairplay"] + } + ], + "audio_streams": [ + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=59285810&ctier=A&dur=9722.287&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=688&keepalive=yes&lmt=1688479187135318&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgI_2AqYcShSOUpPH-ykBRIS7_nlb76zuUPXjA4_X_INQCIEVfjU6SnVAf4petNQqe5aq7vplbl-NS03fiMzDzVVqL&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 688, + "bitrate": 60011, + "average_bitrate": 48783, + "size": 59285810, + "index_range": { "start": 1659, "end": 13378 }, + "init_range": { "start": 0, "end": 1658 }, + "duration_ms": 9722287, + "mime": "audio/mp4; codecs=\"mp4a.40.5\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=60994890&ctier=A&dur=9722.287&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=148&keepalive=yes&lmt=1688479268793582&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAPe2fJ1K1NTPWCyceDvB2MIgCdxDsa_1I5Miltdv6fwIAiEA1GWayTqwiOjfj2NLZTJXNRdAt8k2aNynRWWCqC4ot0M%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 148, + "bitrate": 59997, + "average_bitrate": 50189, + "size": 60994890, + "index_range": { "start": 1642, "end": 13361 }, + "init_range": { "start": 0, "end": 1641 }, + "duration_ms": 9722287, + "mime": "audio/mp4; codecs=\"mp4a.40.5\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=157344952&ctier=A&dur=9722.217&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=689&keepalive=yes&lmt=1688479480951999&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgKC_W7ra8cfUUMV6Nk8UrIDHdjoxd35T3e__HqfBoKnECIQCHp5LSH-4si8jEwnd9xBbUQSlzEgQG_fy3psdl_RPMMg%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 689, + "bitrate": 140502, + "average_bitrate": 129472, + "size": 157344952, + "index_range": { "start": 1641, "end": 13360 }, + "init_range": { "start": 0, "end": 1640 }, + "duration_ms": 9722217, + "mime": "audio/mp4; codecs=\"mp4a.40.2\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=160727104&ctier=A&dur=9722.217&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=149&keepalive=yes&lmt=1688479167129715&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgdgVp0Jzba4qED8aCcBFGX5g4RNTHqP5EJDy_iQ43jQ4CIEM7TT-GAfPvbv9-Lv7HCIiiTkxDaduAN8-YgnTM9-WT&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 149, + "bitrate": 140489, + "average_bitrate": 132255, + "size": 160727104, + "index_range": { "start": 1624, "end": 13343 }, + "init_range": { "start": 0, "end": 1623 }, + "duration_ms": 9722217, + "mime": "audio/mp4; codecs=\"mp4a.40.2\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=312900444&ctier=A&dur=9722.217&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=690&keepalive=yes&lmt=1688479293774516&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgNwLfDdugO0ilGAEgLENbKFJ8SgAudRvL4Je9ZNgcxssCIBMi_02PgfOx03zJijNaVGMPU_7UnxmWe7piQdH8bEd2&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 690, + "bitrate": 268255, + "average_bitrate": 257472, + "size": 312900444, + "index_range": { "start": 1641, "end": 13360 }, + "init_range": { "start": 0, "end": 1640 }, + "duration_ms": 9722217, + "mime": "audio/mp4; codecs=\"mp4a.40.2\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=316282596&ctier=A&dur=9722.217&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=150&keepalive=yes&lmt=1688479169509312&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgGC8VJmgt0DCj7A-Mg27ZQKUYnAl2ArcjTxnMle_Nh-sCIAepwXd2fykyExQPuEb5qWGAIH6yqtUfGBjoldGWgfw5&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 150, + "bitrate": 268241, + "average_bitrate": 260255, + "size": 316282596, + "index_range": { "start": 1624, "end": 13343 }, + "init_range": { "start": 0, "end": 1623 }, + "duration_ms": 9722217, + "mime": "audio/mp4; codecs=\"mp4a.40.2\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=63479558&ctier=A&dur=9722.181&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=350&keepalive=yes&lmt=1688480132537717&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgZkw38xsKwgnh6InrtetNrKi-JPkB4egm4b73bFtvWesCIHviSlCLGPxHQe9I6IdOQgD22k-MJgKfwo24rUMM4gbC&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 350, + "bitrate": 71884, + "average_bitrate": 52234, + "size": 63479558, + "index_range": { "start": 312, "end": 17563 }, + "init_range": { "start": 0, "end": 311 }, + "duration_ms": 9722181, + "mime": "audio/webm; codecs=\"opus\"", + "format": "webm", + "codec": "opus", + "channels": 2, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=82089299&ctier=A&dur=9722.181&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=351&keepalive=yes&lmt=1688480119918217&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgGG4g-XbPXKf7WnvPzSj3hYxB132D9wmom9xwyTudVpUCIC4hDCapxC_hbPaZ_eyPKdjRn1ILTWJf6yZRtIVoCkEQ&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 351, + "bitrate": 89277, + "average_bitrate": 67548, + "size": 82089299, + "index_range": { "start": 312, "end": 17621 }, + "init_range": { "start": 0, "end": 311 }, + "duration_ms": 9722181, + "mime": "audio/webm; codecs=\"opus\"", + "format": "webm", + "codec": "opus", + "channels": 2, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=158286208&ctier=A&dur=9722.181&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=352&keepalive=yes&lmt=1688480122522289&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAIV_f2G9DkZ9qKxO3dhlv-7Pk8IjefDvuphn-qTSi6XZAiEA3xzPwwqFshYaAWEwyYVRYZ0YhvC7ovNB74go4lTwms0%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 352, + "bitrate": 158674, + "average_bitrate": 130247, + "size": 158286208, + "index_range": { "start": 312, "end": 17720 }, + "init_range": { "start": 0, "end": 311 }, + "duration_ms": 9722181, + "mime": "audio/webm; codecs=\"opus\"", + "format": "webm", + "codec": "opus", + "channels": 2, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=467730839&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=326&keepalive=yes&lmt=1688480117777052&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgLmYpFNSP5kE-Y6g8JY8q52rXLkpamw6idM3unDaPungCIQDcO9x7Hk05kXsnUPNaEZiVSzqDt0D6AGnAZpLWoTMNHA%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 326, + "bitrate": 394738, + "average_bitrate": 384877, + "size": 467730839, + "index_range": { "start": 1574, "end": 13293 }, + "init_range": { "start": 0, "end": 1573 }, + "duration_ms": 9722170, + "mime": "audio/mp4; codecs=\"dtse\"", + "format": "m4a", + "codec": "unknown", + "channels": 6, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=475017108&ctier=A&dur=9722.218&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=261&keepalive=yes&lmt=1688477794158898&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAM7K9OSrAgZK-n6D-XuZDnS1IfXQ0he_OMXk9SrXwrv9AiBa6490o5gAZ7ezjoSMXb4YGpN_ZM_Vw0zOcGQwF7etjw%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 261, + "bitrate": 399245, + "average_bitrate": 390871, + "size": 475017108, + "index_range": { "start": 1624, "end": 13343 }, + "init_range": { "start": 0, "end": 1623 }, + "duration_ms": 9722218, + "mime": "audio/mp4; codecs=\"mp4a.40.2\"", + "format": "m4a", + "codec": "mp4a", + "channels": 6, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=469250037&ctier=A&dur=9722.240&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=381&keepalive=yes&lmt=1688477829456782&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAOIerwBr8hhRxylk60K_snBZNwq0S71cggM4JsEYqsRzAiEAjuDpHHkjtjEK4ZGRKBR6SrHk40edApXfD9mxNKQrWs8%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 381, + "bitrate": 394711, + "average_bitrate": 386125, + "size": 469250037, + "index_range": { "start": 1540, "end": 13259 }, + "init_range": { "start": 0, "end": 1539 }, + "duration_ms": 9722240, + "mime": "audio/mp4; codecs=\"ac-3\"", + "format": "m4a", + "codec": "ac-3", + "channels": 6, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=466785993&ctier=A&dur=9722.240&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=691&keepalive=yes&lmt=1688482373146846&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgBvSn2q2Ij9tIb52-nqUAWeGGxuVHIjLg_XtfuwX93x0CIDZyRiFUuyX3-dJyiIWwjsx9VxMF5iDatIjYDeEf6L8M&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 691, + "bitrate": 394728, + "average_bitrate": 384097, + "size": 466785993, + "index_range": { "start": 1561, "end": 13280 }, + "init_range": { "start": 0, "end": 1560 }, + "duration_ms": 9722240, + "mime": "audio/mp4; codecs=\"ec-3\"", + "format": "m4a", + "codec": "ec-3", + "channels": 6, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=469250041&ctier=A&dur=9722.240&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=329&keepalive=yes&lmt=1688482591147712&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAO309LRK1bc54Zf-9sXfXwyszxlLDREZSZ3OssHNwoHoAiB5RtPRUCpCdb80o_76pFtW9Qu8uh3AudCKx-1ok85TjQ%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Ddubbed%3Alang%3Dde", + "itag": 329, + "bitrate": 394714, + "average_bitrate": 386125, + "size": 469250041, + "index_range": { "start": 1544, "end": 13263 }, + "init_range": { "start": 0, "end": 1543 }, + "duration_ms": 9722240, + "mime": "audio/mp4; codecs=\"ec-3\"", + "format": "m4a", + "codec": "ec-3", + "channels": 6, + "loudness_db": null, + "track": { + "id": "de.3", + "lang": "de", + "lang_name": "German", + "is_default": false, + "track_type": "dubbed" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=59285810&ctier=A&dur=9722.287&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=688&keepalive=yes&lmt=1687683278543298&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAMpRcab5m61ny3Xvew1yFt6VFrXGcLTOjmOjB3pMIkilAiEAgvUx6c5aBD_SkgzGB76KcUBLirzhromdyW5fgaiDNQI%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 688, + "bitrate": 59967, + "average_bitrate": 48783, + "size": 59285810, + "index_range": { "start": 1659, "end": 13378 }, + "init_range": { "start": 0, "end": 1658 }, + "duration_ms": 9722287, + "mime": "audio/mp4; codecs=\"mp4a.40.5\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=60994890&ctier=A&dur=9722.287&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=148&keepalive=yes&lmt=1687683278813823&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAM5sNgspHdOpIsvhv23FIxdaKgkejCX6CVyEwcr8eT6NAiBkzckxZJnnljTkYWKezYhmUpdqETvuUujOFQxCghM2BQ%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 148, + "bitrate": 59953, + "average_bitrate": 50189, + "size": 60994890, + "index_range": { "start": 1642, "end": 13361 }, + "init_range": { "start": 0, "end": 1641 }, + "duration_ms": 9722287, + "mime": "audio/mp4; codecs=\"mp4a.40.5\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=157344952&ctier=A&dur=9722.217&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=689&keepalive=yes&lmt=1687683273140756&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhANqAq05uQJYZpzUXaBY08ke4HYZuZtx9qhXMW4ycNngQAiEAzgPjYiSV7t4UlcWlRPdYCgF8cWluSi1ADGr5YuysORU%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 689, + "bitrate": 140493, + "average_bitrate": 129472, + "size": 157344952, + "index_range": { "start": 1641, "end": 13360 }, + "init_range": { "start": 0, "end": 1640 }, + "duration_ms": 9722217, + "mime": "audio/mp4; codecs=\"mp4a.40.2\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=160727104&ctier=A&dur=9722.217&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=149&keepalive=yes&lmt=1687683277246857&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAL2z0W-SjGt7-ubNpjVRZAmL2pJx8c_jOSC7ZKqhUSLgAiA_1oBEJcT9jqgVIZ-gUZ9so0XbKHBCGD_eABcHeZg-Vw%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 149, + "bitrate": 140479, + "average_bitrate": 132255, + "size": 160727104, + "index_range": { "start": 1624, "end": 13343 }, + "init_range": { "start": 0, "end": 1623 }, + "duration_ms": 9722217, + "mime": "audio/mp4; codecs=\"mp4a.40.2\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=312900444&ctier=A&dur=9722.217&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=690&keepalive=yes&lmt=1687683264744213&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAIkvTHUGEU3qpxxXygCn467q6zgb2O3Iy9tV1OA_biyAAiBlVO4p_eg4wBxyPGuhY_DxTs6ISnDVyMrzC22x_Io5VA%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 690, + "bitrate": 268235, + "average_bitrate": 257472, + "size": 312900444, + "index_range": { "start": 1641, "end": 13360 }, + "init_range": { "start": 0, "end": 1640 }, + "duration_ms": 9722217, + "mime": "audio/mp4; codecs=\"mp4a.40.2\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=316282596&ctier=A&dur=9722.217&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=150&keepalive=yes&lmt=1687683266259960&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhANwCAtYIDCLzoxt5GkCZs6jknz9mBgsEAa6QAS3uodQOAiAknnqyU9Kk7OjEyQslo5XiaEeTGHQi3W8PAv1kSOoDnA%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 150, + "bitrate": 268221, + "average_bitrate": 260255, + "size": 316282596, + "index_range": { "start": 1624, "end": 13343 }, + "init_range": { "start": 0, "end": 1623 }, + "duration_ms": 9722217, + "mime": "audio/mp4; codecs=\"mp4a.40.2\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=63183052&ctier=A&dur=9722.181&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=350&keepalive=yes&lmt=1687683282388560&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgWDKzfDGVFNpcH3P3vokiz_eOgx7rgk-T0VDtEKFmml0CIDAyqPQNvvGR5TKdnlutpCzgDvPTzm2i_o3zBPlX_pJy&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 350, + "bitrate": 66266, + "average_bitrate": 51990, + "size": 63183052, + "index_range": { "start": 312, "end": 17562 }, + "init_range": { "start": 0, "end": 311 }, + "duration_ms": 9722181, + "mime": "audio/webm; codecs=\"opus\"", + "format": "webm", + "codec": "opus", + "channels": 2, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=81786180&ctier=A&dur=9722.181&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=351&keepalive=yes&lmt=1687683282529628&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAKP2q4Xv3X0ooMj-AuFTE7yuL6AgwFjf823R8_RiezEgAiAlXmznGrvoca11eXwQ35V3tQ0at86_P8g_OCPUMTxQMA%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 351, + "bitrate": 84576, + "average_bitrate": 67298, + "size": 81786180, + "index_range": { "start": 312, "end": 17619 }, + "init_range": { "start": 0, "end": 311 }, + "duration_ms": 9722181, + "mime": "audio/webm; codecs=\"opus\"", + "format": "webm", + "codec": "opus", + "channels": 2, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=157851000&ctier=A&dur=9722.181&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=352&keepalive=yes&lmt=1687683282388565&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fwebm&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgTO3kY0SDZAouN4LQbqJSHTtA7f5qKkdcVWE88XJJ_VECIQCBPKCt8CYB6DHuKzia3R-5zjed4I3hki-7Y2_uMQLCwQ%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 352, + "bitrate": 159592, + "average_bitrate": 129889, + "size": 157851000, + "index_range": { "start": 312, "end": 17718 }, + "init_range": { "start": 0, "end": 311 }, + "duration_ms": 9722181, + "mime": "audio/webm; codecs=\"opus\"", + "format": "webm", + "codec": "opus", + "channels": 2, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=467730839&ctier=A&dur=9722.170&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=326&keepalive=yes&lmt=1687683663868681&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgRvgkqgcIlv0B4VDuW4RayB4kbPfYYjl5jilThntENHACIQC_5B2bOJCv26m9lwBmXAbSFDLSPEefiHVvB2JbmB5sfQ%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 326, + "bitrate": 394738, + "average_bitrate": 384877, + "size": 467730839, + "index_range": { "start": 1574, "end": 13293 }, + "init_range": { "start": 0, "end": 1573 }, + "duration_ms": 9722170, + "mime": "audio/mp4; codecs=\"dtse\"", + "format": "m4a", + "codec": "unknown", + "channels": 6, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=475016515&ctier=A&dur=9722.218&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=261&keepalive=yes&lmt=1687683255942121&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAJnYdXGwxbMhE3i9NKtYCCrmKjBV2Vxgxz0NCBtXuWMiAiEAvQopH6inmQxelgQrl-seTZDU-7TCGLYbGP7o-KoKfNg%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 261, + "bitrate": 399205, + "average_bitrate": 390870, + "size": 475016515, + "index_range": { "start": 1624, "end": 13343 }, + "init_range": { "start": 0, "end": 1623 }, + "duration_ms": 9722218, + "mime": "audio/mp4; codecs=\"mp4a.40.2\"", + "format": "m4a", + "codec": "mp4a", + "channels": 6, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=469250037&ctier=A&dur=9722.240&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=381&keepalive=yes&lmt=1687683244712859&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAKXrwcaZk_NESU2oP5lS0GDZvvFNOg-axJvz3xIKxSk1AiA_y6jcBb5TosG6wuuxX9KBO9fNBaoVeTBgNviF4Clv4w%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 381, + "bitrate": 394711, + "average_bitrate": 386125, + "size": 469250037, + "index_range": { "start": 1540, "end": 13259 }, + "init_range": { "start": 0, "end": 1539 }, + "duration_ms": 9722240, + "mime": "audio/mp4; codecs=\"ac-3\"", + "format": "m4a", + "codec": "ac-3", + "channels": 6, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=466785993&ctier=A&dur=9722.240&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=691&keepalive=yes&lmt=1687683247784606&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgfDzKkOhVxFfWULT0eFC9aM2ZJDw3OwWLtnj28k6hvTsCIQDBajbgZo7m3XeV0FARuB4g4TPFLydkxyPIHkbiyrSuPg%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 691, + "bitrate": 394728, + "average_bitrate": 384097, + "size": 466785993, + "index_range": { "start": 1561, "end": 13280 }, + "init_range": { "start": 0, "end": 1560 }, + "duration_ms": 9722240, + "mime": "audio/mp4; codecs=\"ec-3\"", + "format": "m4a", + "codec": "ec-3", + "channels": 6, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["fairplay"] + }, + { + "url": "https://rr5---sn-h0jeener.googlevideo.com/videoplayback?aid=5c0488f533287530&asource=youtube&bui=AY2Et-NkyUGB6drHIkFCr0ToP8t9AOS64up0-Owwh4Yf-O6qvnjjBFdz7Fs6Grqo6Ki-GHFcFw&c=WEB&clen=469250041&ctier=A&dur=9722.240&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&expire=1737003630&fexp=51326932%2C51335594%2C51353498%2C51355912%2C51384461&fvip=4&gcr=de&gir=yes&hightc=yes&id=b98fb7e4443ca114&initcwndbps=2801250&ip=93.235.184.108&itag=329&keepalive=yes&lmt=1687683252651200&lsig=AGluJ3MwRgIhAJHpDe-OyDAhm5uIGnacZ1NBH8woFM0noBJtngRPnn5mAiEAsAmkoTzrVeLQ8q58XCi7Z895Q1mb5t4fN_AfUoWd2fU%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736982030%2C&mh=3d&mime=audio%2Fmp4&mm=31%2C29&mn=sn-h0jeener%2Csn-h0jelnes&ms=au%2Crdu&mt=1736981586&mv=m&mvi=5&n=P31qX6QwZPWNtA&ns=Y9nsajsoC2zMRwwsmAQSUMMQ&pfa=5&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAILjbszDNz0ese6Cb02T8WRudpVkIlsCQDizjrMeByN3AiAjW8WSTC7AYQsoQrbBmBqb5U15Jz3RNAww352BUg8vmQ%3D%3D&siu=1&source=yt_media&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cctier%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Caid%2Casource%2Cgir%2Cclen%2Cdur%2Clmt&spc=9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI&svpuc=1&txp=0000224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=acont%3Doriginal%3Alang%3Den", + "itag": 329, + "bitrate": 394714, + "average_bitrate": 386125, + "size": 469250041, + "index_range": { "start": 1544, "end": 13263 }, + "init_range": { "start": 0, "end": 1543 }, + "duration_ms": 9722240, + "mime": "audio/mp4; codecs=\"ec-3\"", + "format": "m4a", + "codec": "ec-3", + "channels": 6, + "loudness_db": null, + "track": { + "id": "en.4", + "lang": "en", + "lang_name": "English original", + "is_default": true, + "track_type": "original" + }, + "drm_track_type": "audio", + "drm_systems": ["widevine", "playready"] + } + ], + "subtitles": [ + { + "url": "https://www.youtube.com/api/timedtext?v=XASI9TModTA&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&opi=112496729&xoaf=5&hl=en&ip=0.0.0.0&ipbits=0&expire=1737007230&sparams=ip,ipbits,expire,v,ei,opi,xoaf&signature=06E56D7F2E6FA9EE91920E4299723949FF923612.982F49842FDD5DC047B7D0D66216823227BC003B&key=yt8&lang=de&at=1", + "lang": "de", + "lang_name": "German", + "auto_generated": false + }, + { + "url": "https://www.youtube.com/api/timedtext?v=XASI9TModTA&ei=Dj6IZ_uSLs3l6dsPjd_aWQ&opi=112496729&xoaf=5&hl=en&ip=0.0.0.0&ipbits=0&expire=1737007230&sparams=ip,ipbits,expire,v,ei,opi,xoaf&signature=06E56D7F2E6FA9EE91920E4299723949FF923612.982F49842FDD5DC047B7D0D66216823227BC003B&key=yt8&kind=frc&lang=de&at=1", + "lang": "de", + "lang_name": "Forced", + "auto_generated": false + } + ], + "expires_in_seconds": 21540, + "hls_manifest_url": null, + "dash_manifest_url": "https://manifest.googlevideo.com/api/manifest/dash/expire/1737003630/ei/Dj6IZ_uSLs3l6dsPjd_aWQ/ip/93.235.184.108/id/5c0488f533287530/source/youtube/requiressl/yes/xpc/EgVo2aDSNQ%3D%3D/playback_host/rr5---sn-h0jeener.googlevideo.com/met/1736982030%2C/mh/3d/mm/31%2C29/mn/sn-h0jeener%2Csn-h0jelnes/ms/au%2Crdu/mv/m/mvi/5/pl/26/rms/au%2Cau/tx/51357437/txs/51357435%2C51357436%2C51357437/ctier/A/as/fmp4_audio_cenc%2Cfmp4_sd_hd_cenc/pfa/5/gcr/de/initcwndbps/2801250/hightc/yes/siu/1/spc/9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI/vprv/1/rqh/2/mt/1736981586/fvip/4/keepalive/yes/fexp/51326932%2C51335594%2C51353498%2C51355912%2C51384461/itag/0/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Ctx%2Ctxs%2Cctier%2Cas%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cspc%2Cvprv%2Crqh%2Citag/sig/AJfQdSswRAIgRGOt6B9XX33VLI3cBW4IJBjHtjzvGSwSUz5lGrFpegsCIBSRvvj21BsdHibsMhod72dm_FCzt3VZtKP61w-r5n2-/lsparams/playback_host%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps/lsig/AGluJ3MwRQIhALUqrxIiML5XnPfd9h-nywvh8crYVxT_hobOiytW73FFAiBMWQt9t34-kNtSkoiYgyJRfl3Z1bwu6Ss8d2lOZp1ZjA%3D%3D", + "preview_frames": [], + "drm": { + "widevine_service_cert": [ + 10, 193, 2, 8, 3, 18, 16, 23, 5, 185, 23, 204, 18, 4, 134, 139, 6, 51, 58, 47, + 119, 42, 140, 24, 130, 180, 130, 146, 5, 34, 142, 2, 48, 130, 1, 10, 2, 130, 1, 1, + 0, 153, 237, 91, 59, 50, 125, 171, 94, 36, 239, 195, 182, 42, 149, 181, 152, 82, + 10, 213, 188, 203, 55, 80, 62, 6, 69, 184, 20, 216, 118, 184, 223, 64, 81, 4, 65, + 173, 140, 227, 173, 177, 27, 184, 140, 78, 114, 90, 94, 74, 158, 7, 149, 41, 29, + 88, 88, 64, 35, 167, 225, 175, 14, 56, 169, 18, 121, 57, 48, 8, 97, 11, 111, 21, + 140, 135, 140, 126, 33, 191, 251, 254, 234, 119, 225, 1, 158, 30, 87, 129, 232, + 164, 95, 70, 38, 61, 20, 230, 14, 128, 88, 168, 96, 122, 220, 224, 79, 172, 132, + 87, 177, 55, 168, 214, 124, 205, 235, 51, 112, 93, 152, 58, 33, 251, 78, 236, 189, + 74, 16, 202, 71, 73, 12, 164, 126, 170, 93, 67, 130, 24, 221, 186, 241, 202, 222, + 51, 146, 241, 61, 111, 251, 100, 66, 253, 49, 225, 191, 64, 176, 198, 4, 209, 196, + 186, 76, 149, 32, 164, 191, 151, 238, 189, 96, 146, 154, 252, 238, 245, 91, 186, + 245, 100, 226, 208, 231, 108, 215, 197, 92, 115, 160, 130, 185, 150, 18, 11, 131, + 89, 237, 206, 36, 112, 112, 130, 104, 13, 111, 103, 198, 216, 44, 74, 197, 243, + 19, 68, 144, 167, 78, 236, 55, 175, 75, 47, 1, 12, 89, 232, 40, 67, 226, 88, 47, + 11, 107, 159, 93, 176, 252, 94, 110, 223, 100, 251, 211, 8, 180, 113, 27, 207, 18, + 80, 1, 156, 159, 90, 9, 2, 3, 1, 0, 1, 58, 20, 108, 105, 99, 101, 110, 115, 101, + 46, 119, 105, 100, 101, 118, 105, 110, 101, 46, 99, 111, 109, 18, 128, 3, 174, 52, + 115, 20, 181, 168, 53, 41, 127, 39, 19, 136, 251, 123, 184, 203, 82, 119, 210, 73, + 130, 60, 221, 209, 218, 48, 185, 51, 57, 81, 30, 179, 204, 189, 234, 4, 185, 68, + 185, 39, 193, 33, 52, 110, 253, 189, 234, 201, 212, 19, 145, 126, 110, 193, 118, + 161, 4, 56, 70, 10, 80, 59, 193, 149, 43, 155, 164, 228, 206, 15, 196, 191, 194, + 10, 152, 8, 170, 175, 75, 252, 209, 156, 29, 207, 205, 245, 116, 204, 172, 40, + 209, 180, 16, 65, 108, 249, 222, 136, 4, 48, 28, 189, 179, 52, 202, 252, 208, 212, + 9, 120, 66, 58, 100, 46, 84, 97, 61, 240, 175, 207, 150, 202, 74, 146, 73, 216, + 85, 228, 43, 58, 112, 62, 241, 118, 127, 106, 155, 211, 109, 107, 248, 43, 231, + 107, 191, 12, 186, 79, 222, 89, 210, 171, 204, 118, 254, 182, 66, 71, 184, 92, 67, + 31, 188, 165, 34, 102, 182, 25, 252, 54, 151, 149, 67, 252, 169, 203, 189, 187, + 250, 250, 14, 26, 85, 231, 85, 163, 199, 188, 230, 85, 249, 100, 111, 88, 42, 185, + 207, 112, 170, 8, 185, 121, 248, 103, 246, 58, 11, 43, 127, 219, 54, 44, 91, 196, + 236, 213, 85, 216, 91, 202, 169, 197, 147, 195, 131, 200, 87, 212, 157, 170, 183, + 126, 64, 183, 133, 29, 223, 210, 73, 152, 128, 142, 53, 178, 88, 231, 93, 120, + 234, 192, 202, 22, 247, 4, 115, 4, 194, 13, 147, 237, 228, 232, 255, 28, 111, 23, + 230, 36, 62, 63, 61, 168, 252, 23, 9, 135, 14, 196, 95, 186, 130, 58, 38, 63, 12, + 239, 161, 247, 9, 59, 25, 9, 146, 131, 38, 51, 55, 5, 4, 58, 41, 189, 166, 249, + 180, 52, 44, 200, 223, 84, 60, 177, 161, 24, 47, 124, 95, 255, 51, 241, 4, 144, + 250, 202, 91, 37, 54, 11, 118, 1, 94, 156, 90, 6, 171, 142, 224, 47, 0, 210, 232, + 213, 152, 97, 4, 170, 204, 77, 212, 117, 253, 150, 238, 156, 228, 227, 38, 242, + 27, 131, 199, 5, 133, 119, 179, 135, 50, 205, 218, 188, 106, 107, 237, 19, 251, + 13, 73, 211, 138, 69, 235, 135, 165, 244 + ], + "drm_params": "ChBiOThmYjdlNDQ0M2NhMTE0EDMqEEZaVFhxV1BMdEJaRlZOM3o4AQ%3D%3D", + "drm_session_id": "FZTXqWPLtBZFVN3z", + "authorized_track_types": ["audio", "sd"] + }, + "client_type": "desktop", + "visitor_data": "Cgs1eTdxNFB1TkpMOSjt1Y28BjIKCgJVUxIEEgAgIA%3D%3D" +} diff --git a/testfiles/player_model/surround.json b/testfiles/player_model/surround.json new file mode 100644 index 0000000..8a9d3a0 --- /dev/null +++ b/testfiles/player_model/surround.json @@ -0,0 +1,546 @@ +{ + "details": { + "id": "xUg9LTEV7RY", + "name": null, + "description": null, + "duration": 1529, + "thumbnail": [ + { + "url": "https://i.ytimg.com/vi/xUg9LTEV7RY/hqdefault.jpg", + "width": 480, + "height": 360 + } + ], + "channel_id": "UCrz03N3HMlCarlnORxxi9nA", + "channel_name": null, + "view_count": null, + "keywords": [], + "is_live": false, + "is_live_content": false + }, + "video_streams": [ + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?bui=AY2Et-NJ7qUBYdkuwJGmxCvQXYCt7gurESfh3VLc48h8VEiwg8MjW6B9bERgvuIHK3RRVoICjsGei9OY&c=TVHTML5&clen=65803143&dur=1528.894&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=18&lmt=1728213323038538&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=mt83mlNenE1YBQ&ns=ejNPKVTQc1Tr9wuz8fMdsvEQ&pl=26&ratebypass=yes&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAIB5AVT643OxxxbaUZWF49XJt3wGSBRydqejaE1vvVJ6AiEA5rXjtBh5ycgGNsejb24FdVL2h7_qn21GioYbF-_HLLM%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&svpuc=1&txp=5309224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 18, + "bitrate": 344331, + "average_bitrate": 344317, + "size": 65803143, + "index_range": null, + "init_range": null, + "duration_ms": 1528894, + "width": 640, + "height": 360, + "fps": 30, + "quality": "360p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": null, + "drm_systems": [] + } + ], + "video_only_streams": [ + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=10877651&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=160&keepalive=yes&lmt=1728213324707471&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAMndzEUeqsjamge2KRqjNLfR1MzrDCehLmJdd5rRRl0GAiBPZclZGa1o8l_gfRQCXbaoEZbEKqUzHyklNYpqOyDtWw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5309224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 160, + "bitrate": 132004, + "average_bitrate": 56920, + "size": 10877651, + "index_range": { "start": 739, "end": 3830 }, + "init_range": { "start": 0, "end": 738 }, + "duration_ms": 1528833, + "width": 256, + "height": 144, + "fps": 30, + "quality": "144p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.4d400c\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=10262153&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=278&keepalive=yes&lmt=1728213314390769&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgdYxXqxtx6fzf4T6Urc1UDZtWDeNt0f2XU0I3jEwZtukCIGqWa0EtrunPklOkhOfJ8RLBnPxzp_iSmJ3n-0vpEhJ2&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=530F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 278, + "bitrate": 111436, + "average_bitrate": 53699, + "size": 10262153, + "index_range": { "start": 219, "end": 4546 }, + "init_range": { "start": 0, "end": 218 }, + "duration_ms": 1528833, + "width": 256, + "height": 144, + "fps": 30, + "quality": "144p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=23558312&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=133&keepalive=yes&lmt=1728213322264338&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhALJ3r_KWSCjn1fb8-fq5Dvai07ldb7YXjQs0L4uY5ZDJAiEAtz-VduvDCzngxJBNraHN0HjoE7ASredZpmLduK82GDc%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5309224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 133, + "bitrate": 283462, + "average_bitrate": 123274, + "size": 23558312, + "index_range": { "start": 740, "end": 3831 }, + "init_range": { "start": 0, "end": 739 }, + "duration_ms": 1528833, + "width": 426, + "height": 240, + "fps": 30, + "quality": "240p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.4d4015\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=11359353&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=242&keepalive=yes&lmt=1728213321238455&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgF-dJ_f9sWCR3astJ-4oVIptbz5qHRFvZNbxgaNquKLoCIQCbeMrmRWu4R68Qa6glaZob1eXk6V38LELv5ri5aUEd9Q%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=530F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 242, + "bitrate": 239640, + "average_bitrate": 59440, + "size": 11359353, + "index_range": { "start": 219, "end": 4546 }, + "init_range": { "start": 0, "end": 218 }, + "duration_ms": 1528833, + "width": 426, + "height": 240, + "fps": 30, + "quality": "240p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=47374607&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=134&keepalive=yes&lmt=1728213280717722&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAMTTrrQeQLT7Tp3D-o9Hnwk1S0Mjs_trlULbDKwWxdIJAiEAwzJayq2NLa_SIhZSRPu-fJjmtcyGFh3Y9eqvG_GBhMY%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5309224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 134, + "bitrate": 637681, + "average_bitrate": 247899, + "size": 47374607, + "index_range": { "start": 741, "end": 3832 }, + "init_range": { "start": 0, "end": 740 }, + "duration_ms": 1528833, + "width": 640, + "height": 360, + "fps": 30, + "quality": "360p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.4d401e\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=22553256&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=243&keepalive=yes&lmt=1728213315689031&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhANKII6wQUvtSbOdk4rOp3rfXRJ-uOHc2h-BWiVMuas9wAiBb8dzjInxIre4NCezpXXG7XuTDVcpJwyXadv5iYLLbfw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=530F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 243, + "bitrate": 357353, + "average_bitrate": 118015, + "size": 22553256, + "index_range": { "start": 220, "end": 4608 }, + "init_range": { "start": 0, "end": 219 }, + "duration_ms": 1528833, + "width": 640, + "height": 360, + "fps": 30, + "quality": "360p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=86551660&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=135&keepalive=yes&lmt=1728213291231905&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgWTa-1tQb8ZwlZOxmPTLoydTof43rGPuEiwdJ4DjzVsgCIQDZPpCDgfKHTlM1-dezRKmUipt6Iio0YmB_jY8fBgVIlg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5309224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 135, + "bitrate": 1150597, + "average_bitrate": 452903, + "size": 86551660, + "index_range": { "start": 741, "end": 3832 }, + "init_range": { "start": 0, "end": 740 }, + "duration_ms": 1528833, + "width": 854, + "height": 480, + "fps": 30, + "quality": "480p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.4d401f\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=41673214&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=244&keepalive=yes&lmt=1728213326814762&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgfT4pSM5VZvfBLCPH5Z-S7_aOg9jirBXqw08rEsCOKisCIQD1T4GjAWSM-2qZ4W2rLgaqXVNv4vHwKeMXtMIafyK6mw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=530F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 244, + "bitrate": 651988, + "average_bitrate": 218065, + "size": 41673214, + "index_range": { "start": 220, "end": 4710 }, + "init_range": { "start": 0, "end": 219 }, + "duration_ms": 1528833, + "width": 854, + "height": 480, + "fps": 30, + "quality": "480p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=172647191&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=136&keepalive=yes&lmt=1728213287670459&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgdNQOcfkyfvH4hPIdBEY8wMZta0iORGGtTDOlauPJ3RECICIuOP5SlmPxE22Tgc1lOvYyVx3nhQw1i8eDQI_JYNDg&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5309224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 136, + "bitrate": 2224017, + "average_bitrate": 903419, + "size": 172647191, + "index_range": { "start": 740, "end": 3831 }, + "init_range": { "start": 0, "end": 739 }, + "duration_ms": 1528833, + "width": 1280, + "height": 720, + "fps": 30, + "quality": "720p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.64001f\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=95184595&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=247&keepalive=yes&lmt=1728213316334386&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgJ5y8r7lGrGc1FoOTCW8i4OWQLNKHGvMvD1hik2VF1JcCIQD5KAa93h4bihPxH6z7II5Kz_yMu2jgzyPmYBUpaWw1rw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=530F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 247, + "bitrate": 1320413, + "average_bitrate": 498077, + "size": 95184595, + "index_range": { "start": 220, "end": 4772 }, + "init_range": { "start": 0, "end": 219 }, + "duration_ms": 1528833, + "width": 1280, + "height": 720, + "fps": 30, + "quality": "720p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=344261319&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=137&keepalive=yes&lmt=1728213303582485&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fmp4&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhALwLj5nlT8LnSO70Tsg_s7PNTDZ4i7DOPraIVLiFQLDQAiEA7jEzVjWbribB-_JoQECvFebXXwUKMF-CdvJRuMMAPJE%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5309224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 137, + "bitrate": 4534204, + "average_bitrate": 1801433, + "size": 344261319, + "index_range": { "start": 742, "end": 3833 }, + "init_range": { "start": 0, "end": 741 }, + "duration_ms": 1528833, + "width": 1920, + "height": 1080, + "fps": 30, + "quality": "1080p", + "hdr": false, + "mime": "video/mp4; codecs=\"avc1.640028\"", + "format": "mp4", + "codec": "avc1", + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=174845987&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=248&keepalive=yes&lmt=1728213320157063&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgUDpAe7bSwnPeKBfmhI948qb8-c9LYtPRH3etAxfC0QkCIQCi0aAvgvurJZtLBjIhLSnJYE_Zgj9Hu1mQ_8SaxwcnwQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=530F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 248, + "bitrate": 2139292, + "average_bitrate": 914925, + "size": 174845987, + "index_range": { "start": 220, "end": 4791 }, + "init_range": { "start": 0, "end": 219 }, + "duration_ms": 1528833, + "width": 1920, + "height": 1080, + "fps": 30, + "quality": "1080p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=683334544&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=271&keepalive=yes&lmt=1728213343211235&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgGv1A5f6_LNaHxVJ53sl20m7KW3ru79J0LyP6DmF8zqUCICgEfsFFU2aAmksgSmyl1AIyFKQhWlAUhV8QEAKdK1E9&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=530F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 271, + "bitrate": 7083602, + "average_bitrate": 3575718, + "size": 683334544, + "index_range": { "start": 221, "end": 4799 }, + "init_range": { "start": 0, "end": 220 }, + "duration_ms": 1528833, + "width": 2560, + "height": 1440, + "fps": 30, + "quality": "1440p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313&bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=1266054110&dur=1528.833&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=313&keepalive=yes&lmt=1728213332957257&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=video%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgfZjFzaCkxNxpAls7mvvUdWKIp-bTJQU8WkWcfxhWJ5ECIQD_Q1E4fHqyuxM8OJ99Kgvar-xBG1et13fAwESGUPzbMw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=530F224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 313, + "bitrate": 14476356, + "average_bitrate": 6624943, + "size": 1266054110, + "index_range": { "start": 221, "end": 4801 }, + "init_range": { "start": 0, "end": 220 }, + "duration_ms": 1528833, + "width": 3840, + "height": 2160, + "fps": 30, + "quality": "2160p", + "hdr": false, + "mime": "video/webm; codecs=\"vp9\"", + "format": "webm", + "codec": "vp9", + "drm_track_type": null, + "drm_systems": [] + } + ], + "audio_streams": [ + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=24744468&dur=1528.894&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=140&keepalive=yes&lmt=1728213302888047&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=audio%2Fmp4&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAMULIyK9jJae9O_XbYA85QixoTjqJaYcT4taK_8e3XCTAiA3U0aHmaTVJeXnpPjojzagv6bNEJcfcDL7WhDthVSrWQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 140, + "bitrate": 131669, + "average_bitrate": 129476, + "size": 24744468, + "index_range": { "start": 723, "end": 2602 }, + "init_range": { "start": 0, "end": 722 }, + "duration_ms": 1528894, + "mime": "audio/mp4; codecs=\"mp4a.40.2\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": -32.33, + "track": null, + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=24744478&dur=1528.894&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=140&keepalive=yes&lmt=1728213399192690&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=audio%2Fmp4&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRgIhAMa06e-3Df09-dQWK3kAl7LfIMiNa_rtdZLiHAEb3521AiEA4iR0bkOyQfKAQBRtA-n351hjsw8Uen2gI2Td4a2VoeM%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=drc%3D1", + "itag": 140, + "bitrate": 131660, + "average_bitrate": 129476, + "size": 24744478, + "index_range": { "start": 723, "end": 2602 }, + "init_range": { "start": 0, "end": 722 }, + "duration_ms": 1528894, + "mime": "audio/mp4; codecs=\"mp4a.40.2\"", + "format": "m4a", + "codec": "mp4a", + "channels": 2, + "loudness_db": -13.58, + "track": null, + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=7687808&dur=1528.861&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=249&keepalive=yes&lmt=1728213909854914&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=audio%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIhAIlgsau2xCIiG9ZEZX7rr9GJIaBa37ft5qigOTDOeVOMAiAW-WiEgYbVzxS1XNos-hW5bPhPxW-a3KZHdIgMX86JNQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=drc%3D1", + "itag": 249, + "bitrate": 43338, + "average_bitrate": 40227, + "size": 7687808, + "index_range": { "start": 266, "end": 2862 }, + "init_range": { "start": 0, "end": 265 }, + "duration_ms": 1528861, + "mime": "audio/webm; codecs=\"opus\"", + "format": "webm", + "codec": "opus", + "channels": 2, + "loudness_db": -13.58, + "track": null, + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=7700676&dur=1528.861&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=249&keepalive=yes&lmt=1728213359214874&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=audio%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgNcNuxTYzK4xkYZeR7A2_xDsncNMDamHMMMl504yZZRkCIGQaMZDC58ZXeZr-9cikFq7ohUdc2X90Zm8oiEazg_kK&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 249, + "bitrate": 44345, + "average_bitrate": 40294, + "size": 7700676, + "index_range": { "start": 266, "end": 2862 }, + "init_range": { "start": 0, "end": 265 }, + "duration_ms": 1528861, + "mime": "audio/webm; codecs=\"opus\"", + "format": "webm", + "codec": "opus", + "channels": 2, + "loudness_db": -32.34, + "track": null, + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=9834354&dur=1528.861&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=250&keepalive=yes&lmt=1728213909864893&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=audio%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgXaY_RFRjcfD4758lWe1QpqALDr1Wp5_zPwHcAfb8sR0CIDl_70UJ4eMc385njIxfniymT78Dzn7UBT9i_sf7UZ5i&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=drc%3D1", + "itag": 250, + "bitrate": 54692, + "average_bitrate": 51459, + "size": 9834354, + "index_range": { "start": 266, "end": 2863 }, + "init_range": { "start": 0, "end": 265 }, + "duration_ms": 1528861, + "mime": "audio/webm; codecs=\"opus\"", + "format": "webm", + "codec": "opus", + "channels": 2, + "loudness_db": -13.58, + "track": null, + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=9844868&dur=1528.861&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=250&keepalive=yes&lmt=1728213359347218&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=audio%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgDmWcX1MMyyW0CVbw34DEIOAJM6HWX4KtVKZVR2UtBwYCIQCZjN5Bj_6Um2SiBitHSWJ4rkEusPFQfxRdrKURRIHO0A%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 250, + "bitrate": 53458, + "average_bitrate": 51514, + "size": 9844868, + "index_range": { "start": 266, "end": 2863 }, + "init_range": { "start": 0, "end": 265 }, + "duration_ms": 1528861, + "mime": "audio/webm; codecs=\"opus\"", + "format": "webm", + "codec": "opus", + "channels": 2, + "loudness_db": -32.34, + "track": null, + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=18972392&dur=1528.861&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=251&keepalive=yes&lmt=1728213909841562&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=audio%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgFsUB_cjPzYdp1SuV_BWzdFTu2Jn4jV-kGDhvcgi3DpkCIGl7YPBNS194RsYYFzbB6Ff-vt5JRnAbLifur5htmaJG&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cxtags%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D&xtags=drc%3D1", + "itag": 251, + "bitrate": 102157, + "average_bitrate": 99275, + "size": 18972392, + "index_range": { "start": 266, "end": 2880 }, + "init_range": { "start": 0, "end": 265 }, + "duration_ms": 1528861, + "mime": "audio/webm; codecs=\"opus\"", + "format": "webm", + "codec": "opus", + "channels": 2, + "loudness_db": -13.58, + "track": null, + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=18980814&dur=1528.861&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=251&keepalive=yes&lmt=1728213359242171&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=audio%2Fwebm&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgY979yFtqlbg2pitQ8kgIcLyqTSlVfLv_TUzmqN_mpUwCIQDuvzrehMoSm-3PsW2GdMeTWxO0hVASx99Vyb-Bg7Ty2w%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 251, + "bitrate": 102214, + "average_bitrate": 99320, + "size": 18980814, + "index_range": { "start": 266, "end": 2880 }, + "init_range": { "start": 0, "end": 265 }, + "duration_ms": 1528861, + "mime": "audio/webm; codecs=\"opus\"", + "format": "webm", + "codec": "opus", + "channels": 2, + "loudness_db": -32.34, + "track": null, + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=73404665&dur=1528.864&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=380&keepalive=yes&lmt=1728213363352135&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=audio%2Fmp4&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRQIgBf5cFERcEfIWjq3bFzpbIj6J5HttXLHvDPjndzSTrwoCIQCh14jC1fCMHF6T2GTisMeBErmx96hrv1UPKyHN6p-Sfg%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 380, + "bitrate": 386138, + "average_bitrate": 384100, + "size": 73404665, + "index_range": { "start": 681, "end": 2560 }, + "init_range": { "start": 0, "end": 680 }, + "duration_ms": 1528864, + "mime": "audio/mp4; codecs=\"ac-3\"", + "format": "m4a", + "codec": "ac-3", + "channels": 6, + "loudness_db": -27.619999, + "track": null, + "drm_track_type": null, + "drm_systems": [] + }, + { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/videoplayback?bui=AY2Et-P2auEfQCfvN1IA3yW9ExwyKiCcsFBtuaw0RQncjLVWDPJaVQYgtPEU0ihKmuokmZ_B80uh1lEO&c=TVHTML5&clen=73404667&dur=1528.864&ei=5yaIZ-P4Ea6I6dsPq7zx8Q0&expire=1736997703&fexp=51326932%2C51335594%2C51353498%2C51371294%2C51384460&fvip=2&gir=yes&id=o-AMht44pplOHlN5qaf_EH_YF6UFNUwZBORrpu9IH3kXJI&initcwndbps=2547500&ip=93.235.184.108&itag=328&keepalive=yes&lmt=1728213526028394&lmw=1&lsig=AGluJ3MwRQIhALUHsNUsYW-Gzp2bi2VB2xd_58iwzBMS77zfVLvvFq6RAiBS2vSPvOJReYr7OLk5jad2YNhkw22jHeD9Gv5tHDBgOQ%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&met=1736976103%2C&mh=QX&mime=audio%2Fmp4&mm=31%2C26&mn=sn-h0jeenek%2Csn-4g5ednsk&ms=au%2Conr&mt=1736975835&mv=m&mvi=2&n=tNYdd0DuA4-wSg&ns=T9fKjV9jVlWEIaRxjvaOYZAQ&pl=26&requiressl=yes&rms=au%2Cau&rqh=1&sefc=1&sig=AJfQdSswRAIgWzmlzm0Po3ervktgNwWpuFCrXT8sr1wxYrj2j8XQx58CIC8vqHqPEgSS7LYOXLXlWeHiCJsB6FbIgv9JYsBwC-pB&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&svpuc=1&txp=5308224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + "itag": 328, + "bitrate": 386140, + "average_bitrate": 384100, + "size": 73404667, + "index_range": { "start": 683, "end": 2562 }, + "init_range": { "start": 0, "end": 682 }, + "duration_ms": 1528864, + "mime": "audio/mp4; codecs=\"ec-3\"", + "format": "m4a", + "codec": "ec-3", + "channels": 6, + "loudness_db": -27.619999, + "track": null, + "drm_track_type": null, + "drm_systems": [] + } + ], + "subtitles": [], + "expires_in_seconds": 21540, + "hls_manifest_url": null, + "dash_manifest_url": null, + "preview_frames": [ + { + "url_template": "https://i.ytimg.com/sb/xUg9LTEV7RY/storyboard3_L0/default.jpg?sqp=-oaymwGbA0g48quKqQOSA4gBAZUBAAAEQpgBMqABPKgBBLABELABDbABDLABELABFbABH7ABJrABLbABDrABDrABD7ABErABF7ABK7ABLLABKbABD7ABDrABELABFbABH7ABKrABMrABKbABD7ABEbABFLABGLABJrABPbABOLABLbABEbABFLABHrABKrABMbABS7ABR7ABNrABFbABHLABKbABLrABObABR7ABTbABP7ABJbABLrABN7ABPbABR7ABUrABUbABRbABM7ABQLABQrABQ7ABTLABRLABRrABQ7gBEbgBEbgBFbgBI7gBRLgBQ7gBQ7gBQ7gBEbgBE7gBFrgBL7gBQ7gBQ7gBQ7gBQ7gBFbgBFrgBKbgBQ7gBQ7gBQ7gBQ7gBQ7gBI7gBL7gBQ7gBQ7gBQ7gBQ7gBQ7gBQ7gBRLgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQqLzl_8DBgia6ZqwBg==&sigh=rs$AOn4CLC5SGRVAo8Vdtcrb_swDIyhOdf81A", + "frame_width": 48, + "frame_height": 27, + "page_count": 1, + "total_count": 100, + "duration_per_frame": 0, + "frames_per_page_x": 10, + "frames_per_page_y": 10 + }, + { + "url_template": "https://i.ytimg.com/sb/xUg9LTEV7RY/storyboard3_L1/M$M.jpg?sqp=-oaymwGbA0g48quKqQOSA4gBAZUBAAAEQpgBMqABPKgBBLABELABDbABDLABELABFbABH7ABJrABLbABDrABDrABD7ABErABF7ABK7ABLLABKbABD7ABDrABELABFbABH7ABKrABMrABKbABD7ABEbABFLABGLABJrABPbABOLABLbABEbABFLABHrABKrABMbABS7ABR7ABNrABFbABHLABKbABLrABObABR7ABTbABP7ABJbABLrABN7ABPbABR7ABUrABUbABRbABM7ABQLABQrABQ7ABTLABRLABRrABQ7gBEbgBEbgBFbgBI7gBRLgBQ7gBQ7gBQ7gBEbgBE7gBFrgBL7gBQ7gBQ7gBQ7gBQ7gBFbgBFrgBKbgBQ7gBQ7gBQ7gBQ7gBQ7gBI7gBL7gBQ7gBQ7gBQ7gBQ7gBQ7gBQ7gBRLgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQqLzl_8DBgia6ZqwBg==&sigh=rs$AOn4CLDvY0sq8eUqFFM7Nwp7L6BjKqYOoQ", + "frame_width": 80, + "frame_height": 45, + "page_count": 2, + "total_count": 154, + "duration_per_frame": 10000, + "frames_per_page_x": 10, + "frames_per_page_y": 10 + }, + { + "url_template": "https://i.ytimg.com/sb/xUg9LTEV7RY/storyboard3_L2/M$M.jpg?sqp=-oaymwGbA0g48quKqQOSA4gBAZUBAAAEQpgBMqABPKgBBLABELABDbABDLABELABFbABH7ABJrABLbABDrABDrABD7ABErABF7ABK7ABLLABKbABD7ABDrABELABFbABH7ABKrABMrABKbABD7ABEbABFLABGLABJrABPbABOLABLbABEbABFLABHrABKrABMbABS7ABR7ABNrABFbABHLABKbABLrABObABR7ABTbABP7ABJbABLrABN7ABPbABR7ABUrABUbABRbABM7ABQLABQrABQ7ABTLABRLABRrABQ7gBEbgBEbgBFbgBI7gBRLgBQ7gBQ7gBQ7gBEbgBE7gBFrgBL7gBQ7gBQ7gBQ7gBQ7gBFbgBFrgBKbgBQ7gBQ7gBQ7gBQ7gBQ7gBI7gBL7gBQ7gBQ7gBQ7gBQ7gBQ7gBQ7gBRLgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQqLzl_8DBgia6ZqwBg==&sigh=rs$AOn4CLBLHiTzOaA4D37h7U5hR4ZEh_fp0Q", + "frame_width": 160, + "frame_height": 90, + "page_count": 7, + "total_count": 154, + "duration_per_frame": 10000, + "frames_per_page_x": 5, + "frames_per_page_y": 5 + } + ], + "drm": null, + "client_type": "tv", + "visitor_data": "Cgs1eTdxNFB1TkpMOSjt1Y28BjIKCgJVUxIEEgAgIA%3D%3D" +} From 47424b9681dc3438e571eff84c6bc031be2b303c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 16 Jan 2025 01:01:00 +0100 Subject: [PATCH 091/191] test: fix tests --- tests/youtube.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/youtube.rs b/tests/youtube.rs index 2a79c5c..84ded87 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -999,7 +999,7 @@ async fn channel_search(rp: RustyPipe) { .unwrap(); assert_channel_eevblog(&channel); - assert_next(channel.content, rp.query(), 18, 2, true).await; + assert_next(channel.content, rp.query(), 15, 2, true).await; } fn assert_channel_eevblog(channel: &Channel) { From dee8a99e7a8d071c987709a01f02ee8fecf2d776 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 16 Jan 2025 02:15:20 +0100 Subject: [PATCH 092/191] feat: set cache file permissions to 600 --- src/cache.rs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/cache.rs b/src/cache.rs index 8015cb9..a1c90c4 100644 --- a/src/cache.rs +++ b/src/cache.rs @@ -16,7 +16,8 @@ //! the cache as a JSON file. use std::{ - fs, + fs::File, + io::Write, path::{Path, PathBuf}, }; @@ -68,7 +69,21 @@ impl Default for FileStorage { impl CacheStorage for FileStorage { fn write(&self, data: &str) { - fs::write(&self.path, data).unwrap_or_else(|e| { + fn _write(path: &Path, data: &str) -> Result<(), std::io::Error> { + let mut f = File::create(path)?; + // Set cache file permissions to 0600 on Unix-based systems + #[cfg(target_family = "unix")] + { + use std::os::unix::fs::PermissionsExt; + let metadata = f.metadata()?; + let mut permissions = metadata.permissions(); + permissions.set_mode(0o600); + std::fs::set_permissions(path, permissions)?; + } + f.write_all(data.as_bytes()) + } + + _write(&self.path, data).unwrap_or_else(|e| { error!( "Could not write cache to file `{}`. Error: {}", self.path.to_string_lossy(), @@ -82,7 +97,7 @@ impl CacheStorage for FileStorage { return None; } - match fs::read_to_string(&self.path) { + match std::fs::read_to_string(&self.path) { Ok(data) => Some(data), Err(e) => { error!( From 0432477451ecd5f64145d65239c721f4e44826c0 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 16 Jan 2025 03:27:06 +0100 Subject: [PATCH 093/191] docs: update README --- Cargo.toml | 2 +- DEVELOPMENT.md | 26 +++++++++ README.md | 102 +++++++++++++++++++++++++++++------- cli/README.md | 66 +++++++++++++++++++++-- cli/src/main.rs | 2 +- downloader/src/lib.rs | 2 +- renovate.json | 5 +- src/client/mod.rs | 4 +- src/client/music_details.rs | 4 +- src/client/music_search.rs | 2 +- src/client/player.rs | 3 -- src/error.rs | 3 -- src/model/convert.rs | 2 +- src/model/mod.rs | 6 +-- src/util/mod.rs | 2 +- 15 files changed, 184 insertions(+), 47 deletions(-) create mode 100644 DEVELOPMENT.md diff --git a/Cargo.toml b/Cargo.toml index eec0cb4..53da6be 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -81,7 +81,7 @@ rustypipe-downloader = { path = "./downloader", version = "0.2.1", default-featu [features] default = ["default-tls"] -rss = ["quick-xml"] +rss = ["dep:quick-xml"] # Reqwest TLS options default-tls = ["reqwest/default-tls"] diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 0000000..5cfc9b6 --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,26 @@ +## Development + +**Requirements:** + +- Current version of stable Rust +- [`just`](https://github.com/casey/just) task runner +- [`nextest`](https://nexte.st) test runner +- [`pre-commit`](https://pre-commit.com/) +- yq (YAML processor) + +### Tasks + +**Testing** + +- `just test` Run unit+integration tests +- `just unittest` Run unit tests +- `just testyt` Run YouTube integration tests +- `just testintl` Run YouTube integration tests for all supported languages (this takes + a long time and is therefore not run in CI) +- `YT_LANG=de just testyt` Run YouTube integration tests for a specific language + +**Tools** + +- `just testfiles` Download missing testfiles for unit tests +- `just report2yaml` Convert RustyPipe reports into a more readable yaml format + (requires `yq`) diff --git a/README.md b/README.md index 5701a81..d52bb1c 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,25 @@ RustyPipe is a fully featured Rust client for the public YouTube / YouTube Music ## Getting started +The RustyPipe library works as follows: at first you have to instantiate a RustyPipe +client. You can either create it with default options or use the `RustyPipe::builder()` +to customize it. + +For fetching data you have to start with a new RustyPipe query object (`rp.query()`). +The query object holds options for an individual query (e.g. content language or +country). You can adjust these options with setter methods. Finally call your query +method to fetch the data you need. + +All query methods are async, you need the tokio runtime to execute them. + +```rust ignore +let rp = RustyPipe::new(); +let rp = RustyPipe::builder().storage_dir("/app/data").build().unwrap(); +let channel = rp.query().lang(Language::De).channel_videos("UCl2mFZoRqjw_ELax4Yisf6w").await.unwrap(); +``` + +Here are a few examples to get you started: + ### Cargo.toml ```toml @@ -162,29 +181,74 @@ Subscribers: 1780000 ... ``` -## Development +## Cache storage -**Requirements:** +The RustyPipe cache holds the current version numbers for all clients, the JavaScript +code used to deobfuscate video URLs and the authentication token/cookies. Never share +the contents of the cache if you are using authentication. -- Current version of stable Rust -- [`just`](https://github.com/casey/just) task runner -- [`nextest`](https://nexte.st) test runner -- [`pre-commit`](https://pre-commit.com/) -- yq (YAML processor) +By default the cache is written to a JSON file named `rustypipe_cache.json` in the +current working directory. This path can be changed with the `storage_dir` option of the +RustyPipeBuilder. The RustyPipe CLI stores its cache in the userdata folder. The full +path on Linux is `~/.local/share/rustypipe/rustypipe_cache.json`. -### Tasks +You can integrate your own cache storage backend (e.g. database storage) by implementing +the `CacheStorage` trait. -**Testing** +## Reports -- `just test` Run unit+integration tests -- `just unittest` Run unit tests -- `just testyt` Run YouTube integration tests -- `just testintl` Run YouTube integration tests for all supported languages (this takes - a long time and is therefore not run in CI) -- `YT_LANG=de just testyt` Run YouTube integration tests for a specific language +RustyPipe has a builtin error reporting system. If a YouTube response cannot be +deserialized or parsed, the original response data along with some request metadata is +written to a JSON file in the folder `rustypipe_reports`, located in RustyPipe's storage +directory (current folder by default, `~/.local/share/rustypipe` for the CLI). -**Tools** +When submitting a bug report to the RustyPipe project, you can share this report to help +resolve the issue. -- `just testfiles` Download missing testfiles for unit tests -- `just report2yaml` Convert RustyPipe reports into a more readable yaml format - (requires `yq`) +RustyPipe reports come in 3 severity levels: + +- DBG (no error occurred, report creation was enabled by the `RustyPipeQuery::report` + query option) +- WRN (parts of the response could not be deserialized/parsed, response data may be + incomplete) +- ERR (entire response could not be deserialized/parsed, RustyPipe returned an error) + +## Authentication + +RustyPipe supports authentication in with your YouTube account. There are 2 supported +authentication methods: OAuth and cookies. + +To execute a query with authentication, use the `.authenticated()` query option. This +option is enabled by default for methods that require authentication like the user data +methods. RustyPipe may automatically use authentication if available in case a video is +age-restricted or the user is IP-banned by YouTube. If you absolutely dont want to use +authentication, set the `.unauthenticated()` query option. + +### OAuth + +OAuth is the authentication method used by the YouTube TV client. It is more +user-friendly than extracting cookies, however it only works with the TV client. This +means that you can only fetch videos and not access any user data. + +To login using OAuth, you first have to get a new device code using the +`rp.user_auth_get_code()` function. You can then enter the code on +https://google.com/device and log in with your Google account. After generating the +code, you can call the `rp.user_auth_wait_for_login()` function which waits until the +user has logged in and stores the authentication token in the cache. + +### Cookies + +Authenticating with cookies allows you to use the functionality of the YouTube/YouTube +Music Desktop client. You can fetch your subscribed channels, playlists and your music +collection. You can also fetch videos using the Desktop client, including private +videos, as long as you have access to them. + +To authenticate with cookies you have to log into YouTube in a fresh browser session +(open Incognito/Private mode). Then extract the cookies from the developer tools or by +using browser plugins like "Get cookies.txt LOCALLY" +([Firefox](https://addons.mozilla.org/de/firefox/addon/get-cookies-txt-locally/)) +([Chromium](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc)). + +You can then add the cookies to your RustyPipe client using the +`rp.()user_auth_set_cookie` or `user_auth_set_cookie_txt` function. The cookies are +stored in the cache. To log out, use the function `user_auth_remove_cookie`. diff --git a/cli/README.md b/cli/README.md index bd6c898..a731749 100644 --- a/cli/README.md +++ b/cli/README.md @@ -18,13 +18,13 @@ the associated metadata. It can fetch channels, playlists, albums and videos. **Usage:** `rustypipe get UC2TXq_t06Hjdr2g_KdKpHQg` - `-l`, `--limit` Limit the number of list items to fetch -- ``-t, --tab` Channel tab (options: **videos**, shorts, live, playlists, info) +- `-t`, `--tab` Channel tab (options: **videos**, shorts, live, playlists, info) - `-m, --music` Use the YouTube Music API - `--rss`Fetch the RSS feed of a channel - `--comments` Get comments (options: top, latest) - `--lyrics` Get the lyrics for YTM tracks - `--player` Get the player data instead of the video details when fetching videos -- `-c, --client-type` YT clients used to fetch player data (options: desktop, tv, +- `-c`, `--client-type` YT clients used to fetch player data (options: desktop, tv, tv-embed, android, ios; if multiple clients are specified, they are attempted in order) @@ -47,7 +47,7 @@ when searching YTM or individual channels. - `--date` Filter results by upload date (options: hour, day, week, month, year) - `--order` Sort search results (options: rating, date, views) - `--channel` Channel ID for searching channel videos -- `-m, --music` Search YouTube Music in the given category (options: all, tracks, +- `-m`, `--music` Search YouTube Music in the given category (options: all, tracks, videos, artists, albums, playlists-ytm, playlists-community) ## `dl`: Download videos @@ -66,7 +66,7 @@ videos can be downloaded in parallel for improved performance. - `-r`, `--resolution` Video resolution (e.g. 720, 1080). Set to 0 for audio-only - `-a`, `--audio` Download only the audio track and write track metadata + album cover - `-p`, `--parallel` Number of videos downloaded in parallel (default: 8) -- `-m, --music` Use YouTube Music for downloading playlists +- `-m`, `--music` Use YouTube Music for downloading playlists - `-l`, `--limit` Limit the number of videos to download (default: 1000) - `-c`, `--client-type` YT clients used to fetch player data (options: desktop, tv, tv-embed, android, ios; if multiple clients are specified, they are attempted in @@ -78,6 +78,52 @@ videos can be downloaded in parallel for improved performance. You can use the vdata command to get a new visitor data cookie. This feature may come in handy for testing and reproducing A/B tests. +## `releases` Get YouTube Music new releases + +Get a list of new albums or music videos on YouTube Music + +**Usage:** `rustypipe releases` or `rustypipe releases --videos` + +## `charts`: Get YouTube Music charts + +Get a list of the most popular tracks and artists for a given country + +**Usage:** `rustypipe charts DE` + +## `history`: Get YouTube playback history + +Get a list of recently played videos or tracks + +### Options + +- `-l`, `--limit` Limit the number of list items to fetch +- `--search` Search the playback history (unavailable on YouTube Music) +- `-m`, `--music` Get the YouTube Music playback history + +## `subscriptions`: Get subscribed channels + +You can use the RustyPipe CLI to get a list of the channels you subscribed to. With the +`--format` flag you can export then in different formats, including OPML and NewPipe +JSON. + +With the `--feed` option you can output a list of the latest videos from your +subscription feed instead. + +### Options + +- `-l`, `--limit` Limit the number of list items to fetch +- `-m`, `--music` Get a list of subscribed YouTube Music artists +- `--feed` Output YouTube Music subscription feed + +## `playlists`, `albums`, `tracks`: Get your YouTube library + +Fetch a list of all the items you stored in your YouTube/YouTube Music profile. + +### Options + +- `-l`, `--limit` Limit the number of list items to fetch +- `-m`, `--music` (only for playlists): Get your YouTube Music playlists + ## Global options - **Proxy:** RustyPipe respects the environment variables `HTTP_PROXY`, `HTTPS_PROXY` @@ -85,7 +131,17 @@ handy for testing and reproducing A/B tests. - **Logging:** You can change the log level with the `RUST_LOG` environment variable, it is set to `info` by default - **Visitor data:** A custom visitor data cookie can be used with the `--vdata` flag -- `--report` +- **Authentication:** Use the commands `rustypipe login` and `rustypipe login --cookie` + to log into your Google account using either OAuth or YouTube cookies. With the + `--auth` flag you can use authentication for any request. +- `--lang` Change the YouTube content language +- `--country` Change the YouTube content country +- `--report` Generate a report on every request and store it in a `rustypipe_reports` + folder in the current directory +- `--cache-file` Change the RustyPipe cache file location (Default: + `~/.local/share/rustypipe/rustypipe_cache.json`) +- `--report-dir` Change the RustyPipe report directory location (Default: + `~/.local/share/rustypipe/rustypipe_reports`) ### Output format diff --git a/cli/src/main.rs b/cli/src/main.rs index fee4670..12e23fa 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -288,7 +288,7 @@ enum Commands { #[clap(long)] pretty: bool, }, - /// Get YouTube music charts + /// Get YouTube Music charts Charts { /// Chart country country: Option, diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 5cb6ae4..339af94 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -529,7 +529,7 @@ impl Downloader { self.query(DownloadVideo::from_entity(video)) } - /// Download a video from a [`TrackItem`] (YouTube music album/playlist item) + /// Download a video from a [`TrackItem`] (YouTube Music album/playlist item) /// /// Providing an entity has the advantage that the download path can be determined before the video /// is fetched, so already downloaded videos get skipped right away. diff --git a/renovate.json b/renovate.json index 0aac422..2c4d77d 100644 --- a/renovate.json +++ b/renovate.json @@ -1,9 +1,6 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "config:best-practices", - ":semanticCommitTypeAll(chore)" - ], + "extends": ["config:best-practices"], "semanticCommits": "enabled", "automerge": true, "automergeStrategy": "squash", diff --git a/src/client/mod.rs b/src/client/mod.rs index f439d48..1185aa3 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -225,7 +225,7 @@ struct OauthCodeRequest { /// The login process works as follows: /// 1. Obtain a user code and show it to the user /// 2. The user opens the login page under , enters the code and logs in with his account -/// 3. The application has to check periodically if the login has succeeded using [`RustyPipe::oauth_login`] or [`RustyPipe::oauth_wait_for_login`] +/// 3. The application has to check periodically if the login has succeeded using [`RustyPipe::user_auth_login`] or [`RustyPipe::user_auth_wait_for_login`] /// 4. If the login is successful, the application receives a valid access/refresh token pair which can be used to access YouTube #[derive(Debug, Deserialize)] pub struct OauthDeviceCode { @@ -1261,7 +1261,7 @@ impl RustyPipe { /// /// Returns `false` if the user has not logged in yet, in this case repeat /// the login attempt after a few seconds. - /// The function [`RustyPipe::oauth_wait_for_login`] does this automatically. + /// The function [`RustyPipe::user_auth_wait_for_login`] does this automatically. pub async fn user_auth_login(&self, code: &OauthDeviceCode) -> Result { tracing::debug!("OAuth login attempt (user_code: {})", code.user_code); diff --git a/src/client/music_details.rs b/src/client/music_details.rs index 7ae7311..1eb4e51 100644 --- a/src/client/music_details.rs +++ b/src/client/music_details.rs @@ -37,7 +37,7 @@ struct QRadio<'a> { } impl RustyPipeQuery { - /// Get the metadata of a YouTube music track + /// Get the metadata of a YouTube Music track #[tracing::instrument(skip(self), level = "error")] pub async fn music_details + Debug>( &self, @@ -61,7 +61,7 @@ impl RustyPipeQuery { .await } - /// Get the lyrics of a YouTube music track + /// Get the lyrics of a YouTube Music track /// /// The `lyrics_id` has to be obtained using [`RustyPipeQuery::music_details`]. #[tracing::instrument(skip(self), level = "error")] diff --git a/src/client/music_search.rs b/src/client/music_search.rs index b9344f5..e213517 100644 --- a/src/client/music_search.rs +++ b/src/client/music_search.rs @@ -57,7 +57,7 @@ impl RustyPipeQuery { .await } - /// Search YouTube music and return items of all types + /// Search YouTube Music and return items of all types pub async fn music_search_main>( &self, query: S, diff --git a/src/client/player.rs b/src/client/player.rs index d0da7cc..b1e808c 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -81,9 +81,6 @@ impl RustyPipeQuery { /// /// The clients are used in the given order. If a client cannot fetch the requested video, /// an attempt is made with the next one. - /// - /// If an age-restricted video is detected, it will automatically use the [`ClientType::TvHtml5Embed`] - /// since it is the only one that can circumvent age restrictions. pub async fn player_from_clients + Debug>( &self, video_id: S, diff --git a/src/error.rs b/src/error.rs index f41cd8a..92460c6 100644 --- a/src/error.rs +++ b/src/error.rs @@ -82,9 +82,6 @@ pub enum ExtractionError { #[non_exhaustive] pub enum UnavailabilityReason { /// Video/Channel is age restricted. - /// - /// Video age restriction may be circumvented with the - /// [`ClientType::TvHtml5Embed`](crate::client::ClientType::TvHtml5Embed) client. AgeRestricted, /// Video was deleted or censored Deleted, diff --git a/src/model/convert.rs b/src/model/convert.rs index 5610014..2843fd9 100644 --- a/src/model/convert.rs +++ b/src/model/convert.rs @@ -4,7 +4,7 @@ use super::{ VideoItem, YouTubeItem, }; -/// Trait for casting generic YouTube/YouTube music items to a specific kind. +/// Trait for casting generic YouTube/YouTube Music items to a specific kind. /// /// Returns [`None`] if the item does not match. pub trait FromYtItem: Sized { diff --git a/src/model/mod.rs b/src/model/mod.rs index 8b60e34..e265595 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -1180,7 +1180,7 @@ pub struct AlbumId { pub name: String, } -/// YouTube music playlist object +/// YouTube Music playlist object #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] pub struct MusicPlaylist { @@ -1204,7 +1204,7 @@ pub struct MusicPlaylist { pub related_playlists: Paginator, } -/// YouTube music album object +/// YouTube Music album object #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] pub struct MusicAlbum { @@ -1234,7 +1234,7 @@ pub struct MusicAlbum { pub variants: Vec, } -/// YouTube music artist object +/// YouTube Music artist object #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] pub struct MusicArtist { diff --git a/src/util/mod.rs b/src/util/mod.rs index 8f3e782..fe294c7 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -355,7 +355,7 @@ impl TryRemove for Vec { } /// Check if a channel name equals "YouTube Music" -/// (the author of original YouTube music playlists) +/// (the author of original YouTube Music playlists) pub(crate) fn is_ytm(text: &TextComponent) -> bool { if let TextComponent::Text { text, .. } = text { text.starts_with("YouTube") From 9c512c3c4dbec0fc3b973536733d61ba61125a92 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 16 Jan 2025 04:16:40 +0100 Subject: [PATCH 094/191] fix: player_from_clients method not send/sync --- src/client/player.rs | 26 ++++++------ tests/youtube.rs | 97 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+), 12 deletions(-) diff --git a/src/client/player.rs b/src/client/player.rs index b1e808c..c41404f 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -11,7 +11,7 @@ use url::Url; use crate::{ deobfuscate::{DeobfData, Deobfuscator}, - error::{internal::DeobfError, Error, ExtractionError, UnavailabilityReason}, + error::{internal::DeobfError, AuthError, Error, ExtractionError, UnavailabilityReason}, model::{ traits::QualityOrd, AudioCodec, AudioFormat, AudioStream, AudioTrack, DrmLicense, DrmSystem, Frameset, Subtitle, VideoCodec, VideoFormat, VideoPlayer, VideoPlayerDetails, @@ -87,16 +87,18 @@ impl RustyPipeQuery { clients: &[ClientType], ) -> Result { let video_id = video_id.as_ref(); - let mut last_e = Error::Other("no clients".into()); + let mut last_e = None; - let clients_iter: Box> = if self.opts.auth == Some(true) { - Box::new(self.auth_enabled_clients(clients)) - } else { - Box::new(clients.iter().cloned()) - }; + for client in clients { + if self.opts.auth == Some(true) && !self.auth_enabled(*client) { + // If no client has auth enabled, return NoLogin error instead of "no clients" + if last_e.is_none() { + last_e = Some(Error::Auth(AuthError::NoLogin)); + } + continue; + } - for client in clients_iter { - let res = self.player_from_client(video_id, client).await; + let res = self.player_from_client(video_id, *client).await; match res { Ok(res) => return Ok(res), Err(Error::Extraction(e)) => { @@ -118,7 +120,7 @@ impl RustyPipeQuery { } Err(e) => return Err(e), } - last_e = Error::Extraction(e); + last_e = Some(Error::Extraction(e)); } else { return Err(Error::Extraction(e)); } @@ -129,7 +131,7 @@ impl RustyPipeQuery { Err(e) => return Err(e), } } - Err(last_e) + Err(last_e.unwrap_or(Error::Other("no clients".into()))) } /// Get YouTube player data (video/audio streams + basic metadata) using the specified client @@ -193,7 +195,7 @@ impl RustyPipeQuery { ) -> Result { let client_type = self .auth_enabled_client(&[ClientType::Desktop, ClientType::Tv]) - .ok_or(Error::Auth(crate::error::AuthError::NoLogin))?; + .ok_or(Error::Auth(AuthError::NoLogin))?; let request_body = QDrmLicense { drm_system: drm_system.req_param(), video_id, diff --git a/tests/youtube.rs b/tests/youtube.rs index 84ded87..3b41490 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2990,3 +2990,100 @@ fn check_duplicates>(items: &[T]) { .collect::>(); assert_eq!(ids.len(), items.len(), "duplicate items"); } + +/// This is just a static check to make sure all RustyPipe futures can be sent +/// between threads safely. +/// Otherwise this may cause issues when integrating RustyPipe into async projects. +#[allow(unused)] +async fn all_send_and_sync() { + fn send_and_sync(t: T) {} + + let rp = RustyPipe::new(); + send_and_sync(&rp); + send_and_sync(rp.query()); + send_and_sync(rp.user_auth_access_token()); + send_and_sync(rp.user_auth_check_cookie()); + send_and_sync(rp.user_auth_check_login()); + let dc = rp.user_auth_get_code().await.unwrap(); + send_and_sync(rp.user_auth_get_code()); + send_and_sync(rp.user_auth_login(&dc)); + send_and_sync(rp.user_auth_logout()); + send_and_sync(rp.user_auth_remove_cookie()); + send_and_sync(rp.user_auth_set_cookie("")); + send_and_sync(rp.user_auth_set_cookie_txt("")); + send_and_sync(rp.user_auth_wait_for_login(&dc)); + + send_and_sync(rp.query().channel_info("")); + send_and_sync(rp.query().channel_playlists("")); + #[cfg(feature = "rss")] + send_and_sync(rp.query().channel_rss("")); + send_and_sync(rp.query().channel_search("", "")); + send_and_sync(rp.query().channel_videos("")); + send_and_sync(rp.query().channel_videos_order("", ChannelOrder::Latest)); + send_and_sync(rp.query().channel_videos_tab("", ChannelVideoTab::Live)); + send_and_sync(rp.query().channel_videos_tab_order( + "", + ChannelVideoTab::Live, + ChannelOrder::Latest, + )); + send_and_sync( + rp.query() + .drm_license("", rustypipe::model::DrmSystem::Widevine, "", "", &[]), + ); + send_and_sync(rp.query().history()); + send_and_sync(rp.query().history_continuation("", None)); + send_and_sync(rp.query().history_search("")); + send_and_sync(rp.query().liked_videos()); + send_and_sync(rp.query().music_album("")); + send_and_sync(rp.query().music_artist("", false)); + send_and_sync(rp.query().music_artist_albums("", None, None)); + send_and_sync(rp.query().music_new_albums()); + send_and_sync(rp.query().music_charts(None)); + send_and_sync(rp.query().music_details("")); + send_and_sync(rp.query().music_genre("")); + send_and_sync(rp.query().music_genres()); + send_and_sync(rp.query().music_history()); + send_and_sync(rp.query().music_history_continuation("", None)); + send_and_sync(rp.query().music_liked_tracks()); + send_and_sync(rp.query().music_lyrics("")); + send_and_sync(rp.query().music_new_albums()); + send_and_sync(rp.query().music_new_videos()); + send_and_sync(rp.query().music_playlist("")); + send_and_sync(rp.query().music_radio("")); + send_and_sync(rp.query().music_radio_playlist("")); + send_and_sync(rp.query().music_radio_track("")); + send_and_sync(rp.query().music_related("")); + send_and_sync(rp.query().music_saved_albums()); + send_and_sync(rp.query().music_saved_artists()); + send_and_sync(rp.query().music_saved_playlists()); + send_and_sync(rp.query().music_saved_tracks()); + send_and_sync(rp.query().music_search::("", None)); + send_and_sync(rp.query().music_search_albums("")); + send_and_sync(rp.query().music_search_artists("")); + send_and_sync(rp.query().music_search_albums("")); + send_and_sync(rp.query().music_search_main("")); + send_and_sync(rp.query().music_search_playlists("", false)); + send_and_sync(rp.query().music_search_suggestion("")); + send_and_sync(rp.query().music_search_tracks("")); + send_and_sync(rp.query().music_search_users("")); + send_and_sync(rp.query().music_search_videos("")); + send_and_sync(rp.query().player("")); + send_and_sync(rp.query().player_from_client("", ClientType::Desktop)); + send_and_sync(rp.query().player_from_clients("", &[])); + send_and_sync(rp.query().raw(ClientType::Desktop, "", "")); + send_and_sync(rp.query().resolve_string("", false)); + send_and_sync(rp.query().resolve_url("", false)); + send_and_sync(rp.query().saved_playlists()); + send_and_sync(rp.query().search::("")); + send_and_sync( + rp.query() + .search_filter::("", &SearchFilter::default()), + ); + send_and_sync(rp.query().search_suggestion("")); + send_and_sync(rp.query().subscription_feed()); + send_and_sync(rp.query().subscriptions()); + send_and_sync(rp.query().trending()); + send_and_sync(rp.query().video_comments("", None)); + send_and_sync(rp.query().video_details("")); + send_and_sync(rp.query().watch_later()); +} From 11442dfd369599396357f5b7a7a4268a7b537f57 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 16 Jan 2025 13:39:35 +0100 Subject: [PATCH 095/191] docs: fix README --- README.md | 21 ++++++++++++--------- cli/README.md | 2 +- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d52bb1c..c4df0c2 100644 --- a/README.md +++ b/README.md @@ -215,13 +215,14 @@ RustyPipe reports come in 3 severity levels: ## Authentication -RustyPipe supports authentication in with your YouTube account. There are 2 supported -authentication methods: OAuth and cookies. +RustyPipe supports authenticating with your YouTube account to access +age-restricted/private videos and user information. There are 2 supported authentication +methods: OAuth and cookies. To execute a query with authentication, use the `.authenticated()` query option. This -option is enabled by default for methods that require authentication like the user data -methods. RustyPipe may automatically use authentication if available in case a video is -age-restricted or the user is IP-banned by YouTube. If you absolutely dont want to use +option is enabled by default for queries that always require authentication like +fetching user data. RustyPipe may automatically use authentication in case a video is +age-restricted or your IP address is banned by YouTube. If you never want to use authentication, set the `.unauthenticated()` query option. ### OAuth @@ -232,7 +233,7 @@ means that you can only fetch videos and not access any user data. To login using OAuth, you first have to get a new device code using the `rp.user_auth_get_code()` function. You can then enter the code on -https://google.com/device and log in with your Google account. After generating the + and log in with your Google account. After generating the code, you can call the `rp.user_auth_wait_for_login()` function which waits until the user has logged in and stores the authentication token in the cache. @@ -248,7 +249,9 @@ To authenticate with cookies you have to log into YouTube in a fresh browser ses using browser plugins like "Get cookies.txt LOCALLY" ([Firefox](https://addons.mozilla.org/de/firefox/addon/get-cookies-txt-locally/)) ([Chromium](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc)). +Close the browser window after extracting the cookies to prevent YouTube from rotating +the cookies. -You can then add the cookies to your RustyPipe client using the -`rp.()user_auth_set_cookie` or `user_auth_set_cookie_txt` function. The cookies are -stored in the cache. To log out, use the function `user_auth_remove_cookie`. +You can then add the cookies to your RustyPipe client using the `user_auth_set_cookie` +or `user_auth_set_cookie_txt` function. The cookies are stored in the cache file. To log +out, use the function `user_auth_remove_cookie`. diff --git a/cli/README.md b/cli/README.md index a731749..d69164b 100644 --- a/cli/README.md +++ b/cli/README.md @@ -117,7 +117,7 @@ subscription feed instead. ## `playlists`, `albums`, `tracks`: Get your YouTube library -Fetch a list of all the items you stored in your YouTube/YouTube Music profile. +Fetch a list of all the items saved in your YouTube/YouTube Music profile. ### Options From 5fc6d9dda461f249870f9ea40c9667e305618e92 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 16 Jan 2025 13:42:43 +0100 Subject: [PATCH 096/191] chore(release): release rustypipe v0.9.0 --- CHANGELOG.md | 37 +++++++++++++++++++++++++++++++++++++ Cargo.toml | 4 ++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8386c45..1a8d160 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,43 @@ All notable changes to this project will be documented in this file. +## [v0.9.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.8.0..rustypipe/v0.9.0) - 2025-01-16 + +### 🚀 Features + +- Add functions to fetch a user's history and subscriptions - ([14e3995](https://codeberg.org/ThetaDev/rustypipe/commit/14e399594f97a1228a8c2991a14dd8745af1beb7)) +- Add history item dates, extend timeago parser - ([320a8c2](https://codeberg.org/ThetaDev/rustypipe/commit/320a8c2c24217ad5697f0424c4f994bbbe31f3aa)) +- Add session headers when using cookie auth - ([3c95b52](https://codeberg.org/ThetaDev/rustypipe/commit/3c95b52ceaf0df2d67ee0d2f2ac658f666f29836)) +- Add cookies.txt parser, add cookie auth + history cmds to CLI - ([cf498e4](https://codeberg.org/ThetaDev/rustypipe/commit/cf498e4a8f9318b0197bc3f0cbaf7043c53adb9d)) +- Add method to get saved_playlists - ([27f64fc](https://codeberg.org/ThetaDev/rustypipe/commit/27f64fc412e833d5bd19ad72913aae19358e98b9)) +- Extract player DRM data - ([2af4001](https://codeberg.org/ThetaDev/rustypipe/commit/2af4001c75f2ff4f7c891aa59ac22c2c6b7902a2)) +- Add Dolby audio codecs (ac-3, ec-3) - ([a7f8c78](https://codeberg.org/ThetaDev/rustypipe/commit/a7f8c789b1a34710274c4630e027ef868397aea2)) +- Add DRM and audio channel number filtering to StreamFilter - ([d5abee2](https://codeberg.org/ThetaDev/rustypipe/commit/d5abee275300ab1bc10fc8d6c35a4e3813fd2bd4)) +- Set cache file permissions to 600 - ([dee8a99](https://codeberg.org/ThetaDev/rustypipe/commit/dee8a99e7a8d071c987709a01f02ee8fecf2d776)) + +### 🐛 Bug Fixes + +- Dont leak authorization and cookie header in reports - ([75fce91](https://codeberg.org/ThetaDev/rustypipe/commit/75fce91353c02cd498f27d21b08261c23ea03d70)) +- Require new time crate version which added Month::length - ([ec7a195](https://codeberg.org/ThetaDev/rustypipe/commit/ec7a195c98f39346c4c8db875212c3843580450e)) +- Parsing numbers (it), dates (kn) - ([63f86b6](https://codeberg.org/ThetaDev/rustypipe/commit/63f86b6e186aa1d2dcaf7e9169ccebb2265e5905)) +- Accept user-specific playlist ids (LL, WL) - ([97c3f30](https://codeberg.org/ThetaDev/rustypipe/commit/97c3f30d180d3e62b7e19f22d191d7fd7614daca)) +- Only use auth-enabled clients for fetching player with auth option enabled - ([2b2b4af](https://codeberg.org/ThetaDev/rustypipe/commit/2b2b4af0b26cdd0d4bf2218d3f527abd88658abf)) +- A/B test 19: Music artist album groups reordered - ([5daad1b](https://codeberg.org/ThetaDev/rustypipe/commit/5daad1b700e8dcf1f3e803db1685f08f27794898)) +- Switch to rquickjs crate for deobfuscator - ([75c3746](https://codeberg.org/ThetaDev/rustypipe/commit/75c3746890f3428f3314b7b10c9ec816ad275836)) +- Player_from_clients method not send/sync - ([9c512c3](https://codeberg.org/ThetaDev/rustypipe/commit/9c512c3c4dbec0fc3b973536733d61ba61125a92)) + +### 📚 Documentation + +- Update README - ([0432477](https://codeberg.org/ThetaDev/rustypipe/commit/0432477451ecd5f64145d65239c721f4e44826c0)) +- Fix README - ([11442df](https://codeberg.org/ThetaDev/rustypipe/commit/11442dfd369599396357f5b7a7a4268a7b537f57)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate rstest to 0.24.0 (#20) - ([ab19034](https://codeberg.org/ThetaDev/rustypipe/commit/ab19034ab19baf090e83eada056559676ffdadce)) +- *(deps)* Update rust crate dirs to v6 (#24) - ([6a60425](https://codeberg.org/ThetaDev/rustypipe/commit/6a604252b1af7a9388db5dc170f737069cc31051)) +- Update pre-commit hooks - ([7cd9246](https://codeberg.org/ThetaDev/rustypipe/commit/7cd9246260493d7839018cb39a2dfb4dded8b343)) + + ## [v0.8.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.7.2..rustypipe/v0.8.0) - 2024-12-20 ### 🚀 Features diff --git a/Cargo.toml b/Cargo.toml index 53da6be..4a064c2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.8.0" +version = "0.9.0" rust-version = "1.67.1" edition.workspace = true authors.workspace = true @@ -72,7 +72,7 @@ path_macro = "1.0.0" tracing-test = "0.2.5" # Included crates -rustypipe = { path = ".", version = "0.8.0", default-features = false } +rustypipe = { path = ".", version = "0.9.0", default-features = false } rustypipe-downloader = { path = "./downloader", version = "0.2.1", default-features = false, features = [ "indicatif", "audiotag", From 4a8ef6dedeaf636cba63dcbfb8738c9df58e6900 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 16 Jan 2025 13:47:47 +0100 Subject: [PATCH 097/191] chore(release): release rustypipe-downloader v0.2.7 --- downloader/CHANGELOG.md | 25 +++++++++++++++++++++++++ downloader/Cargo.toml | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md index 3f185d4..25d7681 100644 --- a/downloader/CHANGELOG.md +++ b/downloader/CHANGELOG.md @@ -3,6 +3,31 @@ All notable changes to this project will be documented in this file. +## [v0.2.7](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.6..rustypipe-downloader/v0.2.7) - 2025-01-16 + +### 🚀 Features + +- Extract player DRM data - ([2af4001](https://codeberg.org/ThetaDev/rustypipe/commit/2af4001c75f2ff4f7c891aa59ac22c2c6b7902a2)) +- Prefer maxresdefault.jpg thumbnail if available - ([a8e97f4](https://codeberg.org/ThetaDev/rustypipe/commit/a8e97f411a1e769e52d8cbde11f0a4ca1535f7ef)) +- Add DRM and audio channel number filtering to StreamFilter - ([d5abee2](https://codeberg.org/ThetaDev/rustypipe/commit/d5abee275300ab1bc10fc8d6c35a4e3813fd2bd4)) + +### 🐛 Bug Fixes + +- Remove Unix file metadata usage (Windows compatibility) - ([5c6d992](https://codeberg.org/ThetaDev/rustypipe/commit/5c6d992939f55a203ac1784f1e9175ac1d498ce8)) + +### 📚 Documentation + +- Update README - ([0432477](https://codeberg.org/ThetaDev/rustypipe/commit/0432477451ecd5f64145d65239c721f4e44826c0)) +- Fix README - ([11442df](https://codeberg.org/ThetaDev/rustypipe/commit/11442dfd369599396357f5b7a7a4268a7b537f57)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rustypipe to 0.9.0 +- *(deps)* Update rust crate rstest to 0.24.0 (#20) - ([ab19034](https://codeberg.org/ThetaDev/rustypipe/commit/ab19034ab19baf090e83eada056559676ffdadce)) +- *(deps)* Update rust crate lofty to 0.22.0 - ([addeb82](https://codeberg.org/ThetaDev/rustypipe/commit/addeb821101aa968b95455604bc13bd24f50328f)) +- *(deps)* Update rust crate dirs to v6 (#24) - ([6a60425](https://codeberg.org/ThetaDev/rustypipe/commit/6a604252b1af7a9388db5dc170f737069cc31051)) + + ## [v0.2.6](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.5..rustypipe-downloader/v0.2.6) - 2024-12-20 ### ⚙️ Miscellaneous Tasks diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 586f3b8..a410beb 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-downloader" -version = "0.2.6" +version = "0.2.7" rust-version = "1.67.1" edition.workspace = true authors.workspace = true From 32fda234e4db64a1954d2a25389fa548dd517f5e Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 16 Jan 2025 13:49:09 +0100 Subject: [PATCH 098/191] chore(release): release rustypipe-cli v0.6.0 --- cli/CHANGELOG.md | 21 +++++++++++++++++++++ cli/Cargo.toml | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index d5a5ef9..9ebf81a 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -3,6 +3,27 @@ All notable changes to this project will be documented in this file. +## [v0.6.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.5.0..rustypipe-cli/v0.6.0) - 2025-01-16 + +### 🚀 Features + +- Add functions to fetch a user's history and subscriptions - ([14e3995](https://codeberg.org/ThetaDev/rustypipe/commit/14e399594f97a1228a8c2991a14dd8745af1beb7)) +- Add history item dates, extend timeago parser - ([320a8c2](https://codeberg.org/ThetaDev/rustypipe/commit/320a8c2c24217ad5697f0424c4f994bbbe31f3aa)) +- Add cookies.txt parser, add cookie auth + history cmds to CLI - ([cf498e4](https://codeberg.org/ThetaDev/rustypipe/commit/cf498e4a8f9318b0197bc3f0cbaf7043c53adb9d)) +- Add CLI commands to fetch user library and YTM releases/charts - ([a1b43ad](https://codeberg.org/ThetaDev/rustypipe/commit/a1b43ad70a66cfcbaba8ef302ac8699f243e56e7)) +- Export subscriptions as OPML / NewPipe JSON - ([c90d966](https://codeberg.org/ThetaDev/rustypipe/commit/c90d966b17eab24e957d980695888a459707055c)) + +### 📚 Documentation + +- Update README - ([0432477](https://codeberg.org/ThetaDev/rustypipe/commit/0432477451ecd5f64145d65239c721f4e44826c0)) +- Fix README - ([11442df](https://codeberg.org/ThetaDev/rustypipe/commit/11442dfd369599396357f5b7a7a4268a7b537f57)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate rstest to 0.24.0 (#20) - ([ab19034](https://codeberg.org/ThetaDev/rustypipe/commit/ab19034ab19baf090e83eada056559676ffdadce)) +- *(deps)* Update rust crate dirs to v6 (#24) - ([6a60425](https://codeberg.org/ThetaDev/rustypipe/commit/6a604252b1af7a9388db5dc170f737069cc31051)) + + ## [v0.5.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.4.0..rustypipe-cli/v0.5.0) - 2024-12-20 ### 🚀 Features diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 02761bc..519d210 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-cli" -version = "0.5.0" +version = "0.6.0" rust-version = "1.70.0" edition.workspace = true authors.workspace = true From af7dc1016322a87dd8fec0b739939c2b12b6f400 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 18 Jan 2025 05:51:41 +0100 Subject: [PATCH 099/191] fix: parsing history dates --- codegen/src/collect_history_dates.rs | 77 +- codegen/src/gen_dictionary.rs | 22 +- codegen/src/main.rs | 4 + codegen/src/model.rs | 7 + src/util/dictionary.rs | 339 ++-- src/util/timeago.rs | 151 +- .../dict/cldr_data/collect_date_order.js | 59 + testfiles/dict/cldr_data/collect_day_names.js | 60 +- testfiles/dict/dictionary.json | 300 +++- testfiles/dict/history_date_samples.json | 1494 ++++++++++++++++- 10 files changed, 2084 insertions(+), 429 deletions(-) create mode 100644 testfiles/dict/cldr_data/collect_date_order.js diff --git a/codegen/src/collect_history_dates.rs b/codegen/src/collect_history_dates.rs index 674c09c..838311b 100644 --- a/codegen/src/collect_history_dates.rs +++ b/codegen/src/collect_history_dates.rs @@ -5,26 +5,25 @@ use rustypipe::{ client::RustyPipe, param::{Language, LANGUAGES}, }; -use serde::{Deserialize, Serialize}; use crate::util::{self, DICT_DIR}; -type CollectedDates = BTreeMap; +type CollectedDates = BTreeMap>; -#[derive(Debug, Serialize, Deserialize)] -struct HistoryDates { - this_week: String, - last_week: String, -} +const THIS_WEEK: &str = "this_week"; +const LAST_WEEK: &str = "last_week"; -pub async fn collect_dates() { +pub async fn collect_dates_music() { let json_path = path!(*DICT_DIR / "history_date_samples.json"); let rp = RustyPipe::builder() - .storage_dir("/home/thetadev/Documents/Programmieren/Rust/rustypipe") + .storage_dir(path!(env!("CARGO_MANIFEST_DIR") / "..")) .build() .unwrap(); - let mut res: CollectedDates = BTreeMap::new(); + let mut res: CollectedDates = { + let json_file = File::open(&json_path).unwrap(); + serde_json::from_reader(BufReader::new(json_file)).unwrap() + }; for lang in LANGUAGES { println!("{lang}"); @@ -34,14 +33,56 @@ pub async fn collect_dates() { } // The indexes have to be adapted before running - let d = HistoryDates { - this_week: history.items[0].playback_date_txt.clone().unwrap(), - last_week: history.items[18].playback_date_txt.clone().unwrap(), - }; - res.insert(lang, d); + let entry = res.entry(lang).or_default(); + entry.insert( + THIS_WEEK.to_owned(), + history.items[0].playback_date_txt.clone().unwrap(), + ); + entry.insert( + LAST_WEEK.to_owned(), + history.items[18].playback_date_txt.clone().unwrap(), + ); } - let file = File::create(json_path).unwrap(); + let file = File::create(&json_path).unwrap(); + serde_json::to_writer_pretty(file, &res).unwrap(); +} + +pub async fn collect_dates() { + let json_path = path!(*DICT_DIR / "history_date_samples.json"); + let rp = RustyPipe::builder() + .storage_dir(path!(env!("CARGO_MANIFEST_DIR") / "..")) + .build() + .unwrap(); + + let mut res: CollectedDates = { + let json_file = File::open(&json_path).unwrap(); + serde_json::from_reader(BufReader::new(json_file)).unwrap() + }; + + for lang in LANGUAGES { + println!("{lang}"); + let history = rp.query().lang(lang).history().await.unwrap(); + if history.items.len() < 3 { + panic!("{lang} empty history") + } + + let entry = res.entry(lang).or_default(); + entry.insert( + "tuesday".to_owned(), + history.items[0].playback_date_txt.clone().unwrap(), + ); + entry.insert( + "0000-01-06".to_owned(), + history.items[1].playback_date_txt.clone().unwrap(), + ); + entry.insert( + "2024-12-28".to_owned(), + history.items[15].playback_date_txt.clone().unwrap(), + ); + } + + let file = File::create(&json_path).unwrap(); serde_json::to_writer_pretty(file, &res).unwrap(); } @@ -59,10 +100,10 @@ pub fn write_samples_to_dict() { let cd = &collected_dates[&lang]; dict_entry .timeago_nd_tokens - .insert(util::filter_datestr(&cd.this_week), "0Wl".to_owned()); + .insert(util::filter_datestr(&cd[THIS_WEEK]), "0Wl".to_owned()); dict_entry .timeago_nd_tokens - .insert(util::filter_datestr(&cd.last_week), "1Wl".to_owned()); + .insert(util::filter_datestr(&cd[LAST_WEEK]), "1Wl".to_owned()); } util::write_dict(dict); diff --git a/codegen/src/gen_dictionary.rs b/codegen/src/gen_dictionary.rs index ef01834..e5ce310 100644 --- a/codegen/src/gen_dictionary.rs +++ b/codegen/src/gen_dictionary.rs @@ -45,7 +45,7 @@ pub fn generate_dictionary() { use crate::{ model::AlbumType, param::Language, - util::timeago::{DateCmp, TaToken, TimeUnit}, + util::timeago::{TaToken, TimeUnit}, }; /// Dictionary entry containing language-specific parsing information @@ -57,14 +57,13 @@ pub(crate) struct Entry { /// Identifiers: `Y`(ear), `M`(month), `W`(eek), `D`(ay), /// `h`(our), `m`(inute), `s`(econd) pub timeago_tokens: phf::Map<&'static str, TaToken>, - /// Order in which to parse numeric date components. Formatted as - /// a string of date identifiers (Y, M, D). + /// True if the month has to be parsed before the day /// /// Examples: /// - /// - 03.01.2020 => `"DMY"` - /// - Jan 3, 2020 => `"DY"` - pub date_order: &'static [DateCmp], + /// - 03.01.2020 => DMY => false + /// - 01/03/2020 => MDY => true + pub month_before_day: bool, /// Tokens for parsing month names. /// /// Format: Parsed token -> Month number (starting from 1) @@ -139,13 +138,6 @@ pub(crate) fn entry(lang: Language) -> Entry { }; }); - // Date order - let mut date_order = "&[".to_owned(); - entry.date_order.chars().for_each(|c| { - write!(date_order, "DateCmp::{c}, ").unwrap(); - }); - date_order = date_order.trim_end_matches([' ', ',']).to_owned() + "]"; - // Number tokens let mut number_tokens = phf_codegen::Map::<&str>::new(); entry.number_tokens.iter().for_each(|(txt, mag)| { @@ -186,8 +178,8 @@ pub(crate) fn entry(lang: Language) -> Entry { .to_string() .replace('\n', "\n "); - write!(code_timeago_tokens, "{} => Entry {{\n timeago_tokens: {},\n date_order: {},\n months: {},\n timeago_nd_tokens: {},\n comma_decimal: {:?},\n number_tokens: {},\n number_nd_tokens: {},\n album_types: {},\n chan_prefix: {:?},\n chan_suffix: {:?},\n }},\n ", - selector, code_ta_tokens, date_order, code_months, code_ta_nd_tokens, entry.comma_decimal, code_number_tokens, code_number_nd_tokens, code_album_types, entry.chan_prefix, entry.chan_suffix).unwrap(); + write!(code_timeago_tokens, "{} => Entry {{\n timeago_tokens: {},\n month_before_day: {:?},\n months: {},\n timeago_nd_tokens: {},\n comma_decimal: {:?},\n number_tokens: {},\n number_nd_tokens: {},\n album_types: {},\n chan_prefix: {:?},\n chan_suffix: {:?},\n }},\n ", + selector, code_ta_tokens, entry.month_before_day, code_months, code_ta_nd_tokens, entry.comma_decimal, code_number_tokens, code_number_nd_tokens, code_album_types, entry.chan_prefix, entry.chan_suffix).unwrap(); } code_timeago_tokens = code_timeago_tokens.trim_end().to_owned() + "\n }\n}\n"; diff --git a/codegen/src/main.rs b/codegen/src/main.rs index cff81b9..87f484f 100644 --- a/codegen/src/main.rs +++ b/codegen/src/main.rs @@ -32,6 +32,7 @@ enum Commands { CollectVideoDurations, CollectVideoDates, CollectHistoryDates, + CollectMusicHistoryDates, CollectChanPrefixes, ParsePlaylistDates, ParseHistoryDates, @@ -74,6 +75,9 @@ async fn main() { Commands::CollectHistoryDates => { collect_history_dates::collect_dates().await; } + Commands::CollectMusicHistoryDates => { + collect_history_dates::collect_dates_music().await; + } Commands::CollectChanPrefixes => { collect_chan_prefixes::collect_chan_prefixes().await; } diff --git a/codegen/src/model.rs b/codegen/src/model.rs index d9f212d..3002451 100644 --- a/codegen/src/model.rs +++ b/codegen/src/model.rs @@ -13,6 +13,13 @@ pub struct DictEntry { /// Should the language be parsed by character instead of by word? /// (e.g. Chinese/Japanese) pub by_char: bool, + /// True if the month has to be parsed before the day + /// + /// Examples: + /// + /// - 03.01.2020 => DMY => false + /// - 01/03/2020 => MDY => true + pub month_before_day: bool, /// Tokens for parsing timeago strings. /// /// Format: Parsed token -> \[Quantity\] Identifier diff --git a/src/util/dictionary.rs b/src/util/dictionary.rs index 43f9119..6ada000 100644 --- a/src/util/dictionary.rs +++ b/src/util/dictionary.rs @@ -8,7 +8,7 @@ use crate::{ model::AlbumType, param::Language, - util::timeago::{DateCmp, TaToken, TimeUnit}, + util::timeago::{TaToken, TimeUnit}, }; /// Dictionary entry containing language-specific parsing information @@ -20,14 +20,13 @@ pub(crate) struct Entry { /// Identifiers: `Y`(ear), `M`(month), `W`(eek), `D`(ay), /// `h`(our), `m`(inute), `s`(econd) pub timeago_tokens: phf::Map<&'static str, TaToken>, - /// Order in which to parse numeric date components. Formatted as - /// a string of date identifiers (Y, M, D). + /// True if the month has to be parsed before the day /// /// Examples: /// - /// - 03.01.2020 => `"DMY"` - /// - Jan 3, 2020 => `"DY"` - pub date_order: &'static [DateCmp], + /// - 03.01.2020 => DMY => false + /// - 01/03/2020 => MDY => true + pub month_before_day: bool, /// Tokens for parsing month names. /// /// Format: Parsed token -> Month number (starting from 1) @@ -89,7 +88,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("jaar", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: true, months: ::phf::Map { key: 12213676231523076107, disps: &[ @@ -216,7 +215,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ቀናት", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -360,7 +359,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("دقائق", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -464,27 +463,35 @@ pub(crate) fn entry(lang: Language) -> Entry { ("মিনিট", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ - (3, 11), - (2, 2), - (0, 0), + (1, 0), + (13, 15), + (3, 15), + (0, 15), ], entries: &[ - ("ছেপ\u{9cd}তেম\u{9cd}বৰ", 9), - ("জ\u{9be}ন\u{9c1}ৱ\u{9be}ৰী", 1), - ("আগষ\u{9cd}ট", 8), - ("মে’", 5), - ("অক\u{9cd}টোবৰ", 10), - ("এপ\u{9cd}ৰিল", 4), - ("ডিচেম\u{9cd}বৰ", 12), - ("ফেব\u{9cd}ৰ\u{9c1}ৱ\u{9be}ৰী", 2), - ("জ\u{9c1}ন", 6), + ("ফেব\u{9cd}ৰ\u{9c1}", 2), ("ম\u{9be}ৰ\u{9cd}চ", 3), - ("জ\u{9c1}ল\u{9be}ই", 7), + ("ডিচেম\u{9cd}বৰ", 12), ("নৱেম\u{9cd}বৰ", 11), + ("ডিচে", 12), + ("নৱে", 11), + ("এপ\u{9cd}ৰিল", 4), + ("জ\u{9c1}ল\u{9be}ই", 7), + ("ফেব\u{9cd}ৰ\u{9c1}ৱ\u{9be}ৰী", 2), + ("মে’", 5), + ("জ\u{9be}ন\u{9c1}ৱ\u{9be}ৰী", 1), + ("ছেপ\u{9cd}তে", 9), + ("আগ", 8), + ("আগষ\u{9cd}ট", 8), + ("ছেপ\u{9cd}তেম\u{9cd}বৰ", 9), + ("জ\u{9c1}ন", 6), + ("অক\u{9cd}টো", 10), + ("জ\u{9be}ন\u{9c1}", 1), + ("অক\u{9cd}টোবৰ", 10), ], }, timeago_nd_tokens: ::phf::Map { @@ -580,7 +587,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ay", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -724,7 +731,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("хвіліна", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -855,7 +862,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("седмици", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -956,7 +963,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("সেকেন\u{9cd}ড", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1097,7 +1104,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("sedmice", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1225,7 +1232,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("setmana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1367,7 +1374,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1478,7 +1485,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("dage", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1602,27 +1609,36 @@ pub(crate) fn entry(lang: Language) -> Entry { ("sek", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], + month_before_day: false, months: ::phf::Map { - key: 7485420634051515786, + key: 12913932095322966823, disps: &[ (0, 0), - (1, 8), - (0, 3), + (17, 15), + (3, 6), + (5, 10), ], entries: &[ - ("januar", 1), - ("august", 8), - ("februar", 2), - ("dezember", 12), - ("oktober", 10), - ("september", 9), - ("november", 11), - ("juli", 7), - ("juni", 6), - ("april", 4), - ("mai", 5), + ("sept", 9), ("märz", 3), + ("mai", 5), + ("september", 9), + ("dez", 12), + ("apr", 4), + ("august", 8), + ("april", 4), + ("oktober", 10), + ("aug", 8), + ("februar", 2), + ("juli", 7), + ("dezember", 12), + ("nov", 11), + ("feb", 2), + ("okt", 10), + ("juni", 6), + ("november", 11), + ("januar", 1), + ("jan", 1), ], }, timeago_nd_tokens: ::phf::Map { @@ -1717,7 +1733,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("λεπτά", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1857,7 +1873,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("second", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: true, months: ::phf::Map { key: 351906021642186605, disps: &[ @@ -1988,7 +2004,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("meses", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 8602556344903797927, disps: &[ @@ -2114,7 +2130,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("sem", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 8602556344903797927, disps: &[ @@ -2243,7 +2259,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("päeva", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 11210181029210336526, disps: &[ @@ -2356,7 +2372,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::Y, DateCmp::D], + month_before_day: true, months: ::phf::Map { key: 4594751852016600049, disps: &[ @@ -2469,7 +2485,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("دقیقه", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: true, months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -2593,7 +2609,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("viikko", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -2697,7 +2713,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("linggo", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: true, months: ::phf::Map { key: 345707026197253659, disps: &[ @@ -2826,7 +2842,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("jour", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -2956,7 +2972,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("semana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -3068,7 +3084,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("કલાક", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -3175,7 +3191,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("स\u{947}क\u{902}ड", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -3312,7 +3328,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("g", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 8694567506910003252, disps: &[ @@ -3441,7 +3457,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("órával", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: &[DateCmp::Y, DateCmp::D], + month_before_day: true, months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -3562,7 +3578,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ամիս", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 8694567506910003252, disps: &[ @@ -3685,7 +3701,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("menit", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -3814,7 +3830,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("mán", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -3947,7 +3963,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("secondo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 5516568623150984925, disps: &[ @@ -4085,7 +4101,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("דקות", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -4200,7 +4216,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("分", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], + month_before_day: true, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -4287,7 +4303,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("წმ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 14108922650502679131, disps: &[ @@ -4409,7 +4425,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("мин", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::Y, DateCmp::D], + month_before_day: false, months: ::phf::Map { key: 42584678569483946, disps: &[ @@ -4527,7 +4543,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("នាទ\u{17b8}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -4642,7 +4658,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ಸ\u{cc6}ಕ\u{cc6}ಂಡ\u{ccd}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 8602556344903797927, disps: &[ @@ -4751,7 +4767,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("주", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], + month_before_day: true, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -4837,7 +4853,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ай", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, - date_order: &[DateCmp::Y, DateCmp::D], + month_before_day: false, months: ::phf::Map { key: 8694567506910003252, disps: &[ @@ -4960,7 +4976,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ຊມ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -5111,7 +5127,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("dieną", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], + month_before_day: true, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -5233,7 +5249,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ned", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: &[DateCmp::Y, DateCmp::D], + month_before_day: false, months: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -5358,27 +5374,40 @@ pub(crate) fn entry(lang: Language) -> Entry { ("секунди", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ - (5, 0), (4, 10), - (0, 10), + (1, 0), + (5, 1), + (2, 0), + (20, 19), ], entries: &[ + ("јул", 7), + ("апр", 4), + ("февруари", 2), + ("јануари", 1), + ("мар", 3), + ("јан", 1), + ("септември", 9), + ("јун", 6), + ("август", 8), + ("сеп", 9), + ("фев", 2), + ("јули", 7), + ("април", 4), + ("ное", 11), + ("окт", 10), ("ноември", 11), ("март", 3), - ("декември", 12), - ("октомври", 10), + ("авг", 8), ("мај", 5), + ("октомври", 10), ("јуни", 6), - ("август", 8), - ("април", 4), - ("јануари", 1), - ("јули", 7), - ("септември", 9), - ("февруари", 2), + ("дек", 12), + ("декември", 12), ], }, timeago_nd_tokens: ::phf::Map { @@ -5463,7 +5492,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("സെക\u{d4d}കൻഡ\u{d4d}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::Y, DateCmp::D], + month_before_day: false, months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -5581,7 +5610,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("секундын", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], + month_before_day: true, months: ::phf::Map { key: 14108922650502679131, disps: &[ @@ -5594,10 +5623,10 @@ pub(crate) fn entry(lang: Language) -> Entry { ("долоодугаар", 7), ("тавдугаар", 5), ("аравдугаар", 10), - ("хоёрдугаар", 12), + ("хоёрдугаар", 2), ("дөрөвдүгээр", 4), ("зургаадугаар", 6), - ("нэгдүгээр", 11), + ("нэгдүгээр", 1), ("гуравдугаар", 3), ], }, @@ -5693,7 +5722,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("स\u{947}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -5807,7 +5836,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("hari", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -5918,7 +5947,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("န\u{103e}စ\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: &[DateCmp::Y, DateCmp::D], + month_before_day: false, months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -6036,7 +6065,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("स\u{947}क\u{947}न\u{94d}ड", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::Y, DateCmp::D], + month_before_day: true, months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -6147,7 +6176,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("dagen", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -6275,7 +6304,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("d", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -6396,7 +6425,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ସେ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: true, months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -6506,7 +6535,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ਘ\u{a70}ਟਾ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -6648,7 +6677,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("roku", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -6777,7 +6806,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -6905,7 +6934,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("dia", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -7018,7 +7047,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ani", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -7162,7 +7191,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("секунда", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -7277,7 +7306,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ද\u{dd2}න", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: &[DateCmp::Y, DateCmp::D], + month_before_day: true, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -7415,7 +7444,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("dňa", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -7551,7 +7580,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("meseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -7671,7 +7700,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("orë", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -7803,27 +7832,38 @@ pub(crate) fn entry(lang: Language) -> Entry { ("сек", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], + month_before_day: false, months: ::phf::Map { - key: 10121458955350035957, + key: 15467950696543387533, disps: &[ - (2, 8), - (1, 0), - (0, 0), + (0, 18), + (0, 4), + (2, 0), + (2, 0), + (3, 16), ], entries: &[ ("мај", 5), + ("феб", 2), + ("мар", 3), ("јануар", 1), + ("окт", 10), + ("дец", 12), ("август", 8), ("март", 3), - ("фебруар", 2), - ("новембар", 11), ("јун", 6), - ("октобар", 10), - ("април", 4), - ("децембар", 12), ("јул", 7), + ("нов", 11), + ("сеп", 9), + ("април", 4), + ("јан", 1), + ("октобар", 10), ("септембар", 9), + ("апр", 4), + ("авг", 8), + ("новембар", 11), + ("децембар", 12), + ("фебруар", 2), ], }, timeago_nd_tokens: ::phf::Map { @@ -7922,27 +7962,38 @@ pub(crate) fn entry(lang: Language) -> Entry { ("sati", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], + month_before_day: false, months: ::phf::Map { - key: 15467950696543387533, + key: 10121458955350035957, disps: &[ - (1, 3), - (5, 11), + (9, 16), + (0, 6), + (5, 10), + (2, 5), (0, 0), ], entries: &[ - ("decembar", 12), - ("april", 4), - ("februar", 2), - ("jul", 7), + ("jan", 1), + ("okt", 10), ("novembar", 11), - ("maj", 5), - ("jun", 6), ("avgust", 8), - ("januar", 1), - ("septembar", 9), + ("feb", 2), + ("februar", 2), + ("decembar", 12), + ("sep", 9), + ("april", 4), + ("jul", 7), + ("dec", 12), + ("mar", 3), + ("jun", 6), + ("nov", 11), ("oktobar", 10), + ("avg", 8), + ("apr", 4), + ("septembar", 9), ("mart", 3), + ("maj", 5), + ("januar", 1), ], }, timeago_nd_tokens: ::phf::Map { @@ -8037,7 +8088,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: true, months: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -8147,7 +8198,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("miaka", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -8277,7 +8328,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("நிமிடத\u{bcd}திற\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -8403,7 +8454,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("సంవత\u{c4d}సర\u{c3e}ల", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -8526,7 +8577,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("เด\u{e37}อนท\u{e35}\u{e48}แล\u{e49}ว", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -8649,7 +8700,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("sa", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 3599879742736855518, disps: &[ @@ -8796,7 +8847,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("хвилина", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -8921,7 +8972,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("سیکنڈز", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -9039,7 +9090,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("son", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -9151,7 +9202,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("tuần", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], + month_before_day: false, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -9232,7 +9283,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("小", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], + month_before_day: true, months: ::phf::Map { key: 106375038446233661, disps: &[ @@ -9330,7 +9381,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("分", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], + month_before_day: true, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -9410,7 +9461,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("分", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], + month_before_day: true, months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -9510,7 +9561,7 @@ pub(crate) fn entry(lang: Language) -> Entry { ("emahoreni", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: &[DateCmp::D, DateCmp::Y], + month_before_day: true, months: ::phf::Map { key: 2126027241312876569, disps: &[ diff --git a/src/util/timeago.rs b/src/util/timeago.rs index 5ccb4fa..274c653 100644 --- a/src/util/timeago.rs +++ b/src/util/timeago.rs @@ -72,12 +72,6 @@ pub struct TaToken { pub unit: Option, } -pub enum DateCmp { - Y, - M, - D, -} - impl TimeUnit { pub fn secs(self) -> u32 { match self { @@ -207,10 +201,19 @@ impl Iterator for TaTokenParser<'_> { } } -fn parse_textual_month(entry: &dictionary::Entry, filtered_str: &str) -> Option { +fn parse_textual_month(lang: Language, filtered_str: &str) -> Option { + let entry = dictionary::entry(lang); filtered_str .split_whitespace() .find_map(|word| entry.months.get(word).copied()) + .map(|mon| { + // Mongolian has an extra number word that adds 10 to a month + if lang == Language::Mn && filtered_str.split_whitespace().any(|s| s == "арван") { + mon + 10 + } else { + mon + } + }) } /// Parse a TimeAgo string (e.g. "29 minutes ago") into a TimeAgo object. @@ -278,53 +281,49 @@ pub fn parse_textual_date(lang: Language, textual_date: &str) -> Option = None; - let mut m: Option = None; + let mut m = parse_textual_month(lang, &filtered_str).map(u16::from); let mut d: Option = None; - let mut i = 0; - for dc in date_order.iter() { - match dc { - DateCmp::Y => y = Some(nums[i]), - DateCmp::M => m = Some(nums[i]), - DateCmp::D => { - if with_day { - d = Some(nums[i]); - } else { - continue; - } + for num in nums { + if num > 31 { + if y.is_none() { + y = Some(num); + } else { + return None; } + } else if m.is_none() && (entry.month_before_day || d.is_some()) { + m = Some(num); + } else if d.is_none() { + d = Some(num); + } else { + return None; } - i += 1; } - - if m.is_none() { - m = parse_textual_month(&entry, &filtered_str).map(u16::from); + if m.is_none() && d.is_some() { + m = d; + d = None; } match (y, m, d) { - (Some(y), Some(m), d) => Month::try_from(m as u8) + (y, Some(m), d) => Month::try_from(m as u8) .ok() - .and_then(|m| Date::from_calendar_date(y.into(), m, d.unwrap_or(1) as u8).ok()) + .and_then(|m| { + Date::from_calendar_date( + y.map(i32::from) + .unwrap_or_else(|| OffsetDateTime::now_utc().year()), + m, + d.unwrap_or(1) as u8, + ) + .ok() + }) .map(ParsedDate::Absolute), _ => None, } @@ -460,7 +459,7 @@ fn split_duration_txt(txt: &str, start_word: bool) -> Vec { #[cfg(test)] mod tests { - use std::{collections::BTreeMap, fs::File, io::BufReader}; + use std::{collections::BTreeMap, fs::File, io::BufReader, str::FromStr}; use path_macro::path; use rstest::rstest; @@ -911,6 +910,20 @@ mod tests { assert_eq!(parsed_date, expect); } + #[rstest] + #[case(Language::En, "Jan 5", date!(0000-01-05))] + fn t_parse_date_this_year( + #[case] lang: Language, + #[case] textual_date: &str, + #[case] expect: Date, + ) { + let parsed_date = parse_textual_date(lang, textual_date); + let expected_date = expect + .replace_year(OffsetDateTime::now_utc().year()) + .unwrap(); + assert_eq!(parsed_date, Some(ParsedDate::Absolute(expected_date))); + } + #[test] fn t_parse_date_samples() { let json_path = path!(*TESTFILES / "dict" / "playlist_samples.json"); @@ -1008,34 +1021,48 @@ mod tests { #[test] fn t_parse_history_date_samples() { - #[derive(Deserialize)] - struct HistoryDates { - this_week: String, - last_week: String, - } - let json_path = path!(*TESTFILES / "dict" / "history_date_samples.json"); let json_file = File::open(json_path).unwrap(); - let date_samples: BTreeMap = + let date_samples: BTreeMap> = serde_json::from_reader(BufReader::new(json_file)).unwrap(); for (lang, samples) in date_samples { - assert_eq!( - parse_textual_date(lang, &samples.this_week), - Some(ParsedDate::Relative(TimeAgo { - n: 0, - unit: TimeUnit::LastWeek - })), - "lang: {lang}" - ); - assert_eq!( - parse_textual_date(lang, &samples.last_week), - Some(ParsedDate::Relative(TimeAgo { - n: 1, - unit: TimeUnit::LastWeek - })), - "lang: {lang}" - ); + for (k, v) in samples { + let expected = match k.as_str() { + "this_week" => ParsedDate::Relative(TimeAgo { + n: 0, + unit: TimeUnit::LastWeek, + }), + "last_week" => ParsedDate::Relative(TimeAgo { + n: 1, + unit: TimeUnit::LastWeek, + }), + _ => { + if let Ok(wd) = time::Weekday::from_str(&k) { + ParsedDate::Relative(TimeAgo { + n: wd.number_days_from_monday(), + unit: TimeUnit::LastWeekday, + }) + } else { + let mut date_nums = k.split('-'); + let mut y = date_nums.next().unwrap().parse::().unwrap(); + if y == 0 { + y = OffsetDateTime::now_utc().date().year(); + } + let m = date_nums.next().unwrap().parse::().unwrap(); + let d = date_nums.next().unwrap().parse::().unwrap(); + ParsedDate::Absolute( + Date::from_calendar_date(y, m.try_into().unwrap(), d).unwrap(), + ) + } + } + }; + assert_eq!( + parse_textual_date(lang, &v), + Some(expected), + "lang={lang}; {k}" + ); + } } } diff --git a/testfiles/dict/cldr_data/collect_date_order.js b/testfiles/dict/cldr_data/collect_date_order.js new file mode 100644 index 0000000..b715065 --- /dev/null +++ b/testfiles/dict/cldr_data/collect_date_order.js @@ -0,0 +1,59 @@ +const fs = require("fs"); + +const DICT_PATH = "../dictionary.json"; + +function translateLang(lang) { + switch (lang) { + case "iw": // Hebrew + return "he"; + case "zh-CN": // Simplified Chinese + return "zh-Hans"; + case "zh-HK": + return "zh-Hant-HK"; + case "zh-TW": + return "zh-Hant"; + default: + return lang; + } +} + +function isMonthBeforeDay(lang) { + const cldrLang = translateLang(lang); + const dates = require(`cldr-dates-modern/main/${cldrLang}/ca-gregorian.json`); + const dateFields = dates.main[cldrLang].dates.calendars.gregorian; + + const dateFmt = dateFields.dateFormats.short; + const mPos = dateFmt.indexOf("M"); + const dPos = dateFmt.indexOf("d"); + if (mPos < 0 || dPos < 0) throw new Error(`invalid fmt for ${lang}: ${dateFmt}`); + return dPos > mPos; +} + +const dict = JSON.parse(fs.readFileSync(DICT_PATH)); + +for (const [mainLang, entry] of Object.entries(dict)) { + const langs = [mainLang, ...entry["equivalent"]]; + const dateOrder = entry["date_order"]; + const mPos = dateOrder.indexOf("M"); + const dPos = dateOrder.indexOf("D"); + let expectMbd = mPos < 0 || dPos < 0 ? null : dPos > mPos; + + if (mainLang === "en" || mainLang.startsWith("zh-")) { + expectMbd = true; + } else if (mainLang === "fr") + expectMbd = false; + else { + for (lang of langs) { + const mbd = isMonthBeforeDay(lang) + if (expectMbd === null) { + expectMbd = mbd; + } else if (mbd !== expectMbd) { + throw new Error(`unexpected mbd for ${lang}`); + } + } + } + + dict[mainLang]["month_before_day"] = expectMbd; +} + +fs.writeFileSync(DICT_PATH, JSON.stringify(dict, null, 2)); diff --git a/testfiles/dict/cldr_data/collect_day_names.js b/testfiles/dict/cldr_data/collect_day_names.js index ea09c4d..8864ffb 100644 --- a/testfiles/dict/cldr_data/collect_day_names.js +++ b/testfiles/dict/cldr_data/collect_day_names.js @@ -17,27 +17,46 @@ function translateLang(lang) { } } -function collectMonthNames(lang, by_char, monthNames, weekdayNames) { +function collectMonthNames(lang, by_char, monthNames, monthShortNames, weekdayNames) { const cldrLang = translateLang(lang); const dates = require(`cldr-dates-modern/main/${cldrLang}/ca-gregorian.json`); const dateFields = dates.main[cldrLang].dates.calendars.gregorian; const months = dateFields.months["stand-alone"].wide; - for (const [n, name] of Object.entries(months)) { - let name2 = name.toLowerCase(); - if (name2.includes(n)) { - // Some languages dont have named months - console.log(`${lang}: month name '${name2}' includes number; skipped`); - continue; + // Mongolian dates have the extra numbe арван and have to be handled manually + if (!["mn"].includes(lang)) { + for (const [n, name] of Object.entries(months)) { + let name2 = name.toLowerCase(); + if (name2.includes(n)) { + // Some languages dont have named months + console.log(`${lang}: month name '${name2}' includes number; skipped`); + continue; + } + if (/\s/g.test(name2)) { + throw new Error(`${lang}: month name '${name2}' contains whitespace`); + } + monthNames[name2] = parseInt(n); } - if (lang === "mn") { - name2 = name2.replace(" сар", "").replace("арван ", ""); + } + + if (!["bg", "fi", "cs", "iw", "lt", "pt-PT", "sk"].includes(lang)) { + const monthsShort = dateFields.months.format.abbreviated; + for (const [n, name] of Object.entries(monthsShort)) { + let name2 = name.toLowerCase().replaceAll(".", ""); + if (name2.includes(n)) { + // Some languages dont have named months + console.log(`${lang}: month name '${name2}' includes number; skipped`); + continue; + } + if (lang === "ca") { + name2 = name2.replace("de ", ""); + } + if (/\s/g.test(name2)) { + throw new Error(`${lang}: month name '${name2}' contains whitespace`); + } + monthShortNames[name2] = parseInt(n); } - if (/\s/g.test(name2)) { - throw new Error(`${lang}: month name '${name2}' contains whitespace`); - } - monthNames[name2.toLowerCase()] = parseInt(n); } const weekdays = dateFields.days["stand-alone"].wide; @@ -72,12 +91,23 @@ const dict = JSON.parse(fs.readFileSync(DICT_PATH)); for (const [mainLang, entry] of Object.entries(dict)) { const langs = [mainLang, ...entry["equivalent"]]; let monthNames = {}; + let monthShortNames = {}; let weekdayNames = {}; for (lang of langs) { - collectMonthNames(lang, entry["by_char"], monthNames, weekdayNames); + collectMonthNames( + lang, + entry["by_char"], + monthNames, + monthShortNames, + weekdayNames + ); } - dict[mainLang]["months"] = { ...dict[mainLang]["months"], ...monthNames }; + dict[mainLang]["months"] = { + ...dict[mainLang]["months"], + ...monthNames, + ...monthShortNames, + }; dict[mainLang]["timeago_nd_tokens"] = { ...dict[mainLang]["timeago_nd_tokens"], ...weekdayNames, diff --git a/testfiles/dict/dictionary.json b/testfiles/dict/dictionary.json index 9a3c46c..8076997 100644 --- a/testfiles/dict/dictionary.json +++ b/testfiles/dict/dictionary.json @@ -79,7 +79,8 @@ "enkelsnitte": "single" }, "chan_prefix": "deur", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": true }, "am": { "equivalent": [], @@ -162,7 +163,8 @@ "ነጠላዎች": "single" }, "chan_prefix": "በ", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "ar": { "equivalent": [], @@ -252,7 +254,8 @@ "أغنية منفردة": "single" }, "chan_prefix": "بواسطة", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "as": { "equivalent": [], @@ -268,17 +271,24 @@ }, "date_order": "DMY", "months": { + "জানু": 1, "জানুৱাৰী": 1, + "ফেব্ৰু": 2, "ফেব্ৰুৱাৰী": 2, "মাৰ্চ": 3, "এপ্ৰিল": 4, "মে’": 5, "জুন": 6, "জুলাই": 7, + "আগ": 8, "আগষ্ট": 8, + "ছেপ্তে": 9, "ছেপ্তেম্বৰ": 9, + "অক্টো": 10, "অক্টোবৰ": 10, + "নৱে": 11, "নৱেম্বৰ": 11, + "ডিচে": 12, "ডিচেম্বৰ": 12 }, "timeago_nd_tokens": { @@ -324,7 +334,8 @@ "এককসমূহ": "single" }, "chan_prefix": "", - "chan_suffix": "ৰ দ্বাৰা" + "chan_suffix": "ৰ দ্বাৰা", + "month_before_day": false }, "az": { "equivalent": [], @@ -397,7 +408,8 @@ "tək": "single" }, "chan_prefix": "by", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "be": { "equivalent": [], @@ -497,7 +509,8 @@ "сінглы": "single" }, "chan_prefix": "ад", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "bg": { "equivalent": [], @@ -571,7 +584,8 @@ "сингъл": "single" }, "chan_prefix": "от", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "bn": { "equivalent": [], @@ -645,7 +659,8 @@ "সিঙ্গেলস": "single" }, "chan_prefix": ",", - "chan_suffix": "দ্বারা" + "chan_suffix": "দ্বারা", + "month_before_day": false }, "bs": { "equivalent": [], @@ -738,7 +753,8 @@ "singlovi": "single" }, "chan_prefix": "od", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "ca": { "equivalent": [], @@ -818,7 +834,8 @@ "singles": "single" }, "chan_prefix": "de:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "cs": { "equivalent": [], @@ -903,7 +920,8 @@ "singly": "single" }, "chan_prefix": "autor:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "da": { "equivalent": [], @@ -983,7 +1001,8 @@ "singler": "single" }, "chan_prefix": "af", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "de": { "equivalent": [], @@ -1009,17 +1028,25 @@ }, "date_order": "DMY", "months": { + "jan": 1, "januar": 1, + "feb": 2, "februar": 2, "märz": 3, + "apr": 4, "april": 4, "mai": 5, "juni": 6, "juli": 7, + "aug": 8, "august": 8, + "sept": 9, "september": 9, + "okt": 10, "oktober": 10, + "nov": 11, "november": 11, + "dez": 12, "dezember": 12 }, "timeago_nd_tokens": { @@ -1053,7 +1080,8 @@ "singles": "single" }, "chan_prefix": "von", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "el": { "equivalent": [], @@ -1139,13 +1167,11 @@ "σινγκλ": "single" }, "chan_prefix": "από το χρήστη", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "en": { - "equivalent": [ - "en-GB", - "en-IN" - ], + "equivalent": ["en-GB", "en-IN"], "by_char": false, "timeago_tokens": { "s": "s", @@ -1237,7 +1263,8 @@ "singles": "single" }, "chan_prefix": "by", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": true }, "es": { "equivalent": [], @@ -1320,12 +1347,11 @@ "single": "single" }, "chan_prefix": "de", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "es-US": { - "equivalent": [ - "es-419" - ], + "equivalent": ["es-419"], "by_char": false, "timeago_tokens": { "s": "s", @@ -1406,7 +1432,8 @@ "sencillos": "single" }, "chan_prefix": "de", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "et": { "equivalent": [], @@ -1488,7 +1515,8 @@ "singlid": "single" }, "chan_prefix": "kanalilt", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "eu": { "equivalent": [], @@ -1562,7 +1590,8 @@ "singleak": "single" }, "chan_prefix": "egilea:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": true }, "fa": { "equivalent": [], @@ -1628,7 +1657,8 @@ "تک‌آهنگ‌ها": "single" }, "chan_prefix": "توسط", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": true }, "fi": { "equivalent": [], @@ -1704,7 +1734,8 @@ "singlet": "single" }, "chan_prefix": "tekijä:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "fil": { "equivalent": [], @@ -1779,12 +1810,11 @@ "single": "single" }, "chan_prefix": "ni/ng", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": true }, "fr": { - "equivalent": [ - "fr-CA" - ], + "equivalent": ["fr-CA"], "by_char": false, "timeago_tokens": { "s": "s", @@ -1868,7 +1898,8 @@ "singles": "single" }, "chan_prefix": "de", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "gl": { "equivalent": [], @@ -1948,7 +1979,8 @@ "singles": "single" }, "chan_prefix": "de", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "gu": { "equivalent": [], @@ -2013,7 +2045,8 @@ "સિંગલ": "single" }, "chan_prefix": "", - "chan_suffix": "દ્વારા" + "chan_suffix": "દ્વારા", + "month_before_day": false }, "hi": { "equivalent": [], @@ -2087,7 +2120,8 @@ "सिंगल": "single" }, "chan_prefix": "", - "chan_suffix": "के ज़रिए" + "chan_suffix": "के ज़रिए", + "month_before_day": false }, "hr": { "equivalent": [], @@ -2180,7 +2214,8 @@ "singlovi": "single" }, "chan_prefix": "omogućio kanal", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "hu": { "equivalent": [], @@ -2265,7 +2300,8 @@ "kislemezek": "single" }, "chan_prefix": "", - "chan_suffix": "csatornától" + "chan_suffix": "csatornától", + "month_before_day": true }, "hy": { "equivalent": [], @@ -2344,7 +2380,8 @@ "սինգլներ": "single" }, "chan_prefix": "հեղինակ՝", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "id": { "equivalent": [], @@ -2420,7 +2457,8 @@ "single": "single" }, "chan_prefix": "oleh", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "is": { "equivalent": [], @@ -2509,7 +2547,8 @@ "smáskífur": "single" }, "chan_prefix": "eftir", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "it": { "equivalent": [], @@ -2596,7 +2635,8 @@ "singolo": "single" }, "chan_prefix": "di", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "iw": { "equivalent": [], @@ -2688,7 +2728,8 @@ "סינגלים": "single" }, "chan_prefix": "מאת", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "ja": { "equivalent": [], @@ -2731,7 +2772,8 @@ "シングル": "single" }, "chan_prefix": "作成者:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": true }, "ka": { "equivalent": [], @@ -2810,7 +2852,8 @@ "სინგლი": "single" }, "chan_prefix": "", - "chan_suffix": "-ის მიერ" + "chan_suffix": "-ის მიერ", + "month_before_day": false }, "kk": { "equivalent": [], @@ -2890,7 +2933,8 @@ "синглдер": "single" }, "chan_prefix": "қосқан", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "km": { "equivalent": [], @@ -2951,7 +2995,8 @@ "ចម្រៀងទោល": "single" }, "chan_prefix": "ដោយ", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "kn": { "equivalent": [], @@ -3033,7 +3078,8 @@ "ಸಿಂಗಲ್ಸ್": "single" }, "chan_prefix": "", - "chan_suffix": "ಚಾನಲ್‌ನಿಂದ" + "chan_suffix": "ಚಾನಲ್‌ನಿಂದ", + "month_before_day": false }, "ko": { "equivalent": [], @@ -3079,7 +3125,8 @@ "싱글": "single" }, "chan_prefix": "게시자:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": true }, "ky": { "equivalent": [], @@ -3155,7 +3202,8 @@ "синглдар": "single" }, "chan_prefix": "", - "chan_suffix": "каналы аркылуу" + "chan_suffix": "каналы аркылуу", + "month_before_day": false }, "lo": { "equivalent": [], @@ -3238,7 +3286,8 @@ "ຜົນງານເພງ": "single" }, "chan_prefix": "ໂດຍ", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "lt": { "equivalent": [], @@ -3327,7 +3376,8 @@ "singlas": "single" }, "chan_prefix": "pridėjo", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": true }, "lv": { "equivalent": [], @@ -3416,7 +3466,8 @@ "singls": "single" }, "chan_prefix": "autors:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "mk": { "equivalent": [], @@ -3442,17 +3493,28 @@ }, "date_order": "DMY", "months": { + "јан": 1, "јануари": 1, + "фев": 2, "февруари": 2, + "мар": 3, "март": 3, + "апр": 4, "април": 4, "мај": 5, + "јун": 6, "јуни": 6, + "јул": 7, "јули": 7, + "авг": 8, "август": 8, + "сеп": 9, "септември": 9, + "окт": 10, "октомври": 10, + "ное": 11, "ноември": 11, + "дек": 12, "декември": 12 }, "timeago_nd_tokens": { @@ -3488,7 +3550,8 @@ "синглови": "single" }, "chan_prefix": "од", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "ml": { "equivalent": [], @@ -3560,7 +3623,8 @@ "സിംഗിൾസ്": "single" }, "chan_prefix": "", - "chan_suffix": "മുഖേന" + "chan_suffix": "മുഖേന", + "month_before_day": false }, "mn": { "equivalent": [], @@ -3582,6 +3646,8 @@ }, "date_order": "YMD", "months": { + "нэгдүгээр": 1, + "хоёрдугаар": 2, "гуравдугаар": 3, "дөрөвдүгээр": 4, "тавдугаар": 5, @@ -3589,9 +3655,7 @@ "долоодугаар": 7, "наймдугаар": 8, "есдүгээр": 9, - "аравдугаар": 10, - "нэгдүгээр": 11, - "хоёрдугаар": 12 + "аравдугаар": 10 }, "timeago_nd_tokens": { "өнөөдөр": "0D", @@ -3624,7 +3688,8 @@ "синглүүд": "single" }, "chan_prefix": "сувгийн нэр:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": true }, "mr": { "equivalent": [], @@ -3706,7 +3771,8 @@ "सिंगल": "single" }, "chan_prefix": "", - "chan_suffix": "द्वारे" + "chan_suffix": "द्वारे", + "month_before_day": false }, "ms": { "equivalent": [], @@ -3777,7 +3843,8 @@ "rekod single": "single" }, "chan_prefix": "oleh", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "my": { "equivalent": [], @@ -3854,7 +3921,8 @@ "တစ်ပုဒ်ချင်းများ": "single" }, "chan_prefix": "", - "chan_suffix": "မှ" + "chan_suffix": "မှ", + "month_before_day": false }, "ne": { "equivalent": [], @@ -3917,7 +3985,8 @@ "एकल एल्बमहरू": "single" }, "chan_prefix": "", - "chan_suffix": "द्वारा" + "chan_suffix": "द्वारा", + "month_before_day": true }, "nl": { "equivalent": [], @@ -3996,7 +4065,8 @@ "singles": "single" }, "chan_prefix": "door", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "no": { "equivalent": [], @@ -4080,7 +4150,8 @@ "singler": "single" }, "chan_prefix": "av", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "or": { "equivalent": [], @@ -4153,7 +4224,8 @@ "ସିଙ୍ଗଲ୍": "single" }, "chan_prefix": "", - "chan_suffix": "ଦ୍ଵାରା" + "chan_suffix": "ଦ୍ଵାରା", + "month_before_day": true }, "pa": { "equivalent": [], @@ -4226,7 +4298,8 @@ "ਸਿੰਗਲ": "single" }, "chan_prefix": "", - "chan_suffix": "ਵੱਲੋਂ" + "chan_suffix": "ਵੱਲੋਂ", + "month_before_day": false }, "pl": { "equivalent": [], @@ -4324,7 +4397,8 @@ "single": "single" }, "chan_prefix": "autor:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "pt": { "equivalent": [], @@ -4409,7 +4483,8 @@ "singles": "single" }, "chan_prefix": "por", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "pt-PT": { "equivalent": [], @@ -4479,7 +4554,8 @@ "singles": "single" }, "chan_prefix": "de", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "ro": { "equivalent": [], @@ -4563,7 +4639,8 @@ "single-uri": "single" }, "chan_prefix": "de", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "ru": { "equivalent": [], @@ -4659,7 +4736,8 @@ "синглы": "single" }, "chan_prefix": "", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "si": { "equivalent": [], @@ -4729,7 +4807,8 @@ "තනි": "single" }, "chan_prefix": "", - "chan_suffix": "විසින්" + "chan_suffix": "විසින්", + "month_before_day": true }, "sk": { "equivalent": [], @@ -4814,7 +4893,8 @@ "single": "single" }, "chan_prefix": "Autori:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "sl": { "equivalent": [], @@ -4915,7 +4995,8 @@ "singli": "single" }, "chan_prefix": "kanal", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "sq": { "equivalent": [], @@ -4992,7 +5073,8 @@ "single": "single" }, "chan_prefix": "nga", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "sr": { "equivalent": [], @@ -5023,17 +5105,26 @@ }, "date_order": "DMY", "months": { + "јан": 1, "јануар": 1, + "феб": 2, "фебруар": 2, + "мар": 3, "март": 3, + "апр": 4, "април": 4, "мај": 5, "јун": 6, "јул": 7, + "авг": 8, "август": 8, + "сеп": 9, "септембар": 9, + "окт": 10, "октобар": 10, + "нов": 11, "новембар": 11, + "дец": 12, "децембар": 12 }, "timeago_nd_tokens": { @@ -5068,7 +5159,8 @@ "синглови": "single" }, "chan_prefix": "са канала", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "sr-Latn": { "equivalent": [], @@ -5099,17 +5191,26 @@ }, "date_order": "DMY", "months": { + "jan": 1, "januar": 1, + "feb": 2, "februar": 2, + "mar": 3, "mart": 3, + "apr": 4, "april": 4, "maj": 5, "jun": 6, "jul": 7, + "avg": 8, "avgust": 8, + "sep": 9, "septembar": 9, + "okt": 10, "oktobar": 10, + "nov": 11, "novembar": 11, + "dec": 12, "decembar": 12 }, "timeago_nd_tokens": { @@ -5144,7 +5245,8 @@ "singlovi": "single" }, "chan_prefix": "sa kanala", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "sv": { "equivalent": [], @@ -5223,7 +5325,8 @@ "singlar": "single" }, "chan_prefix": "från", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": true }, "sw": { "equivalent": [], @@ -5295,7 +5398,8 @@ "singo": "single" }, "chan_prefix": "kutoka", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "ta": { "equivalent": [], @@ -5380,7 +5484,8 @@ "சிங்கிள்ஸ்": "single" }, "chan_prefix": "வழங்கியவர்:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "te": { "equivalent": [], @@ -5463,7 +5568,8 @@ "సింగిల్స్": "single" }, "chan_prefix": "", - "chan_suffix": "ఛానెల్ ద్వారా" + "chan_suffix": "ఛానెల్ ద్వారా", + "month_before_day": false }, "th": { "equivalent": [], @@ -5549,7 +5655,8 @@ "ซิงเกิล": "single" }, "chan_prefix": "โดย", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "tr": { "equivalent": [], @@ -5626,7 +5733,8 @@ "single'lar": "single" }, "chan_prefix": "", - "chan_suffix": "tarafından" + "chan_suffix": "tarafından", + "month_before_day": false }, "uk": { "equivalent": [], @@ -5727,7 +5835,8 @@ "сингли": "single" }, "chan_prefix": "власник:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "ur": { "equivalent": [], @@ -5809,7 +5918,8 @@ "واحد": "single" }, "chan_prefix": "منجانب", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "uz": { "equivalent": [], @@ -5881,7 +5991,8 @@ "singllar": "single" }, "chan_prefix": "muallif:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "vi": { "equivalent": [], @@ -5925,7 +6036,8 @@ "đĩa đơn": "single" }, "chan_prefix": "của", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": false }, "zh-CN": { "equivalent": [], @@ -5983,7 +6095,8 @@ "单曲": "single" }, "chan_prefix": "创建者:", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": true }, "zh-HK": { "equivalent": [], @@ -6027,7 +6140,8 @@ "單曲": "single" }, "chan_prefix": "來自", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": true }, "zh-TW": { "equivalent": [], @@ -6070,7 +6184,8 @@ "單曲": "single" }, "chan_prefix": "由", - "chan_suffix": "建立" + "chan_suffix": "建立", + "month_before_day": true }, "zu": { "equivalent": [], @@ -6160,6 +6275,7 @@ "i-single": "single" }, "chan_prefix": "ka-", - "chan_suffix": "" + "chan_suffix": "", + "month_before_day": true } } diff --git a/testfiles/dict/history_date_samples.json b/testfiles/dict/history_date_samples.json index 0d6668c..9576fef 100644 --- a/testfiles/dict/history_date_samples.json +++ b/testfiles/dict/history_date_samples.json @@ -1,334 +1,1662 @@ { "af": { + "0000-01-06": "6 Jan.", + "2021-03-01": "Maart 2021", + "2021-04-01": "April 2021", + "2022-08-01": "Augustus 2022", + "2022-10-01": "Oktober 2022", + "2022-11-01": "November 2022", + "2023-05-01": "Mei 2023", + "2023-06-01": "Junie 2023", + "2023-07-01": "Julie 2023", + "2024-12-01": "Desember 2024", + "2024-12-28": "28 Des. 2024", + "2025-01-01": "Januarie 2025", + "last_week": "Verlede week", + "Monday": "Maandag", "this_week": "Vandeesweek", - "last_week": "Verlede week" + "Thursday": "Donderdag", + "Tuesday": "Dinsdag", + "Wednesday": "Woensdag" }, "am": { + "0000-01-06": "ጃን 6", + "2021-03-01": "ማርች 2021", + "2021-04-01": "ኤፕሪል 2021", + "2022-08-01": "ኦገስት 2022", + "2022-10-01": "ኦክቶበር 2022", + "2022-11-01": "ኖቬምበር 2022", + "2023-05-01": "ሜይ 2023", + "2023-06-01": "ጁን 2023", + "2023-07-01": "ጁላይ 2023", + "2024-12-01": "ዲሴምበር 2024", + "2024-12-28": "28 ዲሴም 2024", + "2025-01-01": "ጃንዋሪ 2025", + "last_week": "ያለፈው ሳምንት", + "Monday": "ሰኞ", "this_week": "በዚህ ሳምንት", - "last_week": "ያለፈው ሳምንት" + "Thursday": "ሐሙስ", + "Tuesday": "ማክሰኞ", + "Wednesday": "ረቡዕ" }, "ar": { + "0000-01-06": "6 يناير", + "2021-03-01": "مارس 2021", + "2021-04-01": "أبريل 2021", + "2022-08-01": "أغسطس 2022", + "2022-10-01": "أكتوبر 2022", + "2022-11-01": "نوفمبر 2022", + "2023-05-01": "مايو 2023", + "2023-06-01": "يونيو 2023", + "2023-07-01": "يوليو 2023", + "2024-12-01": "ديسمبر 2024", + "2024-12-28": "28‏/12‏/2024", + "2025-01-01": "يناير 2025", + "last_week": "الأسبوع الماضي", + "Monday": "الاثنين", "this_week": "هذا الأسبوع", - "last_week": "الأسبوع الماضي" + "Thursday": "الخميس", + "Tuesday": "الثلاثاء", + "Wednesday": "الأربعاء" }, "as": { + "0000-01-06": "6 জানু", + "2021-03-01": "মাৰ্চ 2021", + "2021-04-01": "এপ্ৰিল 2021", + "2022-08-01": "আগষ্ট 2022", + "2022-10-01": "অক্টোবৰ 2022", + "2022-11-01": "নৱেম্বৰ 2022", + "2023-05-01": "মে’ 2023", + "2023-06-01": "জুন 2023", + "2023-07-01": "জুলাই 2023", + "2024-12-01": "ডিচেম্বৰ 2024", + "2024-12-28": "28-12-2024", + "2025-01-01": "জানুৱাৰী 2025", + "last_week": "যোৱা সপ্তাহৰ", + "Monday": "সোমবাৰ", "this_week": "এই সপ্তাহৰ", - "last_week": "যোৱা সপ্তাহৰ" + "Thursday": "বৃহস্পতিবাৰ", + "Tuesday": "মঙ্গলবাৰ", + "Wednesday": "বুধবাৰ" }, "az": { + "0000-01-06": "6 yan", + "2021-03-01": "mart 2021", + "2021-04-01": "aprel 2021", + "2022-08-01": "avqust 2022", + "2022-10-01": "oktyabr 2022", + "2022-11-01": "noyabr 2022", + "2023-05-01": "may 2023", + "2023-06-01": "iyun 2023", + "2023-07-01": "iyul 2023", + "2024-12-01": "dekabr 2024", + "2024-12-28": "28 dek 2024", + "2025-01-01": "yanvar 2025", + "last_week": "Ötən həftə", + "Monday": "bazar ertəsi", "this_week": "Bu həftə", - "last_week": "Ötən həftə" + "Thursday": "cümə axşamı", + "Tuesday": "çərşənbə axşamı", + "Wednesday": "çərşənbə" }, "be": { + "0000-01-06": "6 сту", + "2021-03-01": "сакавік 2021", + "2021-04-01": "красавік 2021", + "2022-08-01": "жнівень 2022", + "2022-10-01": "кастрычнік 2022", + "2022-11-01": "лістапад 2022", + "2023-05-01": "май 2023", + "2023-06-01": "чэрвень 2023", + "2023-07-01": "ліпень 2023", + "2024-12-01": "снежань 2024", + "2024-12-28": "28 сне 2024 г.", + "2025-01-01": "студзень 2025", + "last_week": "На мінулым тыдні", + "Monday": "панядзелак", "this_week": "На гэтым тыдні", - "last_week": "На мінулым тыдні" + "Thursday": "чацвер", + "Tuesday": "аўторак", + "Wednesday": "серада" }, "bg": { + "0000-01-06": "6.01", + "2021-03-01": "март 2021 г.", + "2021-04-01": "април 2021 г.", + "2022-08-01": "август 2022 г.", + "2022-10-01": "октомври 2022 г.", + "2022-11-01": "ноември 2022 г.", + "2023-05-01": "май 2023 г.", + "2023-06-01": "юни 2023 г.", + "2023-07-01": "юли 2023 г.", + "2024-12-01": "декември 2024 г.", + "2024-12-28": "28.12.2024 г.", + "2025-01-01": "януари 2025 г.", + "last_week": "Последната седмица", + "Monday": "понеделник", "this_week": "Тази седмица", - "last_week": "Последната седмица" + "Thursday": "четвъртък", + "Tuesday": "вторник", + "Wednesday": "сряда" }, "bn": { + "0000-01-06": "6 জানু", + "2021-03-01": "মার্চ 2021", + "2021-04-01": "এপ্রিল 2021", + "2022-08-01": "আগস্ট 2022", + "2022-10-01": "অক্টোবর 2022", + "2022-11-01": "নভেম্বর 2022", + "2023-05-01": "মে 2023", + "2023-06-01": "জুন 2023", + "2023-07-01": "জুলাই 2023", + "2024-12-01": "ডিসেম্বর 2024", + "2024-12-28": "28 ডিসে, 2024", + "2025-01-01": "জানুয়ারী 2025", + "last_week": "গত সপ্তাহ", + "Monday": "সোমবার", "this_week": "এই সপ্তাহে", - "last_week": "গত সপ্তাহ" + "Thursday": "বৃহস্পতিবার", + "Tuesday": "মঙ্গলবার", + "Wednesday": "বুধবার" }, "bs": { + "0000-01-06": "6. jan", + "2021-03-01": "mart 2021.", + "2021-04-01": "april 2021.", + "2022-08-01": "august 2022.", + "2022-10-01": "oktobar 2022.", + "2022-11-01": "novembar 2022.", + "2023-05-01": "maj 2023.", + "2023-06-01": "juni 2023.", + "2023-07-01": "juli 2023.", + "2024-12-01": "decembar 2024.", + "2024-12-28": "28. dec 2024.", + "2025-01-01": "januar 2025.", + "last_week": "Prošla sedmica", + "Monday": "ponedjeljak", "this_week": "Ova sedmica", - "last_week": "Prošla sedmica" + "Thursday": "četvrtak", + "Tuesday": "utorak", + "Wednesday": "srijeda" }, "ca": { + "0000-01-06": "6 de gen.", + "2021-03-01": "març del 2021", + "2021-04-01": "abril del 2021", + "2022-08-01": "agost del 2022", + "2022-10-01": "octubre del 2022", + "2022-11-01": "novembre del 2022", + "2023-05-01": "maig del 2023", + "2023-06-01": "juny del 2023", + "2023-07-01": "juliol del 2023", + "2024-12-01": "desembre del 2024", + "2024-12-28": "28 de des. 2024", + "2025-01-01": "gener del 2025", + "last_week": "La setmana passada", + "Monday": "dilluns", "this_week": "Aquesta setmana", - "last_week": "La setmana passada" + "Thursday": "dijous", + "Tuesday": "dimarts", + "Wednesday": "dimecres" }, "cs": { + "0000-01-06": "6. 1.", + "2021-03-01": "březen 2021", + "2021-04-01": "duben 2021", + "2022-08-01": "srpen 2022", + "2022-10-01": "říjen 2022", + "2022-11-01": "listopad 2022", + "2023-05-01": "květen 2023", + "2023-06-01": "červen 2023", + "2023-07-01": "červenec 2023", + "2024-12-01": "prosinec 2024", + "2024-12-28": "28. 12. 2024", + "2025-01-01": "leden 2025", + "last_week": "Minulý týden", + "Monday": "pondělí", "this_week": "Tento týden", - "last_week": "Minulý týden" + "Thursday": "čtvrtek", + "Tuesday": "úterý", + "Wednesday": "středa" }, "da": { + "0000-01-06": "6. jan.", + "2021-03-01": "marts 2021", + "2021-04-01": "april 2021", + "2022-08-01": "august 2022", + "2022-10-01": "oktober 2022", + "2022-11-01": "november 2022", + "2023-05-01": "maj 2023", + "2023-06-01": "juni 2023", + "2023-07-01": "juli 2023", + "2024-12-01": "december 2024", + "2024-12-28": "28. dec. 2024", + "2025-01-01": "januar 2025", + "last_week": "Sidste uge", + "Monday": "mandag", "this_week": "Denne uge", - "last_week": "Sidste uge" + "Thursday": "torsdag", + "Tuesday": "tirsdag", + "Wednesday": "onsdag" }, "de": { + "0000-01-06": "6. Jan.", + "2021-03-01": "März 2021", + "2021-04-01": "April 2021", + "2022-08-01": "August 2022", + "2022-10-01": "Oktober 2022", + "2022-11-01": "November 2022", + "2023-05-01": "Mai 2023", + "2023-06-01": "Juni 2023", + "2023-07-01": "Juli 2023", + "2024-12-01": "Dezember 2024", + "2024-12-28": "28.12.2024", + "2025-01-01": "Januar 2025", + "last_week": "Letzte Woche", + "Monday": "Montag", "this_week": "Diese Woche", - "last_week": "Letzte Woche" + "Thursday": "Donnerstag", + "Tuesday": "Dienstag", + "Wednesday": "Mittwoch" }, "el": { + "0000-01-06": "6 Ιαν", + "2021-03-01": "Μάρτιος 2021", + "2021-04-01": "Απρίλιος 2021", + "2022-08-01": "Αύγουστος 2022", + "2022-10-01": "Οκτώβριος 2022", + "2022-11-01": "Νοέμβριος 2022", + "2023-05-01": "Μάιος 2023", + "2023-06-01": "Ιούνιος 2023", + "2023-07-01": "Ιούλιος 2023", + "2024-12-01": "Δεκέμβριος 2024", + "2024-12-28": "28 Δεκ 2024", + "2025-01-01": "Ιανουάριος 2025", + "last_week": "Τελευταία εβδομάδα", + "Monday": "Δευτέρα", "this_week": "Αυτήν την εβδομάδα", - "last_week": "Τελευταία εβδομάδα" + "Thursday": "Πέμπτη", + "Tuesday": "Τρίτη", + "Wednesday": "Τετάρτη" }, "en": { + "0000-01-06": "Jan 6", + "2021-03-01": "March 2021", + "2021-04-01": "April 2021", + "2022-08-01": "August 2022", + "2022-10-01": "October 2022", + "2022-11-01": "November 2022", + "2023-05-01": "May 2023", + "2023-06-01": "June 2023", + "2023-07-01": "July 2023", + "2024-12-01": "December 2024", + "2024-12-28": "Dec 28, 2024", + "2025-01-01": "January 2025", + "last_week": "Last week", + "Monday": "Monday", "this_week": "This week", - "last_week": "Last week" + "Thursday": "Thursday", + "Tuesday": "Tuesday", + "Wednesday": "Wednesday" }, "en-GB": { + "0000-01-06": "6 Jan", + "2021-03-01": "March 2021", + "2021-04-01": "April 2021", + "2022-08-01": "August 2022", + "2022-10-01": "October 2022", + "2022-11-01": "November 2022", + "2023-05-01": "May 2023", + "2023-06-01": "June 2023", + "2023-07-01": "July 2023", + "2024-12-01": "December 2024", + "2024-12-28": "28 Dec 2024", + "2025-01-01": "January 2025", + "last_week": "Last week", + "Monday": "Monday", "this_week": "This week", - "last_week": "Last week" + "Thursday": "Thursday", + "Tuesday": "Tuesday", + "Wednesday": "Wednesday" }, "en-IN": { + "0000-01-06": "6 Jan", + "2021-03-01": "March 2021", + "2021-04-01": "April 2021", + "2022-08-01": "August 2022", + "2022-10-01": "October 2022", + "2022-11-01": "November 2022", + "2023-05-01": "May 2023", + "2023-06-01": "June 2023", + "2023-07-01": "July 2023", + "2024-12-01": "December 2024", + "2024-12-28": "28 Dec 2024", + "2025-01-01": "January 2025", + "last_week": "Last week", + "Monday": "Monday", "this_week": "This week", - "last_week": "Last week" + "Thursday": "Thursday", + "Tuesday": "Tuesday", + "Wednesday": "Wednesday" }, "es": { + "0000-01-06": "6 ene", + "2021-03-01": "Marzo de 2021", + "2021-04-01": "Abril de 2021", + "2022-08-01": "Agosto de 2022", + "2022-10-01": "Octubre de 2022", + "2022-11-01": "Noviembre de 2022", + "2023-05-01": "Mayo de 2023", + "2023-06-01": "Junio de 2023", + "2023-07-01": "Julio de 2023", + "2024-12-01": "Diciembre de 2024", + "2024-12-28": "28 dic 2024", + "2025-01-01": "Enero de 2025", + "last_week": "La semana pasada", + "Monday": "Lunes", "this_week": "Esta semana", - "last_week": "La semana pasada" + "Thursday": "Jueves", + "Tuesday": "Martes", + "Wednesday": "Miércoles" }, "es-419": { + "0000-01-06": "6 ene", + "2021-03-01": "Marzo de 2021", + "2021-04-01": "Abril de 2021", + "2022-08-01": "Agosto de 2022", + "2022-10-01": "Octubre de 2022", + "2022-11-01": "Noviembre de 2022", + "2023-05-01": "Mayo de 2023", + "2023-06-01": "Junio de 2023", + "2023-07-01": "Julio de 2023", + "2024-12-01": "Diciembre de 2024", + "2024-12-28": "28 dic 2024", + "2025-01-01": "Enero de 2025", + "last_week": "La semana pasada", + "Monday": "Lunes", "this_week": "Esta semana", - "last_week": "La semana pasada" + "Thursday": "Jueves", + "Tuesday": "Martes", + "Wednesday": "Miércoles" }, "es-US": { + "0000-01-06": "6 ene", + "2021-03-01": "Marzo de 2021", + "2021-04-01": "Abril de 2021", + "2022-08-01": "Agosto de 2022", + "2022-10-01": "Octubre de 2022", + "2022-11-01": "Noviembre de 2022", + "2023-05-01": "Mayo de 2023", + "2023-06-01": "Junio de 2023", + "2023-07-01": "Julio de 2023", + "2024-12-01": "Diciembre de 2024", + "2024-12-28": "28 dic 2024", + "2025-01-01": "Enero de 2025", + "last_week": "La semana pasada", + "Monday": "Lunes", "this_week": "Esta semana", - "last_week": "La semana pasada" + "Thursday": "Jueves", + "Tuesday": "Martes", + "Wednesday": "Miércoles" }, "et": { + "0000-01-06": "6. jaan", + "2021-03-01": "märts 2021", + "2021-04-01": "aprill 2021", + "2022-08-01": "august 2022", + "2022-10-01": "oktoober 2022", + "2022-11-01": "november 2022", + "2023-05-01": "mai 2023", + "2023-06-01": "juuni 2023", + "2023-07-01": "juuli 2023", + "2024-12-01": "detsember 2024", + "2024-12-28": "28. dets 2024", + "2025-01-01": "jaanuar 2025", + "last_week": "Eelmisel nädalal", + "Monday": "esmaspäev", "this_week": "Sellel nädalal", - "last_week": "Eelmisel nädalal" + "Thursday": "neljapäev", + "Tuesday": "teisipäev", + "Wednesday": "kolmapäev" }, "eu": { + "0000-01-06": "urt. 6(a)", + "2021-03-01": "2021(e)ko martxoa", + "2021-04-01": "2021(e)ko apirila", + "2022-08-01": "2022(e)ko abuztua", + "2022-10-01": "2022(e)ko urria", + "2022-11-01": "2022(e)ko azaroa", + "2023-05-01": "2023(e)ko maiatza", + "2023-06-01": "2023(e)ko ekaina", + "2023-07-01": "2023(e)ko uztaila", + "2024-12-01": "2024(e)ko abendua", + "2024-12-28": "2024(e)ko abe. 28(a)", + "2025-01-01": "2025(e)ko urtarrila", + "last_week": "Joan den astea", + "Monday": "astelehena", "this_week": "Aste hau", - "last_week": "Joan den astea" + "Thursday": "osteguna", + "Tuesday": "asteartea", + "Wednesday": "asteazkena" }, "fa": { + "0000-01-06": "6 ژانویه", + "2021-03-01": "مارس 2021", + "2021-04-01": "آوریل 2021", + "2022-08-01": "اوت 2022", + "2022-10-01": "اکتبر 2022", + "2022-11-01": "نوامبر 2022", + "2023-05-01": "مهٔ 2023", + "2023-06-01": "ژوئن 2023", + "2023-07-01": "ژوئیهٔ 2023", + "2024-12-01": "دسامبر 2024", + "2024-12-28": "28 دسامبر 2024", + "2025-01-01": "ژانویهٔ 2025", + "last_week": "هفته قبل", + "Monday": "دوشنبه", "this_week": "این هفته", - "last_week": "هفته قبل" + "Thursday": "پنجشنبه", + "Tuesday": "سه‌شنبه", + "Wednesday": "چهارشنبه" }, "fi": { + "0000-01-06": "6.1.", + "2021-03-01": "maaliskuu 2021", + "2021-04-01": "huhtikuu 2021", + "2022-08-01": "elokuu 2022", + "2022-10-01": "lokakuu 2022", + "2022-11-01": "marraskuu 2022", + "2023-05-01": "toukokuu 2023", + "2023-06-01": "kesäkuu 2023", + "2023-07-01": "heinäkuu 2023", + "2024-12-01": "joulukuu 2024", + "2024-12-28": "28.12.2024", + "2025-01-01": "tammikuu 2025", + "last_week": "Viime viikolla", + "Monday": "maanantai", "this_week": "Tällä viikolla", - "last_week": "Viime viikolla" + "Thursday": "torstai", + "Tuesday": "tiistai", + "Wednesday": "keskiviikko" }, "fil": { + "0000-01-06": "Ene 6", + "2021-03-01": "Marso 2021", + "2021-04-01": "Abril 2021", + "2022-08-01": "Agosto 2022", + "2022-10-01": "Oktubre 2022", + "2022-11-01": "Nobyembre 2022", + "2023-05-01": "Mayo 2023", + "2023-06-01": "Hunyo 2023", + "2023-07-01": "Hulyo 2023", + "2024-12-01": "Disyembre 2024", + "2024-12-28": "Dis 28, 2024", + "2025-01-01": "Enero 2025", + "last_week": "Nakaraang linggo", + "Monday": "Lunes", "this_week": "Ngayong linggo", - "last_week": "Nakaraang linggo" + "Thursday": "Huwebes", + "Tuesday": "Martes", + "Wednesday": "Miyerkules" }, "fr": { + "0000-01-06": "6 janv.", + "2021-03-01": "Mars 2021", + "2021-04-01": "Avril 2021", + "2022-08-01": "Août 2022", + "2022-10-01": "Octobre 2022", + "2022-11-01": "Novembre 2022", + "2023-05-01": "Mai 2023", + "2023-06-01": "Juin 2023", + "2023-07-01": "Juillet 2023", + "2024-12-01": "Décembre 2024", + "2024-12-28": "28 déc. 2024", + "2025-01-01": "Janvier 2025", + "last_week": "La semaine dernière", + "Monday": "Lundi", "this_week": "Cette semaine", - "last_week": "La semaine dernière" + "Thursday": "Jeudi", + "Tuesday": "Mardi", + "Wednesday": "Mercredi" }, "fr-CA": { + "0000-01-06": "6 janv.", + "2021-03-01": "Mars 2021", + "2021-04-01": "Avril 2021", + "2022-08-01": "Août 2022", + "2022-10-01": "Octobre 2022", + "2022-11-01": "Novembre 2022", + "2023-05-01": "Mai 2023", + "2023-06-01": "Juin 2023", + "2023-07-01": "Juillet 2023", + "2024-12-01": "Décembre 2024", + "2024-12-28": "28 déc. 2024", + "2025-01-01": "Janvier 2025", + "last_week": "La semaine dernière", + "Monday": "Lundi", "this_week": "Cette semaine", - "last_week": "La semaine dernière" + "Thursday": "Jeudi", + "Tuesday": "Mardi", + "Wednesday": "Mercredi" }, "gl": { + "0000-01-06": "6 de xan.", + "2021-03-01": "marzo de 2021", + "2021-04-01": "abril de 2021", + "2022-08-01": "agosto de 2022", + "2022-10-01": "outubro de 2022", + "2022-11-01": "novembro de 2022", + "2023-05-01": "maio de 2023", + "2023-06-01": "xuño de 2023", + "2023-07-01": "xullo de 2023", + "2024-12-01": "decembro de 2024", + "2024-12-28": "28 de dec. de 2024", + "2025-01-01": "xaneiro de 2025", + "last_week": "A semana pasada", + "Monday": "luns", "this_week": "Esta semana", - "last_week": "A semana pasada" + "Thursday": "xoves", + "Tuesday": "martes", + "Wednesday": "mércores" }, "gu": { + "0000-01-06": "6 જાન્યુ", + "2021-03-01": "માર્ચ 2021", + "2021-04-01": "એપ્રિલ 2021", + "2022-08-01": "ઑગસ્ટ 2022", + "2022-10-01": "ઑક્ટોબર 2022", + "2022-11-01": "નવેમ્બર 2022", + "2023-05-01": "મે 2023", + "2023-06-01": "જૂન 2023", + "2023-07-01": "જુલાઈ 2023", + "2024-12-01": "ડિસેમ્બર 2024", + "2024-12-28": "28 ડિસે, 2024", + "2025-01-01": "જાન્યુઆરી 2025", + "last_week": "છેલ્લું અઠવાડિયું", + "Monday": "સોમવાર", "this_week": "આ અઠવાડિયે", - "last_week": "છેલ્લું અઠવાડિયું" + "Thursday": "ગુરુવાર", + "Tuesday": "મંગળવાર", + "Wednesday": "બુધવાર" }, "hi": { + "0000-01-06": "6 जन॰", + "2021-03-01": "मार्च 2021", + "2021-04-01": "अप्रैल 2021", + "2022-08-01": "अगस्त 2022", + "2022-10-01": "अक्टूबर 2022", + "2022-11-01": "नवंबर 2022", + "2023-05-01": "मई 2023", + "2023-06-01": "जून 2023", + "2023-07-01": "जुलाई 2023", + "2024-12-01": "दिसंबर 2024", + "2024-12-28": "28 दिस॰ 2024", + "2025-01-01": "जनवरी 2025", + "last_week": "पिछले हफ़्ते", + "Monday": "सोमवार", "this_week": "इस हफ़्ते", - "last_week": "पिछले हफ़्ते" + "Thursday": "गुरुवार", + "Tuesday": "मंगलवार", + "Wednesday": "बुधवार" }, "hr": { + "0000-01-06": "6. sij", + "2021-03-01": "ožujak 2021.", + "2021-04-01": "travanj 2021.", + "2022-08-01": "kolovoz 2022.", + "2022-10-01": "listopad 2022.", + "2022-11-01": "studeni 2022.", + "2023-05-01": "svibanj 2023.", + "2023-06-01": "lipanj 2023.", + "2023-07-01": "srpanj 2023.", + "2024-12-01": "prosinac 2024.", + "2024-12-28": "28. pro 2024.", + "2025-01-01": "siječanj 2025.", + "last_week": "Prošli tjedan", + "Monday": "ponedjeljak", "this_week": "Ovaj tjedan", - "last_week": "Prošli tjedan" + "Thursday": "četvrtak", + "Tuesday": "utorak", + "Wednesday": "srijeda" }, "hu": { + "0000-01-06": "jan. 6.", + "2021-03-01": "2021. március", + "2021-04-01": "2021. április", + "2022-08-01": "2022. augusztus", + "2022-10-01": "2022. október", + "2022-11-01": "2022. november", + "2023-05-01": "2023. május", + "2023-06-01": "2023. június", + "2023-07-01": "2023. július", + "2024-12-01": "2024. december", + "2024-12-28": "2024. dec. 28.", + "2025-01-01": "2025. január", + "last_week": "Múlt héten", + "Monday": "hétfő", "this_week": "Ezen a héten", - "last_week": "Múlt héten" + "Thursday": "csütörtök", + "Tuesday": "kedd", + "Wednesday": "szerda" }, "hy": { + "0000-01-06": "6 հնվ", + "2021-03-01": "2021 թ․ մարտ", + "2021-04-01": "2021 թ․ ապրիլ", + "2022-08-01": "2022 թ․ օգոստոս", + "2022-10-01": "2022 թ․ հոկտեմբեր", + "2022-11-01": "2022 թ․ նոյեմբեր", + "2023-05-01": "2023 թ․ մայիս", + "2023-06-01": "2023 թ․ հունիս", + "2023-07-01": "2023 թ․ հուլիս", + "2024-12-01": "2024 թ․ դեկտեմբեր", + "2024-12-28": "28 դեկ, 2024 թ.", + "2025-01-01": "2025 թ․ հունվար", + "last_week": "Անցյալ շաբաթ", + "Monday": "երկուշաբթի", "this_week": "Այս շաբաթ", - "last_week": "Անցյալ շաբաթ" + "Thursday": "հինգշաբթի", + "Tuesday": "երեքշաբթի", + "Wednesday": "չորեքշաբթի" }, "id": { + "0000-01-06": "6 Jan", + "2021-03-01": "Maret 2021", + "2021-04-01": "April 2021", + "2022-08-01": "Agustus 2022", + "2022-10-01": "Oktober 2022", + "2022-11-01": "November 2022", + "2023-05-01": "Mei 2023", + "2023-06-01": "Juni 2023", + "2023-07-01": "Juli 2023", + "2024-12-01": "Desember 2024", + "2024-12-28": "28 Des 2024", + "2025-01-01": "Januari 2025", + "last_week": "Minggu lalu", + "Monday": "Senin", "this_week": "Minggu ini", - "last_week": "Minggu lalu" + "Thursday": "Kamis", + "Tuesday": "Selasa", + "Wednesday": "Rabu" }, "is": { + "0000-01-06": "6. jan.", + "2021-03-01": "mars 2021", + "2021-04-01": "apríl 2021", + "2022-08-01": "ágúst 2022", + "2022-10-01": "október 2022", + "2022-11-01": "nóvember 2022", + "2023-05-01": "maí 2023", + "2023-06-01": "júní 2023", + "2023-07-01": "júlí 2023", + "2024-12-01": "desember 2024", + "2024-12-28": "28. des. 2024", + "2025-01-01": "janúar 2025", + "last_week": "Í síðustu viku", + "Monday": "mánudagur", "this_week": "Í vikunni", - "last_week": "Í síðustu viku" + "Thursday": "fimmtudagur", + "Tuesday": "þriðjudagur", + "Wednesday": "miðvikudagur" }, "it": { + "0000-01-06": "6 gen", + "2021-03-01": "Marzo 2021", + "2021-04-01": "Aprile 2021", + "2022-08-01": "Agosto 2022", + "2022-10-01": "Ottobre 2022", + "2022-11-01": "Novembre 2022", + "2023-05-01": "Maggio 2023", + "2023-06-01": "Giugno 2023", + "2023-07-01": "Luglio 2023", + "2024-12-01": "Dicembre 2024", + "2024-12-28": "28 dic 2024", + "2025-01-01": "Gennaio 2025", + "last_week": "Ultima settimana", + "Monday": "Lunedì", "this_week": "Questa settimana", - "last_week": "Ultima settimana" + "Thursday": "Giovedì", + "Tuesday": "Martedì", + "Wednesday": "Mercoledì" }, "iw": { + "0000-01-06": "6 בינו׳", + "2021-03-01": "מרץ 2021", + "2021-04-01": "אפריל 2021", + "2022-08-01": "אוגוסט 2022", + "2022-10-01": "אוקטובר 2022", + "2022-11-01": "נובמבר 2022", + "2023-05-01": "מאי 2023", + "2023-06-01": "יוני 2023", + "2023-07-01": "יולי 2023", + "2024-12-01": "דצמבר 2024", + "2024-12-28": "28 בדצמ׳ 2024", + "2025-01-01": "ינואר 2025", + "last_week": "בשבוע שעבר", + "Monday": "יום שני", "this_week": "השבוע", - "last_week": "בשבוע שעבר" + "Thursday": "יום חמישי", + "Tuesday": "יום שלישי", + "Wednesday": "יום רביעי" }, "ja": { + "0000-01-06": "1月6日", + "2021-03-01": "2021年3月", + "2021-04-01": "2021年4月", + "2022-08-01": "2022年8月", + "2022-10-01": "2022年10月", + "2022-11-01": "2022年11月", + "2023-05-01": "2023年5月", + "2023-06-01": "2023年6月", + "2023-07-01": "2023年7月", + "2024-12-01": "2024年12月", + "2024-12-28": "2024/12/28", + "2025-01-01": "2025年1月", + "last_week": "先週", + "Monday": "月曜日", "this_week": "今週", - "last_week": "先週" + "Thursday": "木曜日", + "Tuesday": "火曜日", + "Wednesday": "水曜日" }, "ka": { + "0000-01-06": "6 იან", + "2021-03-01": "მარტი, 2021", + "2021-04-01": "აპრილი, 2021", + "2022-08-01": "აგვისტო, 2022", + "2022-10-01": "ოქტომბერი, 2022", + "2022-11-01": "ნოემბერი, 2022", + "2023-05-01": "მაისი, 2023", + "2023-06-01": "ივნისი, 2023", + "2023-07-01": "ივლისი, 2023", + "2024-12-01": "დეკემბერი, 2024", + "2024-12-28": "28 დეკ. 2024", + "2025-01-01": "იანვარი, 2025", + "last_week": "გასულ კვირაში", + "Monday": "ორშაბათი", "this_week": "ამ კვირაში", - "last_week": "გასულ კვირაში" + "Thursday": "ხუთშაბათი", + "Tuesday": "სამშაბათი", + "Wednesday": "ოთხშაბათი" }, "kk": { + "0000-01-06": "6 қаң.", + "2021-03-01": "2021 ж. наурыз", + "2021-04-01": "2021 ж. сәуір", + "2022-08-01": "2022 ж. тамыз", + "2022-10-01": "2022 ж. қазан", + "2022-11-01": "2022 ж. қараша", + "2023-05-01": "2023 ж. мамыр", + "2023-06-01": "2023 ж. маусым", + "2023-07-01": "2023 ж. шілде", + "2024-12-01": "2024 ж. желтоқсан", + "2024-12-28": "2024 ж. 28 жел.", + "2025-01-01": "2025 ж. қаңтар", + "last_week": "Өткен аптада", + "Monday": "дүйсенбі", "this_week": "Осы аптада", - "last_week": "Өткен аптада" + "Thursday": "бейсенбі", + "Tuesday": "сейсенбі", + "Wednesday": "сәрсенбі" }, "km": { + "0000-01-06": "6 មករា", + "2021-03-01": "មីនា 2021", + "2021-04-01": "មេសា 2021", + "2022-08-01": "សីហា 2022", + "2022-10-01": "តុលា 2022", + "2022-11-01": "វិច្ឆិកា 2022", + "2023-05-01": "ឧសភា 2023", + "2023-06-01": "មិថុនា 2023", + "2023-07-01": "កក្កដា 2023", + "2024-12-01": "ធ្នូ 2024", + "2024-12-28": "28 ធ្នូ 2024", + "2025-01-01": "មករា 2025", + "last_week": "សប្ដាហ៍​មុន", + "Monday": "ចន្ទ", "this_week": "សប្ដាហ៍​នេះ", - "last_week": "សប្ដាហ៍​មុន" + "Thursday": "ព្រហស្បតិ៍", + "Tuesday": "អង្គារ", + "Wednesday": "ពុធ" }, "kn": { + "0000-01-06": "6 ಜನ", + "2021-03-01": "ಮಾರ್ಚ್ 2021", + "2021-04-01": "ಏಪ್ರಿಲ್ 2021", + "2022-08-01": "ಆಗಸ್ಟ್ 2022", + "2022-10-01": "ಅಕ್ಟೋಬರ್ 2022", + "2022-11-01": "ನವೆಂಬರ್ 2022", + "2023-05-01": "ಮೇ 2023", + "2023-06-01": "ಜೂನ್ 2023", + "2023-07-01": "ಜುಲೈ 2023", + "2024-12-01": "ಡಿಸೆಂಬರ್ 2024", + "2024-12-28": "ಡಿಸೆಂ 28, 2024", + "2025-01-01": "ಜನವರಿ 2025", + "last_week": "ಕಳೆದ ವಾರ", + "Monday": "ಸೋಮವಾರ", "this_week": "ಈ ವಾರ", - "last_week": "ಕಳೆದ ವಾರ" + "Thursday": "ಗುರುವಾರ", + "Tuesday": "ಮಂಗಳವಾರ", + "Wednesday": "ಬುಧವಾರ" }, "ko": { + "0000-01-06": "1월 6일", + "2021-03-01": "2021년 3월", + "2021-04-01": "2021년 4월", + "2022-08-01": "2022년 8월", + "2022-10-01": "2022년 10월", + "2022-11-01": "2022년 11월", + "2023-05-01": "2023년 5월", + "2023-06-01": "2023년 6월", + "2023-07-01": "2023년 7월", + "2024-12-01": "2024년 12월", + "2024-12-28": "2024. 12. 28.", + "2025-01-01": "2025년 1월", + "last_week": "지난주", + "Monday": "월요일", "this_week": "이번 주", - "last_week": "지난주" + "Thursday": "목요일", + "Tuesday": "화요일", + "Wednesday": "수요일" }, "ky": { + "0000-01-06": "6-янв.", + "2021-03-01": "2021-ж., март", + "2021-04-01": "2021-ж., апрель", + "2022-08-01": "2022-ж., август", + "2022-10-01": "2022-ж., октябрь", + "2022-11-01": "2022-ж., ноябрь", + "2023-05-01": "2023-ж., май", + "2023-06-01": "2023-ж., июнь", + "2023-07-01": "2023-ж., июль", + "2024-12-01": "2024-ж., декабрь", + "2024-12-28": "2024-ж., 28-дек.", + "2025-01-01": "2025-ж., январь", + "last_week": "Өткөн аптадагы", + "Monday": "дүйшөмбү", "this_week": "Ушул аптадагы", - "last_week": "Өткөн аптадагы" + "Thursday": "бейшемби", + "Tuesday": "шейшемби", + "Wednesday": "шаршемби" }, "lo": { + "0000-01-06": "6 ມ.ກ.", + "2021-03-01": "ມີນາ 2021", + "2021-04-01": "ເມສາ 2021", + "2022-08-01": "ສິງຫາ 2022", + "2022-10-01": "ຕຸລາ 2022", + "2022-11-01": "ພະຈິກ 2022", + "2023-05-01": "ພຶດສະພາ 2023", + "2023-06-01": "ມິຖຸນາ 2023", + "2023-07-01": "ກໍລະກົດ 2023", + "2024-12-01": "ທັນວາ 2024", + "2024-12-28": "28 ທ.ວ. 2024", + "2025-01-01": "ມັງກອນ 2025", + "last_week": "ອາທິດຜ່ານ​ມາ", + "Monday": "ວັນຈັນ", "this_week": "ອາທິດນີ້", - "last_week": "ອາທິດຜ່ານ​ມາ" + "Thursday": "ວັນພະຫັດ", + "Tuesday": "ວັນອັງຄານ", + "Wednesday": "ວັນພຸດ" }, "lt": { + "0000-01-06": "01-06", + "2021-03-01": "2021 m. kovas", + "2021-04-01": "2021 m. balandis", + "2022-08-01": "2022 m. rugpjūtis", + "2022-10-01": "2022 m. spalis", + "2022-11-01": "2022 m. lapkritis", + "2023-05-01": "2023 m. gegužė", + "2023-06-01": "2023 m. birželis", + "2023-07-01": "2023 m. liepa", + "2024-12-01": "2024 m. gruodis", + "2024-12-28": "2024-12-28", + "2025-01-01": "2025 m. sausis", + "last_week": "Praėjusią savaitę", + "Monday": "pirmadienis", "this_week": "Šią savaitę", - "last_week": "Praėjusią savaitę" + "Thursday": "ketvirtadienis", + "Tuesday": "antradienis", + "Wednesday": "trečiadienis" }, "lv": { + "0000-01-06": "6. janv.", + "2021-03-01": "2021. g. marts", + "2021-04-01": "2021. g. aprīlis", + "2022-08-01": "2022. g. augusts", + "2022-10-01": "2022. g. oktobris", + "2022-11-01": "2022. g. novembris", + "2023-05-01": "2023. g. maijs", + "2023-06-01": "2023. g. jūnijs", + "2023-07-01": "2023. g. jūlijs", + "2024-12-01": "2024. g. decembris", + "2024-12-28": "2024. gada 28. dec.", + "2025-01-01": "2025. g. janvāris", + "last_week": "Iepriekšējā nedēļā", + "Monday": "Pirmdiena", "this_week": "Šajā nedēļā", - "last_week": "Iepriekšējā nedēļā" + "Thursday": "Ceturtdiena", + "Tuesday": "Otrdiena", + "Wednesday": "Trešdiena" }, "mk": { + "0000-01-06": "6 јан.", + "2021-03-01": "март 2021 г.", + "2021-04-01": "април 2021 г.", + "2022-08-01": "август 2022 г.", + "2022-10-01": "октомври 2022 г.", + "2022-11-01": "ноември 2022 г.", + "2023-05-01": "мај 2023 г.", + "2023-06-01": "јуни 2023 г.", + "2023-07-01": "јули 2023 г.", + "2024-12-01": "декември 2024 г.", + "2024-12-28": "28.12.2024 г.", + "2025-01-01": "јануари 2025 г.", + "last_week": "Минатата недела", + "Monday": "понеделник", "this_week": "Оваа седмица", - "last_week": "Минатата недела" + "Thursday": "четврток", + "Tuesday": "вторник", + "Wednesday": "среда" }, "ml": { + "0000-01-06": "ജനു 6", + "2021-03-01": "2021 മാർച്ച്", + "2021-04-01": "2021 ഏപ്രിൽ", + "2022-08-01": "2022 ഓഗസ്റ്റ്", + "2022-10-01": "2022 ഒക്‌ടോബർ", + "2022-11-01": "2022 നവംബർ", + "2023-05-01": "2023 മേയ്", + "2023-06-01": "2023 ജൂൺ", + "2023-07-01": "2023 ജൂലൈ", + "2024-12-01": "2024 ഡിസംബർ", + "2024-12-28": "2024, ഡിസം 28", + "2025-01-01": "2025 ജനുവരി", + "last_week": "കഴിഞ്ഞ ആഴ്ച", + "Monday": "തിങ്കളാഴ്‌ച", "this_week": "ഈ ആഴ്‌ച", - "last_week": "കഴിഞ്ഞ ആഴ്ച" + "Thursday": "വ്യാഴാഴ്‌ച", + "Tuesday": "ചൊവ്വാഴ്‌ച", + "Wednesday": "ബുധനാഴ്‌ച" }, "mn": { + "0000-01-06": "1-р сарын 6", + "2021-03-01": "2021 оны гуравдугаар сар", + "2021-04-01": "2021 оны дөрөвдүгээр сар", + "2022-08-01": "2022 оны наймдугаар сар", + "2022-10-01": "2022 оны аравдугаар сар", + "2022-11-01": "2022 оны арван нэгдүгээр сар", + "2023-05-01": "2023 оны тавдугаар сар", + "2023-06-01": "2023 оны зургаадугаар сар", + "2023-07-01": "2023 оны долоодугаар сар", + "2024-12-01": "2024 оны арван хоёрдугаар сар", + "2024-12-28": "2024 оны 12-р сарын 28", + "2025-01-01": "2025 оны нэгдүгээр сар", + "last_week": "Өнгөрсөн долоо хоног", + "Monday": "Даваа", "this_week": "Энэ долоо хоног", - "last_week": "Өнгөрсөн долоо хоног" + "Thursday": "Пүрэв", + "Tuesday": "Мягмар", + "Wednesday": "Лхагва" }, "mr": { + "0000-01-06": "6 जाने", + "2021-03-01": "मार्च 2021", + "2021-04-01": "एप्रिल 2021", + "2022-08-01": "ऑगस्ट 2022", + "2022-10-01": "ऑक्टोबर 2022", + "2022-11-01": "नोव्हेंबर 2022", + "2023-05-01": "मे 2023", + "2023-06-01": "जून 2023", + "2023-07-01": "जुलै 2023", + "2024-12-01": "डिसेंबर 2024", + "2024-12-28": "28 डिसें, 2024", + "2025-01-01": "जानेवारी 2025", + "last_week": "मागील आठवड्यात", + "Monday": "सोमवार", "this_week": "या आठवड्यात", - "last_week": "मागील आठवड्यात" + "Thursday": "गुरुवार", + "Tuesday": "मंगळवार", + "Wednesday": "बुधवार" }, "ms": { + "0000-01-06": "6 Jan", + "2021-03-01": "Mac 2021", + "2021-04-01": "April 2021", + "2022-08-01": "Ogos 2022", + "2022-10-01": "Oktober 2022", + "2022-11-01": "November 2022", + "2023-05-01": "Mei 2023", + "2023-06-01": "Jun 2023", + "2023-07-01": "Julai 2023", + "2024-12-01": "Disember 2024", + "2024-12-28": "28 Dis 2024", + "2025-01-01": "Januari 2025", + "last_week": "Minggu lepas", + "Monday": "Isnin", "this_week": "Minggu ini", - "last_week": "Minggu lepas" + "Thursday": "Khamis", + "Tuesday": "Selasa", + "Wednesday": "Rabu" }, "my": { + "0000-01-06": "ဇန် 6", + "2021-03-01": "2021 မတ်", + "2021-04-01": "2021 ဧပြီ", + "2022-08-01": "2022 ဩဂုတ်", + "2022-10-01": "2022 အောက်တိုဘာ", + "2022-11-01": "2022 နိုဝင်ဘာ", + "2023-05-01": "2023 မေ", + "2023-06-01": "2023 ဇွန်", + "2023-07-01": "2023 ဇူလိုင်", + "2024-12-01": "2024 ဒီဇင်ဘာ", + "2024-12-28": "2024 ဒီ 28", + "2025-01-01": "2025 ဇန်နဝါရီ", + "last_week": "ယခင်အပတ်", + "Monday": "တနင်္လာ", "this_week": "ယခုအပတ်", - "last_week": "ယခင်အပတ်" + "Thursday": "ကြာသပတေး", + "Tuesday": "အင်္ဂါ", + "Wednesday": "ဗုဒ္ဓဟူး" }, "ne": { + "0000-01-06": "जनवरी 6", + "2021-03-01": "2021 मार्च", + "2021-04-01": "2021 अप्रिल", + "2022-08-01": "2022 अगस्ट", + "2022-10-01": "2022 अक्टोबर", + "2022-11-01": "2022 नोभेम्बर", + "2023-05-01": "2023 मे", + "2023-06-01": "2023 जुन", + "2023-07-01": "2023 जुलाई", + "2024-12-01": "2024 डिसेम्बर", + "2024-12-28": "2024 डिसेम्बर 28", + "2025-01-01": "2025 जनवरी", + "last_week": "पछिल्लो हप्ता", + "Monday": "सोमबार", "this_week": "यस हप्ता", - "last_week": "पछिल्लो हप्ता" + "Thursday": "बिहिबार", + "Tuesday": "मङ्गलबार", + "Wednesday": "बुधबार" }, "nl": { + "0000-01-06": "6 jan", + "2021-03-01": "Maart 2021", + "2021-04-01": "April 2021", + "2022-08-01": "Augustus 2022", + "2022-10-01": "Oktober 2022", + "2022-11-01": "November 2022", + "2023-05-01": "Mei 2023", + "2023-06-01": "Juni 2023", + "2023-07-01": "Juli 2023", + "2024-12-01": "December 2024", + "2024-12-28": "28 dec 2024", + "2025-01-01": "Januari 2025", + "last_week": "Afgelopen week", + "Monday": "Maandag", "this_week": "Deze week", - "last_week": "Afgelopen week" + "Thursday": "Donderdag", + "Tuesday": "Dinsdag", + "Wednesday": "Woensdag" }, "no": { + "0000-01-06": "6. jan.", + "2021-03-01": "mars 2021", + "2021-04-01": "april 2021", + "2022-08-01": "august 2022", + "2022-10-01": "oktober 2022", + "2022-11-01": "november 2022", + "2023-05-01": "mai 2023", + "2023-06-01": "juni 2023", + "2023-07-01": "juli 2023", + "2024-12-01": "desember 2024", + "2024-12-28": "28. des. 2024", + "2025-01-01": "januar 2025", + "last_week": "Forrige uke", + "Monday": "mandag", "this_week": "Denne uken", - "last_week": "Forrige uke" + "Thursday": "torsdag", + "Tuesday": "tirsdag", + "Wednesday": "onsdag" }, "or": { + "0000-01-06": "ଜାନୁଆରୀ 6", + "2021-03-01": "ମାର୍ଚ୍ଚ 2021", + "2021-04-01": "ଅପ୍ରେଲ 2021", + "2022-08-01": "ଅଗଷ୍ଟ 2022", + "2022-10-01": "ଅକ୍ଟୋବର 2022", + "2022-11-01": "ନଭେମ୍ବର 2022", + "2023-05-01": "ମଇ 2023", + "2023-06-01": "ଜୁନ 2023", + "2023-07-01": "ଜୁଲାଇ 2023", + "2024-12-01": "ଡିସେମ୍ବର 2024", + "2024-12-28": "ଡିସେମ୍ବର 28, 2024", + "2025-01-01": "ଜାନୁଆରୀ 2025", + "last_week": "ଗତ ସପ୍ତାହ", + "Monday": "ସୋମବାର", "this_week": "ଏହି ସପ୍ତାହ", - "last_week": "ଗତ ସପ୍ତାହ" + "Thursday": "ଗୁରୁବାର", + "Tuesday": "ମଙ୍ଗଳବାର", + "Wednesday": "ବୁଧବାର" }, "pa": { + "0000-01-06": "6 ਜਨ", + "2021-03-01": "ਮਾਰਚ 2021", + "2021-04-01": "ਅਪ੍ਰੈਲ 2021", + "2022-08-01": "ਅਗਸਤ 2022", + "2022-10-01": "ਅਕਤੂਬਰ 2022", + "2022-11-01": "ਨਵੰਬਰ 2022", + "2023-05-01": "ਮਈ 2023", + "2023-06-01": "ਜੂਨ 2023", + "2023-07-01": "ਜੁਲਾਈ 2023", + "2024-12-01": "ਦਸੰਬਰ 2024", + "2024-12-28": "28 ਦਸੰ 2024", + "2025-01-01": "ਜਨਵਰੀ 2025", + "last_week": "ਪਿਛਲੇ ਹਫ਼ਤੇ", + "Monday": "ਸੋਮਵਾਰ", "this_week": "ਇਸ ਹਫ਼ਤੇ", - "last_week": "ਪਿਛਲੇ ਹਫ਼ਤੇ" + "Thursday": "ਵੀਰਵਾਰ", + "Tuesday": "ਮੰਗਲਵਾਰ", + "Wednesday": "ਬੁੱਧਵਾਰ" }, "pl": { + "0000-01-06": "6 sty", + "2021-03-01": "Marzec 2021", + "2021-04-01": "Kwiecień 2021", + "2022-08-01": "Sierpień 2022", + "2022-10-01": "Październik 2022", + "2022-11-01": "Listopad 2022", + "2023-05-01": "Maj 2023", + "2023-06-01": "Czerwiec 2023", + "2023-07-01": "Lipiec 2023", + "2024-12-01": "Grudzień 2024", + "2024-12-28": "28 gru 2024", + "2025-01-01": "Styczeń 2025", + "last_week": "W zeszłym tygodniu", + "Monday": "Poniedziałek", "this_week": "W tym tygodniu", - "last_week": "W zeszłym tygodniu" + "Thursday": "Czwartek", + "Tuesday": "Wtorek", + "Wednesday": "Środa" }, "pt": { + "0000-01-06": "6 de jan.", + "2021-03-01": "março de 2021", + "2021-04-01": "abril de 2021", + "2022-08-01": "agosto de 2022", + "2022-10-01": "outubro de 2022", + "2022-11-01": "novembro de 2022", + "2023-05-01": "maio de 2023", + "2023-06-01": "junho de 2023", + "2023-07-01": "julho de 2023", + "2024-12-01": "dezembro de 2024", + "2024-12-28": "28 de dez. de 2024", + "2025-01-01": "janeiro de 2025", + "last_week": "Semana passada", + "Monday": "Segunda-feira", "this_week": "Esta semana", - "last_week": "Semana passada" + "Thursday": "Quinta-feira", + "Tuesday": "Terça-feira", + "Wednesday": "Quarta-feira" }, "pt-PT": { + "0000-01-06": "6/01", + "2021-03-01": "março de 2021", + "2021-04-01": "abril de 2021", + "2022-08-01": "agosto de 2022", + "2022-10-01": "outubro de 2022", + "2022-11-01": "novembro de 2022", + "2023-05-01": "maio de 2023", + "2023-06-01": "junho de 2023", + "2023-07-01": "julho de 2023", + "2024-12-01": "dezembro de 2024", + "2024-12-28": "28/12/2024", + "2025-01-01": "janeiro de 2025", + "last_week": "A semana passada", + "Monday": "segunda-feira", "this_week": "Esta semana", - "last_week": "A semana passada" + "Thursday": "quinta-feira", + "Tuesday": "terça-feira", + "Wednesday": "quarta-feira" }, "ro": { + "0000-01-06": "6 ian.", + "2021-03-01": "martie 2021", + "2021-04-01": "aprilie 2021", + "2022-08-01": "august 2022", + "2022-10-01": "octombrie 2022", + "2022-11-01": "noiembrie 2022", + "2023-05-01": "mai 2023", + "2023-06-01": "iunie 2023", + "2023-07-01": "iulie 2023", + "2024-12-01": "decembrie 2024", + "2024-12-28": "28 dec. 2024", + "2025-01-01": "ianuarie 2025", + "last_week": "Săptămâna trecută", + "Monday": "luni", "this_week": "Săptămâna aceasta", - "last_week": "Săptămâna trecută" + "Thursday": "joi", + "Tuesday": "marți", + "Wednesday": "miercuri" }, "ru": { + "0000-01-06": "6 янв.", + "2021-03-01": "Март 2021 г.", + "2021-04-01": "Апрель 2021 г.", + "2022-08-01": "Август 2022 г.", + "2022-10-01": "Октябрь 2022 г.", + "2022-11-01": "Ноябрь 2022 г.", + "2023-05-01": "Май 2023 г.", + "2023-06-01": "Июнь 2023 г.", + "2023-07-01": "Июль 2023 г.", + "2024-12-01": "Декабрь 2024 г.", + "2024-12-28": "28 дек. 2024 г.", + "2025-01-01": "Январь 2025 г.", + "last_week": "На прошлой неделе", + "Monday": "Понедельник", "this_week": "На этой неделе", - "last_week": "На прошлой неделе" + "Thursday": "Четверг", + "Tuesday": "Вторник", + "Wednesday": "Среда" }, "si": { + "0000-01-06": "ජන 6", + "2021-03-01": "2021 මාර්තු", + "2021-04-01": "2021 අප්‍රේල්", + "2022-08-01": "2022 අගෝස්තු", + "2022-10-01": "2022 ඔක්තෝබර්", + "2022-11-01": "2022 නොවැම්බර්", + "2023-05-01": "2023 මැයි", + "2023-06-01": "2023 ජූනි", + "2023-07-01": "2023 ජූලි", + "2024-12-01": "2024 දෙසැම්බර්", + "2024-12-28": "2024 දෙසැ 28", + "2025-01-01": "2025 ජනවාරි", + "last_week": "පසුගිය සතිය", + "Monday": "සඳුදා", "this_week": "මෙම සතිය", - "last_week": "පසුගිය සතිය" + "Thursday": "බ්‍රහස්පතින්දා", + "Tuesday": "අඟහරුවාදා", + "Wednesday": "බදාදා" }, "sk": { + "0000-01-06": "6. 1.", + "2021-03-01": "marec 2021", + "2021-04-01": "apríl 2021", + "2022-08-01": "august 2022", + "2022-10-01": "október 2022", + "2022-11-01": "november 2022", + "2023-05-01": "máj 2023", + "2023-06-01": "jún 2023", + "2023-07-01": "júl 2023", + "2024-12-01": "december 2024", + "2024-12-28": "28. 12. 2024", + "2025-01-01": "január 2025", + "last_week": "Minulý týždeň", + "Monday": "pondelok", "this_week": "Tento týždeň", - "last_week": "Minulý týždeň" + "Thursday": "štvrtok", + "Tuesday": "utorok", + "Wednesday": "streda" }, "sl": { + "0000-01-06": "6. jan.", + "2021-03-01": "marec 2021", + "2021-04-01": "april 2021", + "2022-08-01": "avgust 2022", + "2022-10-01": "oktober 2022", + "2022-11-01": "november 2022", + "2023-05-01": "maj 2023", + "2023-06-01": "junij 2023", + "2023-07-01": "julij 2023", + "2024-12-01": "december 2024", + "2024-12-28": "28. dec. 2024", + "2025-01-01": "januar 2025", + "last_week": "Prejšnji teden", + "Monday": "ponedeljek", "this_week": "Ta teden", - "last_week": "Prejšnji teden" + "Thursday": "četrtek", + "Tuesday": "torek", + "Wednesday": "sreda" }, "sq": { + "0000-01-06": "6 jan", + "2021-03-01": "mars 2021", + "2021-04-01": "prill 2021", + "2022-08-01": "gusht 2022", + "2022-10-01": "tetor 2022", + "2022-11-01": "nëntor 2022", + "2023-05-01": "maj 2023", + "2023-06-01": "qershor 2023", + "2023-07-01": "korrik 2023", + "2024-12-01": "dhjetor 2024", + "2024-12-28": "28 dhj 2024", + "2025-01-01": "janar 2025", + "last_week": "Javën e kaluar", + "Monday": "e hënë", "this_week": "Këtë javë", - "last_week": "Javën e kaluar" + "Thursday": "e enjte", + "Tuesday": "e martë", + "Wednesday": "e mërkurë" }, "sr": { + "0000-01-06": "6. јан", + "2021-03-01": "март 2021.", + "2021-04-01": "април 2021.", + "2022-08-01": "август 2022.", + "2022-10-01": "октобар 2022.", + "2022-11-01": "новембар 2022.", + "2023-05-01": "мај 2023.", + "2023-06-01": "јун 2023.", + "2023-07-01": "јул 2023.", + "2024-12-01": "децембар 2024.", + "2024-12-28": "28. 12. 2024.", + "2025-01-01": "јануар 2025.", + "last_week": "Прошле недеље", + "Monday": "понедељак", "this_week": "Ове недеље", - "last_week": "Прошле недеље" + "Thursday": "четвртак", + "Tuesday": "уторак", + "Wednesday": "среда" }, "sr-Latn": { + "0000-01-06": "6. jan", + "2021-03-01": "mart 2021.", + "2021-04-01": "april 2021.", + "2022-08-01": "avgust 2022.", + "2022-10-01": "oktobar 2022.", + "2022-11-01": "novembar 2022.", + "2023-05-01": "maj 2023.", + "2023-06-01": "jun 2023.", + "2023-07-01": "jul 2023.", + "2024-12-01": "decembar 2024.", + "2024-12-28": "28. 12. 2024.", + "2025-01-01": "januar 2025.", + "last_week": "Prošle nedelje", + "Monday": "ponedeljak", "this_week": "Ove nedelje", - "last_week": "Prošle nedelje" + "Thursday": "četvrtak", + "Tuesday": "utorak", + "Wednesday": "sreda" }, "sv": { + "0000-01-06": "6 jan.", + "2021-03-01": "mars 2021", + "2021-04-01": "april 2021", + "2022-08-01": "augusti 2022", + "2022-10-01": "oktober 2022", + "2022-11-01": "november 2022", + "2023-05-01": "maj 2023", + "2023-06-01": "juni 2023", + "2023-07-01": "juli 2023", + "2024-12-01": "december 2024", + "2024-12-28": "28 dec. 2024", + "2025-01-01": "januari 2025", + "last_week": "Förra veckan", + "Monday": "måndag", "this_week": "Den här veckan", - "last_week": "Förra veckan" + "Thursday": "torsdag", + "Tuesday": "tisdag", + "Wednesday": "onsdag" }, "sw": { + "0000-01-06": "6 Jan", + "2021-03-01": "Machi 2021", + "2021-04-01": "Aprili 2021", + "2022-08-01": "Agosti 2022", + "2022-10-01": "Oktoba 2022", + "2022-11-01": "Novemba 2022", + "2023-05-01": "Mei 2023", + "2023-06-01": "Juni 2023", + "2023-07-01": "Julai 2023", + "2024-12-01": "Desemba 2024", + "2024-12-28": "28 Des 2024", + "2025-01-01": "Januari 2025", + "last_week": "Wiki iliyopita", + "Monday": "Jumatatu", "this_week": "Wiki hii", - "last_week": "Wiki iliyopita" + "Thursday": "Alhamisi", + "Tuesday": "Jumanne", + "Wednesday": "Jumatano" }, "ta": { + "0000-01-06": "6 ஜன.", + "2021-03-01": "மார்ச் 2021", + "2021-04-01": "ஏப்ரல் 2021", + "2022-08-01": "ஆகஸ்ட் 2022", + "2022-10-01": "அக்டோபர் 2022", + "2022-11-01": "நவம்பர் 2022", + "2023-05-01": "மே 2023", + "2023-06-01": "ஜூன் 2023", + "2023-07-01": "ஜூலை 2023", + "2024-12-01": "டிசம்பர் 2024", + "2024-12-28": "28 டிச., 2024", + "2025-01-01": "ஜனவரி 2025", + "last_week": "கடந்த வாரம்", + "Monday": "திங்கள்", "this_week": "இந்த வாரம்", - "last_week": "கடந்த வாரம்" + "Thursday": "வியாழன்", + "Tuesday": "செவ்வாய்", + "Wednesday": "புதன்" }, "te": { + "0000-01-06": "6 జన", + "2021-03-01": "మార్చి 2021", + "2021-04-01": "ఏప్రిల్ 2021", + "2022-08-01": "ఆగస్టు 2022", + "2022-10-01": "అక్టోబర్ 2022", + "2022-11-01": "నవంబర్ 2022", + "2023-05-01": "మే 2023", + "2023-06-01": "జూన్ 2023", + "2023-07-01": "జులై 2023", + "2024-12-01": "డిసెంబర్ 2024", + "2024-12-28": "28 డిసెం, 2024", + "2025-01-01": "జనవరి 2025", + "last_week": "గత వారం", + "Monday": "సోమవారం", "this_week": "ఈ వారం", - "last_week": "గత వారం" + "Thursday": "గురువారం", + "Tuesday": "మంగళవారం", + "Wednesday": "బుధవారం" }, "th": { + "0000-01-06": "6 ม.ค.", + "2021-03-01": "มีนาคม 2021", + "2021-04-01": "เมษายน 2021", + "2022-08-01": "สิงหาคม 2022", + "2022-10-01": "ตุลาคม 2022", + "2022-11-01": "พฤศจิกายน 2022", + "2023-05-01": "พฤษภาคม 2023", + "2023-06-01": "มิถุนายน 2023", + "2023-07-01": "กรกฎาคม 2023", + "2024-12-01": "ธันวาคม 2024", + "2024-12-28": "28 ธ.ค. 2024", + "2025-01-01": "มกราคม 2025", + "last_week": "สัปดาห์ที่แล้ว", + "Monday": "วันจันทร์", "this_week": "สัปดาห์นี้", - "last_week": "สัปดาห์ที่แล้ว" + "Thursday": "วันพฤหัสบดี", + "Tuesday": "วันอังคาร", + "Wednesday": "วันพุธ" }, "tr": { + "0000-01-06": "6 Oca", + "2021-03-01": "Mart 2021", + "2021-04-01": "Nisan 2021", + "2022-08-01": "Ağustos 2022", + "2022-10-01": "Ekim 2022", + "2022-11-01": "Kasım 2022", + "2023-05-01": "Mayıs 2023", + "2023-06-01": "Haziran 2023", + "2023-07-01": "Temmuz 2023", + "2024-12-01": "Aralık 2024", + "2024-12-28": "28 Ara 2024", + "2025-01-01": "Ocak 2025", + "last_week": "Geçen hafta", + "Monday": "Pazartesi", "this_week": "Bu hafta", - "last_week": "Geçen hafta" + "Thursday": "Perşembe", + "Tuesday": "Salı", + "Wednesday": "Çarşamba" }, "uk": { + "0000-01-06": "6 січ.", + "2021-03-01": "Березень 2021 р.", + "2021-04-01": "Квітень 2021 р.", + "2022-08-01": "Серпень 2022 р.", + "2022-10-01": "Жовтень 2022 р.", + "2022-11-01": "Листопад 2022 р.", + "2023-05-01": "Травень 2023 р.", + "2023-06-01": "Червень 2023 р.", + "2023-07-01": "Липень 2023 р.", + "2024-12-01": "Грудень 2024 р.", + "2024-12-28": "28 груд. 2024 р.", + "2025-01-01": "Січень 2025 р.", + "last_week": "Минулого тижня", + "Monday": "Понеділок", "this_week": "Цього тижня", - "last_week": "Минулого тижня" + "Thursday": "Четвер", + "Tuesday": "Вівторок", + "Wednesday": "Середа" }, "ur": { + "0000-01-06": "6 جنوری", + "2021-03-01": "مارچ 2021", + "2021-04-01": "اپریل 2021", + "2022-08-01": "اگست 2022", + "2022-10-01": "اکتوبر 2022", + "2022-11-01": "نومبر 2022", + "2023-05-01": "مئی 2023", + "2023-06-01": "جون 2023", + "2023-07-01": "جولائی 2023", + "2024-12-01": "دسمبر 2024", + "2024-12-28": "28 دسمبر، 2024", + "2025-01-01": "جنوری 2025", + "last_week": "گزشتہ ہفتہ", + "Monday": "پیر", "this_week": "اس ہفتے", - "last_week": "گزشتہ ہفتہ" + "Thursday": "جمعرات", + "Tuesday": "منگل", + "Wednesday": "بدھ" }, "uz": { + "0000-01-06": "6-yan", + "2021-03-01": "mart, 2021", + "2021-04-01": "aprel, 2021", + "2022-08-01": "avgust, 2022", + "2022-10-01": "oktabr, 2022", + "2022-11-01": "noyabr, 2022", + "2023-05-01": "may, 2023", + "2023-06-01": "iyun, 2023", + "2023-07-01": "iyul, 2023", + "2024-12-01": "dekabr, 2024", + "2024-12-28": "28-dek, 2024", + "2025-01-01": "yanvar, 2025", + "last_week": "O‘tgan hafta", + "Monday": "dushanba", "this_week": "Shu haftada", - "last_week": "O‘tgan hafta" + "Thursday": "payshanba", + "Tuesday": "seshanba", + "Wednesday": "chorshanba" }, "vi": { + "0000-01-06": "6 thg 1", + "2021-03-01": "tháng 3 năm 2021", + "2021-04-01": "tháng 4 năm 2021", + "2022-08-01": "tháng 8 năm 2022", + "2022-10-01": "tháng 10 năm 2022", + "2022-11-01": "tháng 11 năm 2022", + "2023-05-01": "tháng 5 năm 2023", + "2023-06-01": "tháng 6 năm 2023", + "2023-07-01": "tháng 7 năm 2023", + "2024-12-01": "tháng 12 năm 2024", + "2024-12-28": "28 thg 12, 2024", + "2025-01-01": "tháng 1 năm 2025", + "last_week": "Tuần trước", + "Monday": "Thứ Hai", "this_week": "Tuần này", - "last_week": "Tuần trước" + "Thursday": "Thứ Năm", + "Tuesday": "Thứ Ba", + "Wednesday": "Thứ Tư" }, "zh-CN": { + "0000-01-06": "1月6日", + "2021-03-01": "2021年3月", + "2021-04-01": "2021年4月", + "2022-08-01": "2022年8月", + "2022-10-01": "2022年10月", + "2022-11-01": "2022年11月", + "2023-05-01": "2023年5月", + "2023-06-01": "2023年6月", + "2023-07-01": "2023年7月", + "2024-12-01": "2024年12月", + "2024-12-28": "2024年12月28日", + "2025-01-01": "2025年1月", + "last_week": "上周", + "Monday": "星期一", "this_week": "本周", - "last_week": "上周" + "Thursday": "星期四", + "Tuesday": "星期二", + "Wednesday": "星期三" }, "zh-HK": { + "0000-01-06": "1月6日", + "2021-03-01": "2021年3月", + "2021-04-01": "2021年4月", + "2022-08-01": "2022年8月", + "2022-10-01": "2022年10月", + "2022-11-01": "2022年11月", + "2023-05-01": "2023年5月", + "2023-06-01": "2023年6月", + "2023-07-01": "2023年7月", + "2024-12-01": "2024年12月", + "2024-12-28": "2024年12月28日", + "2025-01-01": "2025年1月", + "last_week": "上星期", + "Monday": "星期一", "this_week": "本星期", - "last_week": "上星期" + "Thursday": "星期四", + "Tuesday": "星期二", + "Wednesday": "星期三" }, "zh-TW": { + "0000-01-06": "1月6日", + "2021-03-01": "2021年3月", + "2021-04-01": "2021年4月", + "2022-08-01": "2022年8月", + "2022-10-01": "2022年10月", + "2022-11-01": "2022年11月", + "2023-05-01": "2023年5月", + "2023-06-01": "2023年6月", + "2023-07-01": "2023年7月", + "2024-12-01": "2024年12月", + "2024-12-28": "2024年12月28日", + "2025-01-01": "2025年1月", + "last_week": "上週", + "Monday": "星期一", "this_week": "本週", - "last_week": "上週" + "Thursday": "星期四", + "Tuesday": "星期二", + "Wednesday": "星期三" }, "zu": { + "0000-01-06": "Jan 6", + "2021-03-01": "Mashi 2021", + "2021-04-01": "Ephreli 2021", + "2022-08-01": "Agasti 2022", + "2022-10-01": "Okthoba 2022", + "2022-11-01": "Novemba 2022", + "2023-05-01": "Meyi 2023", + "2023-06-01": "Juni 2023", + "2023-07-01": "Julayi 2023", + "2024-12-01": "Disemba 2024", + "2024-12-28": "Dis 28, 2024", + "2025-01-01": "Januwari 2025", + "last_week": "Iviki eledlule", + "Monday": "UMsombuluko", "this_week": "Leli viki", - "last_week": "Iviki eledlule" + "Thursday": "ULwesine", + "Tuesday": "ULwesibili", + "Wednesday": "ULwesithathu" } } From 9c73ed4b3008cb093c0fa7fd94fd9f1ba8cd3627 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 18 Jan 2025 06:59:43 +0100 Subject: [PATCH 100/191] fix: parsing mixed-case language codes like zh-CN --- cli/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index 12e23fa..8c9a41e 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -898,7 +898,7 @@ async fn run() -> anyhow::Result<()> { .reporter(Box::new(FileReporter::new("rustypipe_reports"))); } if let Some(lang) = cli.lang { - rp = rp.lang(Language::from_str(&lang.to_ascii_lowercase()).expect("invalid language")); + rp = rp.lang(Language::from_str(&lang).expect("invalid language")); } if let Some(country) = cli.country { rp = rp.country(Country::from_str(&country.to_ascii_uppercase()).expect("invalid country")); From 2b891ca0788f91f16dbb9203191cb3d2092ecc74 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 22 Jan 2025 00:54:37 +0100 Subject: [PATCH 101/191] fix: a/v streams incorrectly recognized as video-only --- src/client/player.rs | 6 ++- src/client/response/player.rs | 4 +- ...layer__tests__map_player_data_android.snap | 40 +++++++++---------- src/util/protobuf.rs | 14 +++++++ tests/youtube.rs | 3 -- 5 files changed, 40 insertions(+), 27 deletions(-) diff --git a/src/client/player.rs b/src/client/player.rs index c41404f..2b39339 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -680,7 +680,11 @@ impl StreamsMapper { itag: f.itag, bitrate: f.bitrate, average_bitrate: f.average_bitrate.unwrap_or(f.bitrate), - size: f.content_length.unwrap(), + size: f.content_length.ok_or_else(|| { + ExtractionError::InvalidData( + format!("no audio content length. itag: {}", f.itag).into(), + ) + })?, index_range: f.index_range, init_range: f.init_range, duration_ms: f.approx_duration_ms, diff --git a/src/client/response/player.rs b/src/client/response/player.rs index d9ecc42..4fbcb28 100644 --- a/src/client/response/player.rs +++ b/src/client/response/player.rs @@ -150,9 +150,7 @@ pub(crate) struct Format { impl Format { pub fn is_audio(&self) -> bool { - self.content_length.is_some() - && self.audio_quality.is_some() - && self.audio_sample_rate.is_some() + self.audio_quality.is_some() && self.audio_sample_rate.is_some() } pub fn is_video(&self) -> bool { diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_android.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_android.snap index b2f3461..047d489 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_android.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_android.snap @@ -100,6 +100,26 @@ VideoPlayer( drm_track_type: None, drm_systems: [], ), + VideoStream( + url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&dur=163.096&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=22&lmt=1580005750956837&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&pl=37&ratebypass=yes&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgFlQZgR63Yz9UgY9gVqiyGDVkZmSmACRP3-MmKN7CRzQCIAMHAwZbHmWL1qNH4Nu3A0pXZwErXMVPzMIt-PyxeZqa&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cratebypass%2Cdur%2Clmt&txp=2211222&vprv=1", + itag: 22, + bitrate: 1574434, + average_bitrate: 1574434, + size: None, + index_range: None, + init_range: None, + duration_ms: Some(163096), + width: 1280, + height: 720, + fps: 30, + quality: "720p", + hdr: false, + mime: "video/mp4; codecs=\"avc1.64001F, mp4a.40.2\"", + format: mp4, + codec: avc1, + drm_track_type: None, + drm_systems: [], + ), ], video_only_streams: [ VideoStream( @@ -232,26 +252,6 @@ VideoPlayer( drm_track_type: None, drm_systems: [], ), - VideoStream( - url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&dur=163.096&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=22&lmt=1580005750956837&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&pl=37&ratebypass=yes&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgFlQZgR63Yz9UgY9gVqiyGDVkZmSmACRP3-MmKN7CRzQCIAMHAwZbHmWL1qNH4Nu3A0pXZwErXMVPzMIt-PyxeZqa&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cratebypass%2Cdur%2Clmt&txp=2211222&vprv=1", - itag: 22, - bitrate: 1574434, - average_bitrate: 1574434, - size: None, - index_range: None, - init_range: None, - duration_ms: Some(163096), - width: 1280, - height: 720, - fps: 30, - quality: "720p", - hdr: false, - mime: "video/mp4; codecs=\"avc1.64001F, mp4a.40.2\"", - format: mp4, - codec: avc1, - drm_track_type: None, - drm_systems: [], - ), VideoStream( url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=22365208&dur=163.046&ei=q1jpYtOPEYSBgQeHmqbwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=4&gir=yes&id=o-AEDMTCojVtwpIKOdhBaxEHE5s322qnAJHGqa2r1F46BM&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=398&keepalive=yes&lmt=1608048380553749&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fmp4&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&otfp=1&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgR6KqCOoig_FMl2tWKa7qHSmCjIZa9S7ABzEI16qdO2sCIFXccwql4bqV9CHlqXY4tgxyMFUsp7vW4XUjxs3AyG6H&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", itag: 398, diff --git a/src/util/protobuf.rs b/src/util/protobuf.rs index b441b85..84492f6 100644 --- a/src/util/protobuf.rs +++ b/src/util/protobuf.rs @@ -148,6 +148,20 @@ mod tests { use super::*; + #[test] + fn t_protobuilder() { + let mut pb = ProtoBuilder::new(); + pb.varint(1, 128); + pb.varint(2, 1234567890); + pb.varint(3, 1234567890123456789); + pb.string(4, "Hello"); + pb.bytes(5, &[1, 2, 3]); + assert_eq!( + pb.to_base64(), + "CIABENKF2MwEGJWCpu_HnoSRESIFSGVsbG8qAwECAw%3D%3D" + ); + } + #[test] fn t_parse_proto() { let p = "GhhVQzl2cnZOU0wzeGNXR1NrVjg2UkVCU2c%3D"; diff --git a/tests/youtube.rs b/tests/youtube.rs index 3b41490..7c04ae5 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -887,11 +887,8 @@ async fn channel_videos(rp: RustyPipe) { #[rstest] #[tokio::test] async fn channel_shorts(rp: RustyPipe) { - let vd = rp.query().get_visitor_data().await.unwrap(); - let channel = rp .query() - .visitor_data(vd) .channel_videos_tab("UCh8gHdtzO2tXd593_bjErWg", ChannelVideoTab::Shorts) .await .unwrap(); From e91541629d6c944c1001f5883e3c1264aeeb3969 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 25 Jan 2025 01:24:36 +0100 Subject: [PATCH 102/191] fix: update iOS client --- src/client/mod.rs | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 1185aa3..670b730 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -336,8 +336,12 @@ const MOBILE_CLIENT_VERSION: &str = "2.20241217.07.00"; const TV_CLIENT_VERSION: &str = "7.20241211.14.00"; // Mobile app client -const APP_CLIENT_VERSION: &str = "19.44.38"; +const IOS_CLIENT_VERSION: &str = "20.03.02"; +const IOS_VERSION: &str = "18_2_1"; +const IOS_VERSION_BUILD: &str = "18.2.1.22C161"; const IOS_DEVICE_MODEL: &str = "iPhone16,2"; +const ANDROID_CLIENT_VERSION: &str = "19.44.38"; +const ANDROID_VERSION: &str = "11"; const OAUTH_CLIENT_ID: &str = "861556708454-d6dlm3lh05idd8npek18k6be8ba3oc68.apps.googleusercontent.com"; @@ -1683,13 +1687,13 @@ impl RustyPipeQuery { ClientType::Mobile => MOBILE_UA.into(), ClientType::Tv => TV_UA.into(), ClientType::Android => format!( - "com.google.android.youtube/{} (Linux; U; Android 11) gzip", - APP_CLIENT_VERSION + "com.google.android.youtube/{} (Linux; U; Android {}) gzip", + ANDROID_CLIENT_VERSION, ANDROID_VERSION ) .into(), ClientType::Ios => format!( - "com.google.ios.youtube/{} ({}; U; CPU iOS 18_1_0 like Mac OS X)", - APP_CLIENT_VERSION, IOS_DEVICE_MODEL + "com.google.ios.youtube/{} ({}; U; CPU iOS {} like Mac OS X)", + IOS_CLIENT_VERSION, IOS_DEVICE_MODEL, IOS_VERSION ) .into(), } @@ -1831,9 +1835,9 @@ impl RustyPipeQuery { ClientType::Android => YTContext { client: ClientInfo { client_name: "ANDROID", - client_version: APP_CLIENT_VERSION.into(), + client_version: ANDROID_CLIENT_VERSION.into(), os_name: "Android", - os_version: "11", + os_version: ANDROID_VERSION, android_sdk_version: Some(30), platform: "MOBILE", visitor_data, @@ -1848,10 +1852,10 @@ impl RustyPipeQuery { ClientType::Ios => YTContext { client: ClientInfo { client_name: "IOS", - client_version: APP_CLIENT_VERSION.into(), + client_version: IOS_CLIENT_VERSION.into(), device_model: IOS_DEVICE_MODEL, os_name: "iPhone", - os_version: "18.1.0.22B83", + os_version: IOS_VERSION_BUILD, platform: "MOBILE", visitor_data, hl, From 9c67f8f85bef8214848dc9d17bff6cff252e015e Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 25 Jan 2025 03:18:19 +0100 Subject: [PATCH 103/191] fix: a/b test 20: music continuation item renderer --- codegen/src/abtest.rs | 24 +++++++++++++++++++++++- notes/AB_Tests.md | 20 ++++++++++++++++++-- src/client/music_playlist.rs | 14 ++++++++------ src/client/music_search.rs | 1 + src/client/pagination.rs | 14 ++++++++++---- src/client/response/music_item.rs | 22 +++++++++++++++++++++- src/client/search.rs | 2 +- src/client/video_details.rs | 12 ++++++------ 8 files changed, 88 insertions(+), 21 deletions(-) diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index 00c85cd..22c0b0a 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -39,10 +39,14 @@ pub enum ABTest { ChannelPlaylistsLockup = 17, MusicPlaylistFacepile = 18, MusicAlbumGroupsReordered = 19, + MusicContinuationItemRenderer = 20, } /// List of active A/B tests that are run when none is manually specified -const TESTS_TO_RUN: &[ABTest] = &[ABTest::MusicAlbumGroupsReordered]; +const TESTS_TO_RUN: &[ABTest] = &[ + ABTest::MusicAlbumGroupsReordered, + ABTest::MusicContinuationItemRenderer, +]; #[derive(Debug, Serialize, Deserialize)] pub struct ABTestRes { @@ -114,6 +118,9 @@ pub async fn run_test( ABTest::ChannelPlaylistsLockup => channel_playlists_lockup(&query).await, ABTest::MusicPlaylistFacepile => music_playlist_facepile(&query).await, ABTest::MusicAlbumGroupsReordered => music_album_groups_reordered(&query).await, + ABTest::MusicContinuationItemRenderer => { + music_continuation_item_renderer(&query).await + } } .unwrap(); pb.inc(1); @@ -421,3 +428,18 @@ pub async fn music_album_groups_reordered(rp: &RustyPipeQuery) -> Result { .await?; Ok(res.contains("\"Singles & EPs\"")) } + +pub async fn music_continuation_item_renderer(rp: &RustyPipeQuery) -> Result { + let id = "VLPLbZIPy20-1pN7mqjckepWF78ndb6ci_qi"; + let res = rp + .raw( + ClientType::DesktopMusic, + "browse", + &QBrowse { + browse_id: id, + params: None, + }, + ) + .await?; + Ok(res.contains("\"continuationItemRenderer\"")) +} diff --git a/notes/AB_Tests.md b/notes/AB_Tests.md index b006b4b..0a73315 100644 --- a/notes/AB_Tests.md +++ b/notes/AB_Tests.md @@ -1034,5 +1034,21 @@ commandContext missing). YouTube Music used to group artist albums into 2 rows: "Albums" and "Singles". -These groups were changed into "Albums" and "Singles & EPs". Now the "Album" label is omitted -for albums in their group, while singles and EPs have a label with their type. +These groups were changed into "Albums" and "Singles & EPs". Now the "Album" label is +omitted for albums in their group, while singles and EPs have a label with their type. + +## [20] Music continuation item renderer + +- **Encountered on:** 25.01.2025 +- **Impact:** 🟢 Low +- **Endpoint:** browse (YTM) +- **Status:** Common (4%) + +YouTube Music now uses a `continuationItemRenderer` for music playlists instead of +putting the continuations in a separate attribute of the MusicShelf. + +The continuation response now uses a `onResponseReceivedActions` field for its music +items. + +YouTube Music now also sends a random 16-character string as a `clientScreenNonce` in +the request context. This is not mandatory though. diff --git a/src/client/music_playlist.rs b/src/client/music_playlist.rs index efe4859..b09656a 100644 --- a/src/client/music_playlist.rs +++ b/src/client/music_playlist.rs @@ -196,13 +196,15 @@ impl MapResponse for response::MusicPlaylist { let mut mapper = MusicListMapper::new(ctx.lang); mapper.map_response(shelf.contents); - let map_res = mapper.conv_items(); - let ctoken = shelf - .continuations - .into_iter() - .next() - .map(|cont| cont.next_continuation_data.continuation); + let ctoken = mapper.ctoken.clone().or_else(|| { + shelf + .continuations + .into_iter() + .next() + .map(|cont| cont.next_continuation_data.continuation) + }); + let map_res = mapper.conv_items(); let track_count = if ctoken.is_some() { header.as_ref().and_then(|h| { diff --git a/src/client/music_search.rs b/src/client/music_search.rs index e213517..dd40ada 100644 --- a/src/client/music_search.rs +++ b/src/client/music_search.rs @@ -189,6 +189,7 @@ impl MapResponse> for response::MusicSearch response::music_search::ItemSection::None => {} }); + let ctoken = ctoken.or(mapper.ctoken.clone()); let map_res = mapper.conv_items(); Ok(MapResult { diff --git a/src/client/pagination.rs b/src/client/pagination.rs index 07c4964..3fad657 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -199,11 +199,17 @@ impl MapResponse> for response::MusicContinuation { None => {} } + for a in self.on_response_received_actions { + mapper.map_response(a.append_continuation_items_action.continuation_items); + } + + let ctoken = mapper.ctoken.clone().or_else(|| { + continuations + .into_iter() + .next() + .map(|cont| cont.next_continuation_data.continuation) + }); let map_res = mapper.items(); - let ctoken = continuations - .into_iter() - .next() - .map(|cont| cont.next_continuation_data.continuation); Ok(MapResult { c: Paginator::new_ext( diff --git a/src/client/response/music_item.rs b/src/client/response/music_item.rs index cb51528..f5e0fac 100644 --- a/src/client/response/music_item.rs +++ b/src/client/response/music_item.rs @@ -18,7 +18,8 @@ use super::{ url_endpoint::{ BrowseEndpointWrap, MusicPage, MusicPageType, MusicVideoType, NavigationEndpoint, PageType, }, - ContentsRenderer, MusicContinuationData, SimpleHeaderRenderer, Thumbnails, ThumbnailsWrap, + ContentsRenderer, ContinuationActionWrap, ContinuationEndpoint, MusicContinuationData, + SimpleHeaderRenderer, Thumbnails, ThumbnailsWrap, }; #[derive(Debug, Deserialize)] @@ -86,6 +87,10 @@ pub(crate) enum MusicResponseItem { MusicResponsiveListItemRenderer(ListMusicItem), MusicTwoRowItemRenderer(CoverMusicItem), MessageRenderer(serde::de::IgnoredAny), + #[serde(rename_all = "camelCase")] + ContinuationItemRenderer { + continuation_endpoint: ContinuationEndpoint, + }, } #[serde_as] @@ -322,10 +327,14 @@ impl From for Vec { } /// Music list continuation response model +#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct MusicContinuation { pub continuation_contents: Option, + #[serde(default)] + #[serde_as(as = "VecSkipError<_>")] + pub on_response_received_actions: Vec>, } #[derive(Debug, Deserialize)] @@ -434,6 +443,7 @@ pub(crate) struct MusicListMapper { search_suggestion: bool, items: Vec, warnings: Vec, + pub ctoken: Option, } #[derive(Debug)] @@ -455,6 +465,7 @@ impl MusicListMapper { search_suggestion: false, items: Vec::new(), warnings: Vec::new(), + ctoken: None, } } @@ -468,6 +479,7 @@ impl MusicListMapper { search_suggestion: true, items: Vec::new(), warnings: Vec::new(), + ctoken: None, } } @@ -482,6 +494,7 @@ impl MusicListMapper { search_suggestion: false, items: Vec::new(), warnings: Vec::new(), + ctoken: None, } } @@ -496,6 +509,7 @@ impl MusicListMapper { search_suggestion: false, items: Vec::new(), warnings: Vec::new(), + ctoken: None, } } @@ -507,6 +521,12 @@ impl MusicListMapper { // Tile MusicResponseItem::MusicTwoRowItemRenderer(item) => self.map_tile(item), MusicResponseItem::MessageRenderer(_) => Ok(None), + MusicResponseItem::ContinuationItemRenderer { + continuation_endpoint, + } => { + self.ctoken = Some(continuation_endpoint.continuation_command.token); + Ok(None) + } } } diff --git a/src/client/search.rs b/src/client/search.rs index a4389e4..b4ba544 100644 --- a/src/client/search.rs +++ b/src/client/search.rs @@ -120,7 +120,7 @@ impl MapResponse> for response::Search { .filter_map(T::from_yt_item) .collect(), mapper.ctoken, - None, + ctx.visitor_data.map(str::to_owned), ContinuationEndpoint::Search, false, ), diff --git a/src/client/video_details.rs b/src/client/video_details.rs index e91a890..9cc1ffc 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -277,7 +277,7 @@ impl MapResponse for response::VideoDetails { r, sr.secondary_results.continuations, visitor_data.clone(), - ctx.lang, + ctx, ); warnings.append(&mut res.warnings); res.c @@ -359,7 +359,7 @@ impl MapResponse for response::VideoDetails { comment_ctoken, visitor_data.clone(), ContinuationEndpoint::Next, - false, + ctx.authenticated, ), latest_comments: Paginator::new_ext( comment_count, @@ -367,7 +367,7 @@ impl MapResponse for response::VideoDetails { latest_comments_ctoken, visitor_data.clone(), ContinuationEndpoint::Next, - false, + ctx.authenticated, ), visitor_data, }, @@ -468,9 +468,9 @@ fn map_recommendations( r: MapResult>, continuations: Option>, visitor_data: Option, - lang: Language, + ctx: &MapRespCtx<'_>, ) -> MapResult> { - let mut mapper = response::YouTubeListMapper::::new(lang); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); mapper.map_response(r); mapper.ctoken = mapper.ctoken.or_else(|| { @@ -486,7 +486,7 @@ fn map_recommendations( mapper.ctoken, visitor_data, ContinuationEndpoint::Next, - false, + ctx.authenticated, ), warnings: mapper.warnings, } From 15245c18b584e42523762b94fcc7284d483660a0 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 25 Jan 2025 03:19:50 +0100 Subject: [PATCH 104/191] fix: include whole request body in report --- src/client/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 670b730..745870e 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -2215,7 +2215,7 @@ impl RustyPipeQuery { }) .collect(), ), - req_body: serde_json::to_string(body).ok(), + req_body: serde_json::to_string(&req_body).ok(), status: req_res.status.into(), resp_body: req_res.body, }, From 812ff4c5bafffc5708a6d5066f1ebadb6d9fc958 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 29 Jan 2025 02:07:18 +0100 Subject: [PATCH 105/191] fix: ensure downloader futures are send --- downloader/src/lib.rs | 57 ++++++++++++++++++--------------------- downloader/tests/tests.rs | 24 +++++++++++++---- 2 files changed, 45 insertions(+), 36 deletions(-) diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 339af94..7bcbdd1 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -15,7 +15,7 @@ use std::{ time::Duration, }; -use futures_util::stream::{self, StreamExt}; +use futures_util::stream::{self, StreamExt, TryStreamExt}; use once_cell::sync::Lazy; use rand::Rng; use regex::Regex; @@ -871,8 +871,8 @@ impl DownloadQuery { if let Some(pb) = pb { pb.set_message(format!("Downloading {name}{attempt_suffix}")) } - download_streams( - &downloads, + let downloads = download_streams( + downloads, &self.dl.i.http, &user_agent, pot, @@ -930,13 +930,9 @@ impl DownloadQuery { } // Delete original files - stream::iter(&downloads) - .map(|d| fs::remove_file(d.file.clone())) - .buffer_unordered(downloads.len()) - .collect::>() - .await - .into_iter() - .collect::>()?; + for d in &downloads { + fs::remove_file(&d.file).await?; + } #[cfg(feature = "indicatif")] if let Some(pb) = pb { @@ -1442,33 +1438,32 @@ struct StreamDownload { } async fn download_streams( - downloads: &Vec, + downloads: Vec, http: &Client, user_agent: &str, pot: Option<&str>, #[cfg(feature = "indicatif")] pb: Option, -) -> Result<()> { - let n = downloads.len(); - - stream::iter(downloads) - .map(|d| { - download_single_file( - &d.url, - &d.file, - http, - user_agent, - pot, - #[cfg(feature = "indicatif")] - pb.clone(), - ) +) -> Result> { + stream::iter(downloads.iter().map(Ok)) + .try_for_each_concurrent(2, |d| { + #[cfg(feature = "indicatif")] + let pb = pb.clone(); + async move { + download_single_file( + &d.url, + &d.file, + http, + user_agent, + pot, + #[cfg(feature = "indicatif")] + pb, + ) + .await + } }) - .buffer_unordered(n) - .collect::>() - .await - .into_iter() - .collect::>>()?; + .await?; - Ok(()) + Ok(downloads) } async fn convert_streams( diff --git a/downloader/tests/tests.rs b/downloader/tests/tests.rs index aa4a05e..b8a3987 100644 --- a/downloader/tests/tests.rs +++ b/downloader/tests/tests.rs @@ -47,11 +47,13 @@ async fn download_music(rp: RustyPipe) { let td = TempDir::default(); let td_path = td.to_path_buf(); - let dl = Downloader::builder() - .audio_tag() - .crop_cover() - .rustypipe(&rp) - .build(); + #[allow(unused_mut)] + let mut dl = Downloader::builder().rustypipe(&rp); + #[cfg(feature = "audiotag")] + { + dl = dl.audio_tag().crop_cover(); + } + let dl = dl.build(); let res = dl .id("bVtv3st8bgc") @@ -111,3 +113,15 @@ fn assert_audio_meta(p: &Path, title: &str, artist: &str, album: &str, date: &st assert_eq!(tags["ALBUM"].as_str(), Some(album)); assert_eq!(tags["DATE"].as_str(), Some(date)); } + +/// This is just a static check to make sure all RustyPipe futures can be sent +/// between threads safely. +/// Otherwise this may cause issues when integrating RustyPipe into async projects. +#[allow(unused)] +async fn all_send_and_sync() { + fn send_and_sync(t: T) {} + + let dl = Downloader::default(); + let dlq = dl.id(""); + send_and_sync(dlq.download()); +} From 2c8ac410aa535d83f8bcc7181f81914b13bceb77 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 30 Jan 2025 00:02:16 +0000 Subject: [PATCH 106/191] chore(deps): update rust crate rquickjs to 0.9.0 (#33) --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 4a064c2..7289aa7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ keywords = ["youtube", "video", "music"] categories = ["api-bindings", "multimedia"] [workspace.dependencies] -rquickjs = "0.8.1" +rquickjs = "0.9.0" once_cell = "1.12.0" regex = "1.6.0" fancy-regex = "0.14.0" From 3ccf29f78ca29b2aa9fbb6348dd952040153f382 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 2 Feb 2025 16:53:31 +0100 Subject: [PATCH 107/191] ci: renovate: preserveSemverRanges --- renovate.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index 2c4d77d..1ec2687 100644 --- a/renovate.json +++ b/renovate.json @@ -1,6 +1,6 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:best-practices"], + "extends": ["config:best-practices", ":preserveSemverRanges"], "semanticCommits": "enabled", "automerge": true, "automergeStrategy": "squash", From 6304201d1257ab4571b4e6ec83b17799d6b4f391 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 3 Feb 2025 03:29:05 +0100 Subject: [PATCH 108/191] ci: use renovate v39 --- .forgejo/workflows/renovate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/renovate.yaml b/.forgejo/workflows/renovate.yaml index e91c636..013b185 100644 --- a/.forgejo/workflows/renovate.yaml +++ b/.forgejo/workflows/renovate.yaml @@ -17,7 +17,7 @@ jobs: renovate: runs-on: docker container: - image: renovate/renovate:latest + image: renovate/renovate:39 steps: - name: Load renovate repo cache From eda16e378730a3b57c4982a626df1622a93c574a Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 5 Feb 2025 10:15:52 +0100 Subject: [PATCH 109/191] fix: extracting nsig fn when outside variable starts with $ --- src/deobfuscate.rs | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index aab5d53..e1bc68e 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -117,12 +117,12 @@ const DEOBF_NSIG_FUNC_NAME: &str = "deobf_nsig"; fn get_sig_fn_name(player_js: &str) -> Result { let pattern = [ - r#"\b(?P[a-zA-Z0-9_$]+)&&\((?P=var)=(?P[a-zA-Z0-9_$]{2,})\(decodeURIComponent\((?P=var)\)\)"#, - r#"(?P[a-zA-Z0-9_$]+)\s*=\s*function\(\s*(?P[a-zA-Z0-9_$]+)\s*\)\s*{\s*(?P=arg)\s*=\s*(?P=arg)\.split\(\s*""\s*\)\s*;\s*[^}]+;\s*return\s+(?P=arg)\.join\(\s*""\s*\)"#, - r#"(?:\b|[^a-zA-Z0-9_$])(?P[a-zA-Z0-9_$]{2,})\s*=\s*function\(\s*a\s*\)\s*{\s*a\s*=\s*a\.split\(\s*""\s*\)(?:;[a-zA-Z0-9_$]{2}\.[a-zA-Z0-9_$]{2}\(a,\d+\))?"#, - r#"\b[cs]\s*&&\s*[adf]\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P[a-zA-Z0-9_$]+)\("#, - r#"\b[a-zA-Z0-9]+\s*&&\s*[a-zA-Z0-9]+\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P[a-zA-Z0-9_$]+)\("#, - r#"\bm=(?P[a-zA-Z0-9_$]{2,})\(decodeURIComponent\(h\.s\)\)"#, + r#"\b(?P[\w$]+)&&\((?P=var)=(?P[\w$]{2,})\(decodeURIComponent\((?P=var)\)\)"#, + r#"(?P[\w$]+)\s*=\s*function\(\s*(?P[\w$]+)\s*\)\s*{\s*(?P=arg)\s*=\s*(?P=arg)\.split\(\s*""\s*\)\s*;\s*[^}]+;\s*return\s+(?P=arg)\.join\(\s*""\s*\)"#, + r#"(?:\b|[^\w$])(?P[\w$]{2,})\s*=\s*function\(\s*a\s*\)\s*{\s*a\s*=\s*a\.split\(\s*""\s*\)(?:;[\w$]{2}\.[\w$]{2}\(a,\d+\))?"#, + r#"\b[cs]\s*&&\s*[adf]\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P[\w$]+)\("#, + r#"\b[a-zA-Z0-9]+\s*&&\s*[a-zA-Z0-9]+\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P[\w$]+)\("#, + r#"\bm=(?P[\w$]{2,})\(decodeURIComponent\(h\.s\)\)"#, ]; util::get_cg_from_fancy_regexes(&pattern, player_js, "sig") @@ -137,7 +137,7 @@ fn get_sig_fn(player_js: &str) -> Result { let dfunc_name = get_sig_fn_name(player_js)?; let function_pattern_str = format!( - r#"({}=function\([a-zA-Z0-9_]+\)\{{.+?\}})"#, + r#"({}=function\([\w]+\)\{{.+?\}})"#, dfunc_name.replace('$', "\\$") ); let function_pattern = Regex::new(&function_pattern_str) @@ -150,7 +150,7 @@ fn get_sig_fn(player_js: &str) -> Result { .ok_or(DeobfError::Extraction("sig fn"))?[1] ); - let helper_object_name_pattern = Regex::new(r";([A-Za-z0-9_\$]{2,3})\...\(").unwrap(); + let helper_object_name_pattern = Regex::new(r";([\w\$]{2,3})\...\(").unwrap(); let helper_object_name = helper_object_name_pattern .captures(&deobfuscate_function) .ok_or(DeobfError::Extraction("sig fn helper object name"))? @@ -182,7 +182,7 @@ fn get_sig_fn(player_js: &str) -> Result { fn get_nsig_fn_names(player_js: &str) -> impl Iterator + '_ { static FUNCTION_NAME_REGEX: Lazy = Lazy::new(|| { // x.get( .. y=functionName[array_num](z) .. x.set( - Regex::new(r#"(?:[a-zA-Z0-9_$]\.get\(|index\.m3u8).+[a-zA-Z]=([a-zA-Z0-9_$]{2,})(?:\[(\d+)\])?\([a-zA-Z0-9]\).+[a-zA-Z0-9]\.set\("#) + Regex::new(r#"(?:[\w$]\.get\(|index\.m3u8).+[a-zA-Z]=([\w$]{2,})(?:\[(\d+)\])?\([a-zA-Z0-9]\).+[a-zA-Z0-9]\.set\("#) .unwrap() }); @@ -288,12 +288,15 @@ fn extract_js_fn(js: &str, offset: usize, name: &str) -> Result Result { let code = extract_js_fn(player_js, offset, name)?; let js_fn = format!("{}{}", code, caller_function(DEOBF_NSIG_FUNC_NAME, name)); - tracing::trace!("sig_fn: {js_fn}"); + tracing::trace!("nsig_fn: {js_fn}"); verify_fn(&js_fn, DEOBF_NSIG_FUNC_NAME)?; tracing::debug!("successfully extracted nsig fn `{name}`"); Ok(js_fn) @@ -542,9 +545,9 @@ c[36](c[8],c[32]),c[20](c[25],c[10]),c[2](c[22],c[8]),c[32](c[20],c[16]),c[32](c #[test] fn t_extract_js_fn_outside_vars() { - // Function depending on outside variables let base_js = "let a = 42;foo();var b=11;bar();Wka = function(d){var x=1+2+a*b;return x;}"; let res = extract_js_fn(base_js, 0, "Wka").unwrap(); + // order of variables is non-reproducible assert!( res == "var a = 42; var b=11; var Wka = function(d){var x=1+2+a*b;return x;};" || res == "var b=11; var a = 42; var Wka = function(d){var x=1+2+a*b;return x;};", @@ -554,7 +557,6 @@ c[36](c[8],c[32]),c[20](c[25],c[10]),c[2](c[22],c[8]),c[32](c[20],c[16]),c[32](c #[test] fn t_extract_js_fn_outside_vars2() { - // Function depending on outside variables let base_js = "{let a = {v1:1,v2:2}}foo();Wka = function(d){var x=1+2+a.v1;return x;}"; let res = extract_js_fn(base_js, 0, "Wka").unwrap(); assert_eq!( @@ -565,7 +567,6 @@ c[36](c[8],c[32]),c[20](c[25],c[10]),c[2](c[22],c[8]),c[32](c[20],c[16]),c[32](c #[test] fn t_extract_js_fn_outside_vars3() { - // Function depending on outside variables let base_js = "Wka = function(d){var x=1+2+a[0];return x;};let a=[1,2,3]"; let res = extract_js_fn(base_js, 0, "Wka").unwrap(); assert_eq!( @@ -672,6 +673,7 @@ c[36](c[8],c[32]),c[20](c[25],c[10]),c[2](c[22],c[8]),c[32](c[20],c[16]),c[32](c #[case("b12cc44b", "keLa5R2U00sR9SQK", "N1OGyujjEwMnLw")] #[case("3bb1f723", "gK15nzVyaXE9RsMP3z", "ZFFWFLPWx9DEgQ")] #[case("2f1832d2", "YWt1qdbe8SAfkoPHW5d", "RrRjWQOJmBiP")] + #[case("19d2ae9d", "YWt1qdbe8SAfkoPHW5d", "CS6dVTYzpZrAZ5TD")] #[tokio::test] #[traced_test] async fn nsig_tests(#[case] js_hash: &str, #[case] nsig_in: &str, #[case] expect: &str) { From 10767fe71cda11a756ae03f9d58db4acc1087baa Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 5 Feb 2025 10:21:16 +0100 Subject: [PATCH 110/191] test: fix tests --- tests/youtube.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/youtube.rs b/tests/youtube.rs index 7c04ae5..05226af 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -1483,7 +1483,7 @@ async fn trending(rp: RustyPipe) { )] #[case::short( "RDCLAK5uy_nLNY4ReQKH2kx5U23cyGMHql9ciHD9RSM", - "Presenting BLACKPINK (블랙핑크)", + "Presenting BLACKPINK", false, Some("The most played hits and essential tracks. #blackpink #best #kpop".to_owned()), None, From 50ab1f7a5d8aeaa3720264b4a4b27805bb0e8121 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 5 Feb 2025 11:46:13 +0100 Subject: [PATCH 111/191] fix: retry updating deobf data after a RustyPipe update --- src/client/mod.rs | 26 ++++++++++++++++++-------- src/deobfuscate.rs | 8 ++++---- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 745870e..2ef3a1f 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -519,7 +519,6 @@ struct CacheHolder { #[serde(default)] struct CacheData { clients: HashMap>, - #[serde(skip_serializing_if = "CacheEntry::is_none")] deobf: CacheEntry, #[serde(skip_serializing_if = "Option::is_none")] oauth_token: Option, @@ -541,6 +540,9 @@ struct CacheEntry { skip_serializing_if = "Option::is_none" )] retry_at: Option, + /// RustyPipe version that failed to updated the entry + #[serde(skip_serializing_if = "Option::is_none")] + failed_version: Option, data: Option, } @@ -575,10 +577,21 @@ impl CacheEntry { self.data.is_none() } + /// Retry updating a cache entry only after a delay or a RustyPipe update fn should_retry(&self) -> bool { self.retry_at .map(|d| OffsetDateTime::now_utc() > d) .unwrap_or(true) + || self + .failed_version + .as_deref() + .map(|v| crate::VERSION != v) + .unwrap_or(true) + } + + fn retry_later(&mut self, delay_h: i64) { + self.retry_at = Some(util::now_sec() + time::Duration::hours(delay_h)); + self.failed_version = Some(crate::VERSION.to_owned()); } } @@ -587,6 +600,7 @@ impl From for CacheEntry { Self { last_update: Some(util::now_sec()), retry_at: None, + failed_version: None, data: Some(f), } } @@ -1071,7 +1085,7 @@ impl RustyPipe { return version.into(); } Err(e) => { - client.retry_at = Some(util::now_sec() + time::Duration::hours(1)); + client.retry_later(1); drop(client); self.store_cache().await; tracing::warn!( @@ -1108,11 +1122,7 @@ impl RustyPipe { if deobf_data.should_retry() { tracing::debug!("getting deobf data"); - match DeobfData::extract( - self.inner.http.clone(), - self.inner.reporter.as_deref(), - ) - .await + match DeobfData::extract(&self.inner.http, self.inner.reporter.as_deref()).await { Ok(new_data) => { // Write new data to the cache @@ -1123,7 +1133,7 @@ impl RustyPipe { } Err(e) => { // Try to fall back to expired cache data if available, otherwise return error - deobf_data.retry_at = Some(util::now_sec() + time::Duration::days(1)); + deobf_data.retry_later(24); let res = match deobf_data.get_expired() { Some(d) => { tracing::warn!("could not get new deobf data ({e}), falling back to expired cache"); diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index e1bc68e..d0adc12 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -29,9 +29,9 @@ impl DeobfData { /// Download and extract the latest deobfuscation data from YouTube /// /// Creates a report if the data could not be extracted - pub async fn extract(http: Client, reporter: Option<&dyn Reporter>) -> Result { - let js_url = get_player_js_url(&http).await?; - let player_js = get_response(&http, &js_url).await?; + pub async fn extract(http: &Client, reporter: Option<&dyn Reporter>) -> Result { + let js_url = get_player_js_url(http).await?; + let player_js = get_response(http, &js_url).await?; tracing::debug!("downloaded player.js from {}", js_url); let res = Self::extract_fns(&js_url, &player_js); @@ -690,7 +690,7 @@ c[36](c[8],c[32]),c[20](c[25],c[10]),c[2](c[22],c[8]),c[32](c[20],c[16]),c[32](c #[traced_test] async fn t_update() { let client = Client::new(); - let deobf_data = DeobfData::extract(client, None).await.unwrap(); + let deobf_data = DeobfData::extract(&client, None).await.unwrap(); let deobf = Deobfuscator::new(&deobf_data).unwrap(); let deobf_sig = deobf.deobfuscate_sig("GOqGOqGOq0QJ8wRAIgaryQHfplJ9xJSKFywyaSMHuuwZYsoMTAvRvfm51qIGECIA5061zWeyfMPX9hEl_U6f9J0tr7GTJMKyPf5XNrJb5fb5i").unwrap(); From b12f4c5d821a9189d7ed8410ad860824b6d052ef Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 2 Feb 2025 02:06:56 +0100 Subject: [PATCH 112/191] feat: add visitor data cache, remove random visitor data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Apparently YouTube can detect randomly generated visitor data and prevents both the iOS and TV player from being fetched (Error: Sign in to confirm you’re not a bot). Therefore the visitor data generation code was removed and replaced with a cache that randomly chooses from a selection of real visitor data. --- src/client/mod.rs | 78 +++++------------ src/util/mod.rs | 25 +----- src/util/visitor_data.rs | 176 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 197 insertions(+), 82 deletions(-) create mode 100644 src/util/visitor_data.rs diff --git a/src/client/mod.rs b/src/client/mod.rs index 2ef3a1f..f9462cb 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -38,6 +38,7 @@ use time::OffsetDateTime; use tokio::sync::RwLock as AsyncRwLock; use crate::error::AuthError; +use crate::util::VisitorDataCache; use crate::{ cache::{CacheStorage, FileStorage, DEFAULT_CACHE_FILE}, deobfuscate::DeobfData, @@ -312,9 +313,9 @@ impl AuthCookie { } } -const DEFAULT_UA: &str = "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0"; -const MOBILE_UA: &str = "Mozilla/5.0 (Android 14; Mobile; rv:129.0) Gecko/129.0 Firefox/129.0"; -const TV_UA: &str = "Mozilla/5.0 (SMART-TV; Linux; Tizen 5.0) AppleWebKit/538.1 (KHTML, like Gecko) Version/5.0 NativeTVAds Safari/538.1"; +pub(crate) const DEFAULT_UA: &str = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"; +pub(crate) const MOBILE_UA: &str = "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.135 Mobile Safari/537.36"; +pub(crate) const TV_UA: &str = "Mozilla/5.0 (SMART-TV; Linux; Tizen 5.0) AppleWebKit/538.1 (KHTML, like Gecko) Version/5.0 NativeTVAds Safari/538.1"; const CONSENT_COOKIE: &str = "SOCS=CAISAiAD"; @@ -323,7 +324,7 @@ const YOUTUBEI_V1_GAPIS_URL: &str = "https://youtubei.googleapis.com/youtubei/v1 const YOUTUBE_MUSIC_V1_URL: &str = "https://music.youtube.com/youtubei/v1/"; const YOUTUBEI_MOBILE_V1_URL: &str = "https://m.youtube.com/youtubei/v1/"; const YOUTUBE_HOME_URL: &str = "https://www.youtube.com"; -const YOUTUBE_MUSIC_HOME_URL: &str = "https://music.youtube.com"; +pub(crate) const YOUTUBE_MUSIC_HOME_URL: &str = "https://music.youtube.com"; const YOUTUBE_MOBILE_HOME_URL: &str = "https://m.youtube.com"; const YOUTUBE_TV_URL: &str = "https://www.youtube.com/tv"; @@ -350,8 +351,6 @@ const OAUTH_SCOPES: &str = "http://gdata.youtube.com https://www.googleapis.com/ static CLIENT_VERSION_REGEX: Lazy = Lazy::new(|| Regex::new(r#""INNERTUBE_CONTEXT_CLIENT_VERSION":"([\w\d\._-]+?)""#).unwrap()); -static VISITOR_DATA_REGEX: Lazy = - Lazy::new(|| Regex::new(r#""visitorData":"([\w\d_\-%]+?)""#).unwrap()); /// Default order of client types when fetching player data /// @@ -378,6 +377,7 @@ struct RustyPipeRef { cache: CacheHolder, default_opts: RustyPipeOpts, user_agent: Cow<'static, str>, + visitor_data_cache: VisitorDataCache, } #[derive(Clone)] @@ -688,6 +688,8 @@ impl RustyPipeBuilder { }) .collect::>(); + let visitor_data_cache = VisitorDataCache::new(http.clone()); + Ok(RustyPipe { inner: Arc::new(RustyPipeRef { http, @@ -706,6 +708,7 @@ impl RustyPipeBuilder { }, default_opts: self.default_opts, user_agent, + visitor_data_cache, }), }) } @@ -1196,51 +1199,7 @@ impl RustyPipe { /// Sometimes YouTube does not set the `__Secure-YEC` cookie. In this case, the /// visitor data is extracted from the html page. async fn get_visitor_data(&self) -> Result { - tracing::debug!("getting YT visitor data"); - let resp = self - .inner - .http - .get(YOUTUBE_MUSIC_HOME_URL) - .header(header::ORIGIN, YOUTUBE_MUSIC_HOME_URL) - .header(header::REFERER, YOUTUBE_MUSIC_HOME_URL) - .send() - .await?; - - let vdata = resp - .headers() - .get_all(header::SET_COOKIE) - .iter() - .find_map(|c| { - if let Ok(cookie) = c.to_str() { - if let Some(after) = cookie.strip_prefix("__Secure-YEC=") { - return after - .split_once(';') - .map(|s| s.0.to_owned()) - .filter(|s| !s.is_empty()); - } - } - None - }); - - match vdata { - Some(vdata) => Ok(vdata), - None => { - if resp.status().is_success() { - // Extract visitor data from html - let html = resp.text().await?; - - util::get_cg_from_regex(&VISITOR_DATA_REGEX, &html, 1).ok_or(Error::Extraction( - ExtractionError::InvalidData( - "Could not find visitor data on html page".into(), - ), - )) - } else { - Err(Error::Extraction(ExtractionError::InvalidData( - format!("Could not get visitor data, status: {}", resp.status()).into(), - ))) - } - } - } + self.inner.visitor_data_cache.new_visitor_data().await } /// Get a new device code for logging into YouTube @@ -2147,11 +2106,14 @@ impl RustyPipeQuery { ) -> Result { tracing::debug!("getting {}({})", operation, id); - let visitor_data = ctx_src + let visitor_data = match ctx_src .visitor_data .or(self.opts.visitor_data.as_deref()) .map(Cow::Borrowed) - .unwrap_or_else(|| util::random_visitor_data(self.opts.country).into()); + { + Some(vd) => vd, + None => self.client.inner.visitor_data_cache.get().await?.into(), + }; let context = self .get_context(ctype, !ctx_src.unlocalized, &visitor_data) @@ -2289,12 +2251,10 @@ impl RustyPipeQuery { endpoint: &str, body: &B, ) -> Result { - let visitor_data = self - .opts - .visitor_data - .as_deref() - .map(Cow::Borrowed) - .unwrap_or_else(|| util::random_visitor_data(self.opts.country).into()); + let visitor_data = match self.opts.visitor_data.as_deref().map(Cow::Borrowed) { + Some(vd) => vd, + None => self.client.inner.visitor_data_cache.get().await?.into(), + }; let context = self.get_context(ctype, true, &visitor_data).await; let req_body = QBody { context, body }; diff --git a/src/util/mod.rs b/src/util/mod.rs index fe294c7..9a49571 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -1,11 +1,13 @@ mod date; mod protobuf; +mod visitor_data; pub mod dictionary; pub mod timeago; pub use date::{now_sec, shift_months, shift_weeks_mo, shift_years}; pub use protobuf::{string_from_pb, ProtoBuilder}; +pub use visitor_data::VisitorDataCache; use std::{ collections::BTreeMap, @@ -99,29 +101,6 @@ pub fn random_uuid() -> String { ) } -/// Generate a random visitor data cookie -pub fn random_visitor_data(country: Country) -> String { - let mut rng = rand::thread_rng(); - - let mut pb_e2 = ProtoBuilder::new(); - pb_e2.string(2, ""); - pb_e2.varint(4, rng.gen_range(1..256)); - - let mut pb_e = ProtoBuilder::new(); - pb_e.string(1, &country.to_string()); - pb_e.embedded(2, pb_e2); - - let mut pb = ProtoBuilder::new(); - pb.string(1, &random_string(CONTENT_PLAYBACK_NONCE_ALPHABET, 11)); - pb.varint( - 5, - (time::OffsetDateTime::now_utc().unix_timestamp() as u64) - .saturating_sub(rng.gen_range(0..600_000)), - ); - pb.embedded(6, pb_e); - pb.to_base64() -} - /// Split an URL into its base string and parameter map /// /// Example: diff --git a/src/util/visitor_data.rs b/src/util/visitor_data.rs new file mode 100644 index 0000000..ac2bd13 --- /dev/null +++ b/src/util/visitor_data.rs @@ -0,0 +1,176 @@ +use std::sync::{atomic::AtomicU32, Arc, RwLock}; + +use once_cell::sync::Lazy; +use rand::Rng; +use regex::Regex; +use reqwest::{header, Client}; + +use crate::{ + client::YOUTUBE_MUSIC_HOME_URL, + error::{Error, ExtractionError}, + util, +}; + +/// To increase privacy and possibly circumvent rate limits, RustyPipe uses multiple +/// visitor data IDs. These are held in this cache object. +/// +/// On instantiation, the cache is empty, so for the first requests new visitor data IDs +/// have to be requested. For subsequent requests a random ID from the cache is picked. +/// After req_limit requests, a new token is requested asynchronously and added to the cache +/// to prevent the IDs from being overused. +/// +/// The cache holds a maximum of 100 visitor data IDs. If more are added, the oldest ones +/// are evicted. +#[derive(Clone)] +pub struct VisitorDataCache { + inner: Arc, +} + +struct VisitorDataCacheRef { + req_counter: AtomicU32, + visitor_data: RwLock>, + http: Client, +} + +static VISITOR_DATA_REGEX: Lazy = + Lazy::new(|| Regex::new(r#""visitorData":"([\w\d_\-%]+?)""#).unwrap()); +/// Number of requests after which a new token is requested +const REQ_LIMIT: u32 = 10; +/// Maximum size of the cache (-1) +const MAX_SIZE: usize = 99; + +impl VisitorDataCache { + pub fn new(http: Client) -> Self { + Self { + inner: VisitorDataCacheRef { + req_counter: Default::default(), + visitor_data: Default::default(), + http, + } + .into(), + } + } + + async fn get_visitor_data(&self) -> Result { + tracing::debug!("getting YT visitor data"); + let resp = self + .inner + .http + .get(YOUTUBE_MUSIC_HOME_URL) + .header(header::ORIGIN, YOUTUBE_MUSIC_HOME_URL) + .header(header::REFERER, YOUTUBE_MUSIC_HOME_URL) + .send() + .await?; + + let vdata = resp + .headers() + .get_all(header::SET_COOKIE) + .iter() + .find_map(|c| { + if let Ok(cookie) = c.to_str() { + if let Some(after) = cookie.strip_prefix("__Secure-YEC=") { + return after + .split_once(';') + .map(|s| s.0.to_owned()) + .filter(|s| !s.is_empty()); + } + } + None + }); + + match vdata { + Some(vdata) => Ok(vdata), + None => { + if resp.status().is_success() { + // Extract visitor data from html + let html = resp.text().await?; + + util::get_cg_from_regex(&VISITOR_DATA_REGEX, &html, 1).ok_or(Error::Extraction( + ExtractionError::InvalidData( + "Could not find visitor data on html page".into(), + ), + )) + } else { + Err(Error::Extraction(ExtractionError::InvalidData( + format!("Could not get visitor data, status: {}", resp.status()).into(), + ))) + } + } + } + } + + pub async fn new_visitor_data(&self) -> Result { + self.inner + .req_counter + .store(0, std::sync::atomic::Ordering::SeqCst); + let vd = self.get_visitor_data().await.unwrap(); + let mut vds = self.inner.visitor_data.write().unwrap(); + for _ in 0..(vds.len().saturating_sub(MAX_SIZE)) { + let rem = vds.remove(0); + tracing::debug!("visitor data {rem} removed from cache"); + } + vds.push(vd.to_owned()); + tracing::debug!("visitor data {} added to cache ({} ids)", vd, vds.len()); + Ok(vd) + } + + pub async fn get(&self) -> Result { + // Request new visitor data in the background every 10 requests + if self + .inner + .req_counter + .fetch_add(1, std::sync::atomic::Ordering::SeqCst) + >= REQ_LIMIT + { + let nc = self.clone(); + tokio::spawn(async move { nc.new_visitor_data().await }); + } + + { + let vds = self.inner.visitor_data.read().unwrap(); + if !vds.is_empty() { + let mut rng = rand::thread_rng(); + let vd = vds[rng.gen_range(0..vds.len())].to_owned(); + tracing::debug!("visitor data {vd} picked from cache"); + return Ok(vd); + } + } + // Fetch new visitor data if the cache is empty + self.new_visitor_data().await + } +} + +#[cfg(test)] +mod tests { + use std::time::Duration; + + use crate::client::DEFAULT_UA; + + use super::*; + + use tracing_test::traced_test; + + #[tokio::test] + #[traced_test] + async fn get_visitor_data() { + let cache = + VisitorDataCache::new(Client::builder().user_agent(DEFAULT_UA).build().unwrap()); + // Get initial visitor data + let v1 = cache.get().await.unwrap(); + + // Run as many request as necessary to fetch second visitor data + for _ in 0..=REQ_LIMIT { + let got = cache.get().await.unwrap(); + assert_eq!(got, v1); + } + + // Second visitor data does not arrive instantly, request immediately after returns the first data + let vds_len = cache.inner.visitor_data.read().unwrap().len(); + assert_eq!(vds_len, 1); + + // Wait for the second visitor data to arrive + tokio::time::sleep(Duration::from_millis(1000)).await; + let vds_len = cache.inner.visitor_data.read().unwrap().len(); + assert_eq!(vds_len, 2); + } +} From 92340056f868007beccb64e9e26eb39abc40f7aa Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 2 Feb 2025 17:49:50 +0100 Subject: [PATCH 113/191] fix: download audio with dolby codec --- downloader/src/error.rs | 4 ++-- downloader/src/lib.rs | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/downloader/src/error.rs b/downloader/src/error.rs index 8970dd4..9e9d84c 100644 --- a/downloader/src/error.rs +++ b/downloader/src/error.rs @@ -25,8 +25,8 @@ pub enum DownloadError { #[error("Progressive download error: {0}")] Progressive(Cow<'static, str>), /// Video could not be downloaded because of invalid player data - #[error("input error: {0}")] - Input(Cow<'static, str>), + #[error("source error: {0}")] + Source(Cow<'static, str>), /// Download target already exists #[error("file {0} already exists")] Exists(PathBuf), diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 7bcbdd1..6bf238d 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -801,9 +801,9 @@ impl DownloadQuery { if video.is_none() && audio.is_none() { if player_data.drm.is_some() { - return Err(DownloadError::Input("video is DRM-protected".into())); + return Err(DownloadError::Source("video is DRM-protected".into())); } - return Err(DownloadError::Input("no stream found".into())); + return Err(DownloadError::Source("no stream found".into())); } let extension = match video { @@ -812,7 +812,9 @@ impl DownloadQuery { Some(audio) => match audio.codec { AudioCodec::Mp4a => "m4a", AudioCodec::Opus => "opus", - _ => return Err(DownloadError::Input("unknown audio codec".into())), + AudioCodec::Ac3 => "ac3", + AudioCodec::Ec3 => "eac3", + _ => return Err(DownloadError::Source("unknown audio codec".into())), }, None => unreachable!(), }, @@ -903,7 +905,7 @@ impl DownloadQuery { // Tag audio file #[cfg(feature = "audiotag")] - if self.dl.i.audio_tag && video.is_none() { + if self.dl.i.audio_tag && video.is_none() && matches!(extension, "m4a" | "opus") { let (details, track) = match details { Some(d) => (d, self.dl.i.rp.query().music_details(&self.video.id).await?), None => { From b90a252a5e1bf05a5294168b0ec16a73cbb88f42 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 3 Feb 2025 02:41:17 +0100 Subject: [PATCH 114/191] feat: add support for rustypipe-botguard to get PO tokens --- .forgejo/workflows/ci.yaml | 7 ++ .gitignore | 1 + Cargo.toml | 2 +- cli/README.md | 4 +- cli/src/main.rs | 14 +-- codegen/src/abtest.rs | 2 +- downloader/src/error.rs | 4 +- downloader/src/lib.rs | 18 ++-- notes/AB_Tests.md | 6 +- notes/po_token.md | 2 +- src/client/mod.rs | 187 ++++++++++++++++++++++++++++++------- src/client/player.rs | 105 +++++++++++++++------ src/error.rs | 17 +++- src/model/mod.rs | 10 +- src/util/visitor_data.rs | 27 ++++-- tests/youtube.rs | 7 +- 16 files changed, 313 insertions(+), 100 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 3f6ec46..4598aa8 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -24,6 +24,13 @@ jobs: with: cache-on-failure: "true" + - name: Download rustypipe-botguard + run: | + TARGET=$(rustc --version --verbose | grep "host:" | sed -e 's/^host: //') + curl -SsL -o rustypipe-botguard.gz "https://thetadev.de/dl/rustypipe-botguard-${TARGET}.gz" + sudo gunzip -c rustypipe-botguard.gz > /usr/local/bin/rustypipe-botguard + sudo chmod +x /usr/local/bin/rustypipe-botguard + - name: 📎 Clippy run: cargo clippy --all --tests --features=rss,indicatif,audiotag -- -D warnings diff --git a/.gitignore b/.gitignore index 3a5faf8..3e0f26a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ rustypipe_reports rustypipe_cache*.json +bg_snapshot.bin diff --git a/Cargo.toml b/Cargo.toml index 7289aa7..efc8ce3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -99,7 +99,7 @@ fancy-regex.workspace = true thiserror.workspace = true url.workspace = true reqwest = { workspace = true, features = ["json", "gzip", "brotli"] } -tokio = { workspace = true, features = ["macros", "time"] } +tokio = { workspace = true, features = ["macros", "time", "process"] } serde.workspace = true serde_json.workspace = true serde_with.workspace = true diff --git a/cli/README.md b/cli/README.md index d69164b..1a6513d 100644 --- a/cli/README.md +++ b/cli/README.md @@ -75,7 +75,7 @@ videos can be downloaded in parallel for improved performance. ## `vdata`: Get visitor data -You can use the vdata command to get a new visitor data cookie. This feature may come in +You can use the vdata command to get a new visitor data ID. This feature may come in handy for testing and reproducing A/B tests. ## `releases` Get YouTube Music new releases @@ -130,7 +130,7 @@ Fetch a list of all the items saved in your YouTube/YouTube Music profile. and `ALL_PROXY` - **Logging:** You can change the log level with the `RUST_LOG` environment variable, it is set to `info` by default -- **Visitor data:** A custom visitor data cookie can be used with the `--vdata` flag +- **Visitor data:** A custom visitor data ID can be used with the `--vdata` flag - **Authentication:** Use the commands `rustypipe login` and `rustypipe login --cookie` to log into your Google account using either OAuth or YouTube cookies. With the `--auth` flag you can use authentication for any request. diff --git a/cli/src/main.rs b/cli/src/main.rs index 8c9a41e..c3dd816 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -19,8 +19,8 @@ use rustypipe::{ model::{ richtext::{RichText, ToPlaintext}, traits::YtEntity, - ArtistId, Comment, MusicSearchResult, TrackItem, TrackType, UrlTarget, Verification, - YouTubeItem, + ArtistId, AudioCodec, Comment, MusicSearchResult, TrackItem, TrackType, UrlTarget, + Verification, YouTubeItem, }, param::{search_filter, ChannelVideoTab, Country, Language, StreamFilter}, report::FileReporter, @@ -45,7 +45,7 @@ struct Cli { /// Always generate a report (used for debugging) #[clap(long, global = true)] report: bool, - /// YouTube visitor data cookie + /// YouTube visitor data ID #[clap(long, global = true)] vdata: Option, /// YouTube content language @@ -299,7 +299,7 @@ enum Commands { #[clap(long)] pretty: bool, }, - /// Get a YouTube visitor data cookie + /// Get a YouTube visitor data ID Vdata, /// Log in using your Google account Login { @@ -925,7 +925,9 @@ async fn run() -> anyhow::Result<()> { let mut filter = StreamFilter::new(); if let Some(res) = resolution { if res == 0 { - filter = filter.no_video(); + filter = filter + .no_video() + .audio_codecs([AudioCodec::Mp4a, AudioCodec::Opus]); } else { filter = filter.video_max_res(res); } @@ -1716,7 +1718,7 @@ async fn run() -> anyhow::Result<()> { } } Commands::Vdata => { - let vd = rp.query().get_visitor_data().await?; + let vd = rp.query().get_visitor_data(true).await?; println!("{vd}"); } Commands::Login { diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index 22c0b0a..91aaf5e 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -94,7 +94,7 @@ pub async fn run_test( let rp = rp.clone(); let pb = pb.clone(); async move { - let visitor_data = rp.query().get_visitor_data().await.unwrap(); + let visitor_data = rp.query().get_visitor_data(true).await.unwrap(); let query = rp.query().visitor_data(&visitor_data); let is_present = match ab { ABTest::AttributedTextDescription => attributed_text_description(&query).await, diff --git a/downloader/src/error.rs b/downloader/src/error.rs index 9e9d84c..c9ad088 100644 --- a/downloader/src/error.rs +++ b/downloader/src/error.rs @@ -13,8 +13,8 @@ pub enum DownloadError { #[error("http error: {0}")] Http(#[from] reqwest::Error), /// 403 error trying to download video - #[error("YouTube returned 403 error")] - Forbidden(ClientType), + #[error("YouTube returned 403 error; visitor_data={}", .1.as_deref().unwrap_or_default())] + Forbidden(ClientType, Option), /// File IO error #[error(transparent)] Io(#[from] std::io::Error), diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 6bf238d..29f5469 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -21,7 +21,7 @@ use rand::Rng; use regex::Regex; use reqwest::{header, Client, StatusCode, Url}; use rustypipe::{ - client::{ClientType, RustyPipe, DEFAULT_PLAYER_CLIENT_ORDER}, + client::{ClientType, RustyPipe}, model::{ traits::{FileFormat, YtEntity}, AudioCodec, TrackItem, VideoCodec, VideoPlayer, @@ -698,9 +698,9 @@ impl DownloadQuery { .await { Ok(res) => return Ok(res), - Err(DownloadError::Forbidden(c)) => { + Err(DownloadError::Forbidden(c, vd)) => { failed_client = Some(c); - DownloadError::Forbidden(c) + DownloadError::Forbidden(c, vd) } Err(DownloadError::Http(e)) => { if !e.is_timeout() { @@ -770,7 +770,7 @@ impl DownloadQuery { .as_ref() .or(self.dl.i.client_types.as_ref()) .map(Vec::as_slice) - .unwrap_or(DEFAULT_PLAYER_CLIENT_ORDER), + .unwrap_or(q.player_client_order()), ); // If the last download failed, try another client if possible @@ -885,7 +885,14 @@ impl DownloadQuery { .map_err(|e| { if let DownloadError::Http(e) = &e { if e.status() == Some(StatusCode::FORBIDDEN) { - return DownloadError::Forbidden(player_data.client_type); + // 403 errors may occur due to bad visitor data IDs + if let Some(vd) = &player_data.visitor_data { + q.remove_visitor_data(vd); + } + return DownloadError::Forbidden( + player_data.client_type, + player_data.visitor_data.clone(), + ); } } e @@ -1410,7 +1417,6 @@ async fn download_chunks_by_param( )); } - tracing::debug!("Retrieving chunks..."); let mut stream = res.bytes_stream(); while let Some(item) = stream.next().await { // Retrieve chunk. diff --git a/notes/AB_Tests.md b/notes/AB_Tests.md index 0a73315..c85156a 100644 --- a/notes/AB_Tests.md +++ b/notes/AB_Tests.md @@ -3,12 +3,12 @@ When YouTube introduces a new feature, it does so gradually. When a user creates a new session, YouTube decided randomly which new features should be enabled. -YouTube sessions are identified by the visitor data cookie. This cookie is sent with +YouTube sessions are identified by the visitor data ID. This cookie is sent with every API request using the `context.client.visitor_data` JSON parameter. It is also returned in the `responseContext.visitorData` response parameter and stored as the `__SECURE-YEC` cookie. -By sending the same visitor data cookie, A/B tests can be reproduced, which is important +By sending the same visitor data ID, A/B tests can be reproduced, which is important for testing alternative YouTube clients. This page lists all A/B tests that were encountered while maintaining the RustyPipe @@ -381,7 +381,7 @@ YouTube also changed the way the full discography page is fetched, surprisingly it easier for alternative clients. The discography page now has its own content ID in the format of `MPAD` (Music Page Artist Discography). This page can be fetched with a regular browse request without requiring parameters to be parsed or a -visitor data cookie to be set, as it was the case with the old system. +visitor data ID to be set, as it was the case with the old system. **OLD** diff --git a/notes/po_token.md b/notes/po_token.md index 26064e6..f85ec16 100644 --- a/notes/po_token.md +++ b/notes/po_token.md @@ -16,7 +16,7 @@ The pot token is base64-formatted and usually starts with a M `MnToZ2brHmyo0ehfKtK_EWUq60dPYDXksNX_UsaniM_Uj6zbtiIZujCHY02hr7opxB_n3XHetJQCBV9cnNHovuhvDqrjfxsKR-sjn-eIxqv3qOZKphvyDpQzlYBnT2AXK41R-ti6iPonrvlvKIASNmYX2lhsEg==` -The token is generated from YouTubes Botguard script. The token is bound to the visitor data cookie +The token is generated from YouTubes Botguard script. The token is bound to the visitor data ID used to fetch the player data. This feature has been A/B-tested for a few weeks. During that time, refetching the player in case diff --git a/src/client/mod.rs b/src/client/mod.rs index f9462cb..07817c0 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -25,6 +25,7 @@ mod video_details; mod channel_rss; use std::collections::HashMap; +use std::ffi::OsString; use std::path::PathBuf; use std::sync::{Arc, RwLock}; use std::{borrow::Cow, fmt::Debug, time::Duration}; @@ -97,6 +98,13 @@ impl ClientType { fn needs_deobf(self) -> bool { !matches!(self, ClientType::Ios) } + + fn needs_po_token(self) -> bool { + matches!( + self, + ClientType::Desktop | ClientType::DesktopMusic | ClientType::Mobile + ) + } } /// YouTube context request parameter @@ -317,7 +325,7 @@ pub(crate) const DEFAULT_UA: &str = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit pub(crate) const MOBILE_UA: &str = "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.135 Mobile Safari/537.36"; pub(crate) const TV_UA: &str = "Mozilla/5.0 (SMART-TV; Linux; Tizen 5.0) AppleWebKit/538.1 (KHTML, like Gecko) Version/5.0 NativeTVAds Safari/538.1"; -const CONSENT_COOKIE: &str = "SOCS=CAISAiAD"; +pub(crate) const CONSENT_COOKIE: &str = "SOCS=CAISAiAD"; const YOUTUBEI_V1_URL: &str = "https://www.youtube.com/youtubei/v1/"; const YOUTUBEI_V1_GAPIS_URL: &str = "https://youtubei.googleapis.com/youtubei/v1/"; @@ -352,13 +360,6 @@ const OAUTH_SCOPES: &str = "http://gdata.youtube.com https://www.googleapis.com/ static CLIENT_VERSION_REGEX: Lazy = Lazy::new(|| Regex::new(r#""INNERTUBE_CONTEXT_CLIENT_VERSION":"([\w\d\._-]+?)""#).unwrap()); -/// Default order of client types when fetching player data -/// -/// The order may change in the future in case YouTube applies changes to their -/// platform that disable a client or make it less reliable. -pub const DEFAULT_PLAYER_CLIENT_ORDER: &[ClientType] = - &[ClientType::Ios, ClientType::Tv, ClientType::Android]; - /// The RustyPipe client used to access YouTube's API /// /// RustyPipe uses an [`Arc`] internally, so if you are using the client @@ -378,6 +379,7 @@ struct RustyPipeRef { default_opts: RustyPipeOpts, user_agent: Cow<'static, str>, visitor_data_cache: VisitorDataCache, + botguard: Option, } #[derive(Clone)] @@ -399,6 +401,12 @@ pub struct RustyPipeBuilder { user_agent: Option, default_opts: RustyPipeOpts, storage_dir: Option, + botguard_bin: DefaultOpt, +} + +struct BotguardCfg { + program: OsString, + snapshot_file: PathBuf, } enum DefaultOpt { @@ -415,6 +423,13 @@ impl DefaultOpt { DefaultOpt::Default => Some(f()), } } + fn or_default_opt Option>(self, f: F) -> Option { + match self { + DefaultOpt::Some(x) => Some(x), + DefaultOpt::None => None, + DefaultOpt::Default => f(), + } + } } /// # RustyPipe query @@ -477,7 +492,7 @@ impl DefaultOpt { /// /// ## Options /// -/// You can set the language, country and visitor data cookie for individual requests. +/// You can set the language, country and visitor data ID for individual requests. /// /// ``` /// # use rustypipe::client::RustyPipe; @@ -626,6 +641,7 @@ impl RustyPipeBuilder { n_http_retries: 2, user_agent: None, storage_dir: None, + botguard_bin: DefaultOpt::Default, } } @@ -690,12 +706,25 @@ impl RustyPipeBuilder { let visitor_data_cache = VisitorDataCache::new(http.clone()); + let botguard_bin = self.botguard_bin.or_default_opt(|| { + let n = OsString::from("rustypipe-botguard"); + let out = std::process::Command::new(&n) + .arg("--version") + .output() + .ok()?; + if out.status.success() { + Some(n) + } else { + None + } + }); + Ok(RustyPipe { inner: Arc::new(RustyPipeRef { http, storage, reporter: self.reporter.or_default(|| { - let mut report_dir = storage_dir; + let mut report_dir = storage_dir.clone(); report_dir.push(DEFAULT_REPORT_DIR); Box::new(FileReporter::new(report_dir)) }), @@ -709,6 +738,14 @@ impl RustyPipeBuilder { default_opts: self.default_opts, user_agent, visitor_data_cache, + botguard: botguard_bin.map(|program| { + let mut snapshot_file = storage_dir; + snapshot_file.push("bg_snapshot.bin"); + BotguardCfg { + program, + snapshot_file, + } + }), }), }) } @@ -868,14 +905,14 @@ impl RustyPipeBuilder { self } - /// Set the YouTube visitor data cookie + /// Set the YouTube visitor data ID /// /// YouTube assigns a session cookie to each user which is used for personalized /// recommendations. By default, RustyPipe does not send this cookie to preserve /// user privacy. For requests that mandatate the cookie, a new one is requested /// for every query. /// - /// This option allows you to manually set the visitor data cookie of your client, + /// This option allows you to manually set the visitor data ID of your client, /// allowing you to get personalized recommendations or reproduce A/B tests. /// /// Note that YouTube has a rate limit on the number of requests from a single @@ -888,7 +925,7 @@ impl RustyPipeBuilder { self } - /// Set the YouTube visitor data cookie to an optional value + /// Set the YouTube visitor data ID to an optional value /// /// see also [`RustyPipeBuilder::visitor_data`] /// @@ -898,6 +935,26 @@ impl RustyPipeBuilder { self.default_opts.visitor_data = visitor_data.map(S::into); self } + + /// Disable RustyPipe Botguard + /// + /// By default, RustyPipe uses the `rustypipe-botguard` binary if it is available. If you want to + /// use RustyPipe without Botguard, you can disable it. + pub fn no_botguard(mut self) -> Self { + self.botguard_bin = DefaultOpt::None; + self + } + + /// Enable RustyPipe Botguard using the given binary + /// + /// Botguard is required to generate PO tokens for accessing streams on browser-based clients. + /// By default, RustyPipe uses the `rustypipe-botguard` binary if it is available. + /// + /// More information: + pub fn botguard_bin>(mut self, botguard_bin: S) -> Self { + self.botguard_bin = DefaultOpt::Some(botguard_bin.into()); + self + } } impl Default for RustyPipe { @@ -1191,17 +1248,6 @@ impl RustyPipe { } } - /// Request a new visitor data cookie from YouTube - /// - /// Since the cookie is shared between YT and YTM and the YTM page loads faster, - /// we request that. - /// - /// Sometimes YouTube does not set the `__Secure-YEC` cookie. In this case, the - /// visitor data is extracted from the html page. - async fn get_visitor_data(&self) -> Result { - self.inner.visitor_data_cache.new_visitor_data().await - } - /// Get a new device code for logging into YouTube pub async fn user_auth_get_code(&self) -> Result { tracing::debug!("getting OAuth user code"); @@ -1618,14 +1664,14 @@ impl RustyPipeQuery { self } - /// Set the YouTube visitor data cookie + /// Set the YouTube visitor data ID /// /// YouTube assigns a session cookie to each user which is used for personalized /// recommendations. By default, RustyPipe does not send this cookie to preserve /// user privacy. For requests that mandatate the cookie, a new one is requested /// for every query. /// - /// This option allows you to manually set the visitor data cookie of your query, + /// This option allows you to manually set the visitor data ID of your query, /// allowing you to get personalized recommendations or reproduce A/B tests. /// /// Note that YouTube has a rate limit on the number of requests from a single @@ -1636,7 +1682,7 @@ impl RustyPipeQuery { self } - /// Set the YouTube visitor data cookie to an optional value + /// Set the YouTube visitor data ID to an optional value /// /// see also [`RustyPipeQuery::visitor_data`] #[must_use] @@ -1845,7 +1891,7 @@ impl RustyPipeQuery { /// - `ctype`: Client type (`Desktop`, `DesktopMusic`, `Android`, ...) /// - `method`: HTTP method /// - `endpoint`: YouTube API endpoint (`https://www.youtube.com/youtubei/v1/?key=...`) - /// - `visitor_data`: YouTube visitor data cookie + /// - `visitor_data`: YouTube visitor data ID async fn request_builder( &self, ctype: ClientType, @@ -1987,14 +2033,75 @@ impl RustyPipeQuery { Some(format!("SAPISIDHASH {time_now}_{sapisidhash_hex}")) } - /// Get a YouTube visitor data cookie, which is necessary for certain requests - pub async fn get_visitor_data(&self) -> Result { + /// Get a YouTube visitor data ID, which is necessary for certain requests + pub async fn get_visitor_data(&self, force_new: bool) -> Result { + if force_new { + return self + .client + .inner + .visitor_data_cache + .new_visitor_data() + .await; + } + match &self.opts.visitor_data { Some(vd) => Ok(vd.clone()), - None => self.client.get_visitor_data().await, + None => self.client.inner.visitor_data_cache.get().await, } } + /// Remove a YouTube visitor data ID from the cache so it is not used again + pub fn remove_visitor_data(&self, visitor_data: &str) { + self.client.inner.visitor_data_cache.remove(visitor_data); + } + + /// Get PO tokens + async fn get_po_tokens(&self, idents: &[&str]) -> Result, Error> { + let bg = self + .client + .inner + .botguard + .as_ref() + .ok_or(Error::Extraction(ExtractionError::Botguard( + "not enabled".into(), + )))?; + let cmd = tokio::process::Command::new(&bg.program) + .arg("--snapshot-file") + .arg(&bg.snapshot_file) + .arg("--") + .args(idents) + .output() + .await + .map_err(|e| Error::Extraction(ExtractionError::Botguard(e.to_string().into())))?; + if !cmd.status.success() { + return Err(Error::Extraction(ExtractionError::Botguard( + String::from_utf8_lossy(&cmd.stderr).into_owned().into(), + ))); + } + + let output = String::from_utf8(cmd.stdout) + .map_err(|e| Error::Extraction(ExtractionError::Botguard(e.to_string().into())))?; + let tokens = output + .split_whitespace() + .take(idents.len()) + .map(str::to_owned) + .collect::>(); + if tokens.len() != idents.len() { + return Err(Error::Extraction(ExtractionError::Botguard( + "too few tokens returned".into(), + ))); + } + tracing::debug!("generated PO token"); + Ok(tokens) + } + + /// Get a PO token + pub async fn get_po_token>(self, ident: S) -> Result { + self.get_po_tokens(&[ident.as_ref()]) + .await + .map(|res| res.into_iter().next().unwrap()) + } + async fn yt_request_attempt + Debug, M>( &self, request: &Request, @@ -2128,6 +2235,7 @@ impl RustyPipeQuery { client_type: ctype, artist: ctx_src.artist, authenticated: self.opts.auth.unwrap_or_default(), + session_po_token: ctx_src.session_po_token, }; let request = self @@ -2284,6 +2392,7 @@ struct MapRespCtx<'a> { client_type: ClientType, artist: Option, authenticated: bool, + session_po_token: Option<&'a str>, } /// Options to give to the mapper when making requests; @@ -2294,6 +2403,7 @@ struct MapRespOptions<'a> { deobf: Option<&'a DeobfData>, artist: Option, unlocalized: bool, + session_po_token: Option<&'a str>, } #[allow(clippy::needless_lifetimes)] @@ -2309,6 +2419,7 @@ impl<'a> MapRespCtx<'a> { client_type: ClientType::Desktop, artist: None, authenticated: false, + session_po_token: None, } } } @@ -2370,11 +2481,23 @@ mod tests { #[tokio::test] async fn get_visitor_data() { let rp = RustyPipe::new(); - let visitor_data = rp.get_visitor_data().await.unwrap(); + let visitor_data = rp.query().get_visitor_data(true).await.unwrap(); assert!( visitor_data.starts_with("Cg") && visitor_data.len() > 23, "invalid visitor data: {visitor_data}" ); } + + #[tokio::test] + async fn get_po_token() { + let rp = RustyPipe::builder().build().unwrap(); + let ident = "Cgt4eDYyVVJveGQtbyiLyvu8BjIKCgJERRIEEgAgKw=="; + let po_token = rp.query().get_po_token(ident).await.unwrap(); + + let token_bts = data_encoding::BASE64URL + .decode(po_token.as_bytes()) + .unwrap(); + assert_eq!(token_bts.len(), ident.len() + 74); + } } diff --git a/src/client/player.rs b/src/client/player.rs index 2b39339..ab1cdc1 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -26,7 +26,6 @@ use super::{ player::{self, Format}, }, ClientType, MapRespCtx, MapRespOptions, MapResponse, MapResult, RustyPipeQuery, - DEFAULT_PLAYER_CLIENT_ORDER, }; #[derive(Debug, Serialize)] @@ -41,6 +40,9 @@ struct QPlayer<'a> { content_check_ok: bool, /// Probably refers to allowing sensitive content, too racy_check_ok: bool, + /// Botguard data + #[serde(skip_serializing_if = "Option::is_none")] + service_integrity_dimensions: Option, } #[derive(Debug, Serialize)] @@ -70,10 +72,16 @@ struct QDrmLicense<'a> { drm_video_feature: &'a str, } +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +struct ServiceIntegrity { + po_token: String, +} + impl RustyPipeQuery { /// Get YouTube player data (video/audio streams + basic metadata) pub async fn player + Debug>(&self, video_id: S) -> Result { - self.player_from_clients(video_id, DEFAULT_PLAYER_CLIENT_ORDER) + self.player_from_clients(video_id, self.player_client_order()) .await } @@ -142,28 +150,46 @@ impl RustyPipeQuery { client_type: ClientType, ) -> Result { let video_id = video_id.as_ref(); - let mut deobf = None; - let request_body = if client_type.needs_deobf() { - deobf = Some(self.client.get_deobf_data().await?); - QPlayer { - playback_context: Some(QPlaybackContext { - content_playback_context: QContentPlaybackContext { - signature_timestamp: &deobf.as_ref().unwrap().sts, - referer: format!("https://www.youtube.com/watch?v={video_id}"), - }, - }), - video_id, - content_check_ok: true, - racy_check_ok: true, - } - } else { - QPlayer { - playback_context: None, - video_id, - content_check_ok: true, - racy_check_ok: true, + let visitor_data = self.get_visitor_data(false).await?; + + let (deobf, (service_integrity_dimensions, session_po_token)) = tokio::try_join!( + async { + if client_type.needs_deobf() { + Ok::<_, Error>(Some(self.client.get_deobf_data().await?)) + } else { + Ok(None) + } + }, + async { + if client_type.needs_po_token() { + let mut po_tokens = self + .get_po_tokens(&[video_id, &visitor_data]) + .await? + .into_iter(); + let po_token = po_tokens.next().unwrap(); + let session_po_token = po_tokens.next().unwrap(); + + Ok((Some(ServiceIntegrity { po_token }), Some(session_po_token))) + } else { + Ok((None, None)) + } } + )?; + + let playback_context = deobf.as_ref().map(|deobf| QPlaybackContext { + content_playback_context: QContentPlaybackContext { + signature_timestamp: &deobf.sts, + referer: format!("https://www.youtube.com/watch?v={video_id}"), + }, + }); + + let request_body = QPlayer { + playback_context, + video_id, + content_check_ok: true, + racy_check_ok: true, + service_integrity_dimensions, }; self.execute_request_ctx::( @@ -173,14 +199,28 @@ impl RustyPipeQuery { "player", &request_body, MapRespOptions { + visitor_data: Some(&visitor_data), deobf: deobf.as_ref(), unlocalized: true, + session_po_token: session_po_token.as_deref(), ..Default::default() }, ) .await } + /// Get the default order of client types when fetching player data + /// + /// The order may change in the future in case YouTube applies changes to their + /// platform that disable a client or make it less reliable. + pub fn player_client_order(&self) -> &'static [ClientType] { + if self.client.inner.botguard.is_some() { + &[ClientType::Desktop, ClientType::Ios, ClientType::Tv] + } else { + &[ClientType::Ios, ClientType::Tv] + } + } + /// Get a license to play back DRM protected videos /// /// Requires authentication (either via OAuth or cookies). @@ -250,6 +290,7 @@ impl MapResponse for response::Player { "country" => Some(UnavailabilityReason::Geoblocked), "version" | "websites" => Some(UnavailabilityReason::UnsupportedClient), "bot" => Some(UnavailabilityReason::IpBan), + "later." => Some(UnavailabilityReason::TryAgain), _ => None, }) .unwrap_or_default(); @@ -327,7 +368,7 @@ impl MapResponse for response::Player { }; let streams = if !is_live { - let mut mapper = StreamsMapper::new(ctx.deobf)?; + let mut mapper = StreamsMapper::new(ctx.deobf, ctx.session_po_token)?; mapper.map_streams(streaming_data.formats); mapper.map_streams(streaming_data.adaptive_formats); let mut res = mapper.output()?; @@ -442,8 +483,9 @@ impl MapResponse for response::Player { } } -struct StreamsMapper { +struct StreamsMapper<'a> { deobf: Option, + session_po_token: Option<&'a str>, streams: Streams, warnings: Vec, /// First stream mapping error @@ -461,8 +503,11 @@ struct Streams { audio_streams: Vec, } -impl StreamsMapper { - fn new(deobf_data: Option<&DeobfData>) -> Result { +impl<'a> StreamsMapper<'a> { + fn new( + deobf_data: Option<&DeobfData>, + session_po_token: Option<&'a str>, + ) -> Result { let deobf = match deobf_data { Some(deobf_data) => Some(Deobfuscator::new(deobf_data)?), None => None, @@ -470,6 +515,7 @@ impl StreamsMapper { Ok(Self { deobf, + session_po_token, streams: Streams::default(), warnings: Vec::new(), first_err: None, @@ -609,6 +655,10 @@ impl StreamsMapper { }?; self.deobf_nsig(&mut url_params)?; + if let Some(pot) = self.session_po_token { + url_params.insert("pot".to_owned(), pot.to_owned()); + } + let url = Url::parse_with_params(url_base.as_str(), url_params.iter()) .map_err(|_| ExtractionError::InvalidData("could not combine URL".into()))?; @@ -880,6 +930,7 @@ mod tests { client_type, artist: None, authenticated: false, + session_po_token: None, }) .unwrap(); @@ -905,7 +956,7 @@ mod tests { #[test] fn cipher_to_url() { let signature_cipher = "s=w%3DAe%3DA6aDNQLkViKS7LOm9QtxZJHKwb53riq9qEFw-ecBWJCAiA%3DcEg0tn3dty9jEHszfzh4Ud__bg9CEHVx4ix-7dKsIPAhIQRw8JQ0qOA&sp=sig&url=https://rr5---sn-h0jelnez.googlevideo.com/videoplayback%3Fexpire%3D1659376413%26ei%3Dvb7nYvH5BMK8gAfBj7ToBQ%26ip%3D2003%253Ade%253Aaf06%253A6300%253Ac750%253A1b77%253Ac74a%253A80e3%26id%3Do-AB_BABwrXZJN428ZwDxq5ScPn2AbcGODnRlTVhCQ3mj2%26itag%3D251%26source%3Dyoutube%26requiressl%3Dyes%26mh%3DhH%26mm%3D31%252C26%26mn%3Dsn-h0jelnez%252Csn-4g5ednsl%26ms%3Dau%252Conr%26mv%3Dm%26mvi%3D5%26pl%3D37%26initcwndbps%3D1588750%26spc%3DlT-Khi831z8dTejFIRCvCEwx_6romtM%26vprv%3D1%26mime%3Daudio%252Fwebm%26ns%3Db_Mq_qlTFcSGlG9RpwpM9xQH%26gir%3Dyes%26clen%3D3781277%26dur%3D229.301%26lmt%3D1655510291473933%26mt%3D1659354538%26fvip%3D5%26keepalive%3Dyes%26fexp%3D24001373%252C24007246%26c%3DWEB%26rbqsm%3Dfr%26txp%3D4532434%26n%3Dd2g6G2hVqWIXxedQ%26sparams%3Dexpire%252Cei%252Cip%252Cid%252Citag%252Csource%252Crequiressl%252Cspc%252Cvprv%252Cmime%252Cns%252Cgir%252Cclen%252Cdur%252Clmt%26lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%26lsig%3DAG3C_xAwRQIgCKCGJ1iu4wlaGXy3jcJyU3inh9dr1FIfqYOZEG_MdmACIQCbungkQYFk7EhD6K2YvLaHFMjKOFWjw001_tLb0lPDtg%253D%253D"; - let mut mapper = StreamsMapper::new(Some(&DEOBF_DATA)).unwrap(); + let mut mapper = StreamsMapper::new(Some(&DEOBF_DATA), None).unwrap(); let url = mapper .map_url(&None, &Some(signature_cipher.to_owned())) .unwrap() diff --git a/src/error.rs b/src/error.rs index 92460c6..b211904 100644 --- a/src/error.rs +++ b/src/error.rs @@ -58,6 +58,9 @@ pub enum ExtractionError { /// Error deobfuscating YouTube's URL signatures #[error("deobfuscation error: {0}")] Deobfuscation(Cow<'static, str>), + /// Error generating Botguard tokens + #[error("botguard error: {0}")] + Botguard(Cow<'static, str>), /// YouTube returned data that does not match the queried ID /// /// Specifically YouTube may return this video , @@ -102,6 +105,8 @@ pub enum UnavailabilityReason { OfflineLivestream, /// YouTube banned your IP address from accessing the platform without an account IpBan, + /// Video temporarily unavailable (rate limit) + TryAgain, /// Video cant be played for other reasons #[default] Unplayable, @@ -120,6 +125,7 @@ impl Display for UnavailabilityReason { UnavailabilityReason::MembersOnly => f.write_str("members-only"), UnavailabilityReason::OfflineLivestream => f.write_str("offline stream"), UnavailabilityReason::IpBan => f.write_str("ip-ban"), + UnavailabilityReason::TryAgain => f.write_str("try again"), UnavailabilityReason::Unplayable => f.write_str("unplayable"), } } @@ -220,7 +226,13 @@ impl Error { Ok(status) => status.is_server_error() || status == StatusCode::TOO_MANY_REQUESTS, Err(_) => false, }, - Self::Extraction(ExtractionError::InvalidData(_)) => true, + Self::Extraction( + ExtractionError::InvalidData(_) + | ExtractionError::Unavailable { + reason: UnavailabilityReason::TryAgain, + .. + }, + ) => true, _ => false, } } @@ -232,9 +244,10 @@ impl ExtractionError { matches!( self, ExtractionError::Unavailable { - reason: UnavailabilityReason::UnsupportedClient, + reason: UnavailabilityReason::UnsupportedClient | UnavailabilityReason::TryAgain, .. } | ExtractionError::WrongResult(_) + | ExtractionError::Botguard(_) ) } diff --git a/src/model/mod.rs b/src/model/mod.rs index e265595..94b05a6 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -149,7 +149,7 @@ pub struct VideoPlayer { pub drm: Option, /// Client type with which the player was fetched pub client_type: ClientType, - /// YouTube visitor data cookie + /// YouTube visitor data ID pub visitor_data: Option, } @@ -615,7 +615,7 @@ pub struct Playlist { pub last_update: Option, /// Textual last update date pub last_update_txt: Option, - /// YouTube visitor data cookie + /// YouTube visitor data ID pub visitor_data: Option, } @@ -683,7 +683,7 @@ pub struct VideoDetails { /// /// Is initially empty. pub latest_comments: Paginator, - /// YouTube visitor data cookie + /// YouTube visitor data ID pub visitor_data: Option, } @@ -820,7 +820,7 @@ pub struct Channel { pub has_shorts: bool, /// Does the channel have a *Live* tab? pub has_live: bool, - /// YouTube visitor data cookie + /// YouTube visitor data ID pub visitor_data: Option, /// Content fetched from the channel pub content: T, @@ -905,7 +905,7 @@ pub struct SearchResult { /// for the corrected search term and displays it on top of the /// search results page. pub corrected_query: Option, - /// YouTube visitor data cookie + /// YouTube visitor data ID pub visitor_data: Option, } diff --git a/src/util/visitor_data.rs b/src/util/visitor_data.rs index ac2bd13..4831b6a 100644 --- a/src/util/visitor_data.rs +++ b/src/util/visitor_data.rs @@ -6,7 +6,7 @@ use regex::Regex; use reqwest::{header, Client}; use crate::{ - client::YOUTUBE_MUSIC_HOME_URL, + client::{CONSENT_COOKIE, YOUTUBE_MUSIC_HOME_URL}, error::{Error, ExtractionError}, util, }; @@ -35,9 +35,9 @@ struct VisitorDataCacheRef { static VISITOR_DATA_REGEX: Lazy = Lazy::new(|| Regex::new(r#""visitorData":"([\w\d_\-%]+?)""#).unwrap()); /// Number of requests after which a new token is requested -const REQ_LIMIT: u32 = 10; -/// Maximum size of the cache (-1) -const MAX_SIZE: usize = 99; +const REQ_LIMIT: u32 = 50; +/// Maximum size of the cache +const MAX_SIZE: usize = 20; impl VisitorDataCache { pub fn new(http: Client) -> Self { @@ -59,6 +59,7 @@ impl VisitorDataCache { .get(YOUTUBE_MUSIC_HOME_URL) .header(header::ORIGIN, YOUTUBE_MUSIC_HOME_URL) .header(header::REFERER, YOUTUBE_MUSIC_HOME_URL) + .header(header::COOKIE, CONSENT_COOKIE) .send() .await?; @@ -100,10 +101,11 @@ impl VisitorDataCache { } pub async fn new_visitor_data(&self) -> Result { + let vd = self.get_visitor_data().await.unwrap(); + self.inner .req_counter - .store(0, std::sync::atomic::Ordering::SeqCst); - let vd = self.get_visitor_data().await.unwrap(); + .store(0, std::sync::atomic::Ordering::Relaxed); let mut vds = self.inner.visitor_data.write().unwrap(); for _ in 0..(vds.len().saturating_sub(MAX_SIZE)) { let rem = vds.remove(0); @@ -119,9 +121,12 @@ impl VisitorDataCache { if self .inner .req_counter - .fetch_add(1, std::sync::atomic::Ordering::SeqCst) + .fetch_add(1, std::sync::atomic::Ordering::Relaxed) >= REQ_LIMIT { + self.inner + .req_counter + .store(0, std::sync::atomic::Ordering::Relaxed); let nc = self.clone(); tokio::spawn(async move { nc.new_visitor_data().await }); } @@ -138,6 +143,14 @@ impl VisitorDataCache { // Fetch new visitor data if the cache is empty self.new_visitor_data().await } + + pub fn remove(&self, visitor_data: &str) { + let mut vds = self.inner.visitor_data.write().unwrap(); + if let Some(i) = vds.iter().position(|x| x == visitor_data) { + vds.remove(i); + tracing::debug!("visitor data {visitor_data} removed from cache"); + } + } } #[cfg(test)] diff --git a/tests/youtube.rs b/tests/youtube.rs index 05226af..5867637 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -139,11 +139,8 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) assert_eq!(audio.format, AudioFormat::Webm); assert_eq!(audio.codec, AudioCodec::Opus); - // Desktop client now requires pot token so the streams cannot be tested here - if !matches!(client_type, ClientType::Desktop | ClientType::Mobile) { - check_video_stream(video).await; - check_video_stream(audio).await; - } + check_video_stream(video).await; + check_video_stream(audio).await; } assert!(player_data.expires_in_seconds > 10000); From cddb32f190276265258c6ab45b3d43a8891c4b39 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 3 Feb 2025 02:48:54 +0100 Subject: [PATCH 115/191] feat: remove manual PO token options from downloader/cli, add new rustypipe-botguard options --- cli/README.md | 6 ++++- cli/src/main.rs | 20 +++++++++------ downloader/src/lib.rs | 57 +------------------------------------------ 3 files changed, 19 insertions(+), 64 deletions(-) diff --git a/cli/README.md b/cli/README.md index 1a6513d..e6d6c27 100644 --- a/cli/README.md +++ b/cli/README.md @@ -71,7 +71,6 @@ videos can be downloaded in parallel for improved performance. - `-c`, `--client-type` YT clients used to fetch player data (options: desktop, tv, tv-embed, android, ios; if multiple clients are specified, they are attempted in order) -- `--pot` token to circumvent bot detection ## `vdata`: Get visitor data @@ -142,6 +141,11 @@ Fetch a list of all the items saved in your YouTube/YouTube Music profile. `~/.local/share/rustypipe/rustypipe_cache.json`) - `--report-dir` Change the RustyPipe report directory location (Default: `~/.local/share/rustypipe/rustypipe_reports`) +- `--botguard-bin` Use a + [rustypipe-botguard](https://codeberg.org/ThetaDev/rustypipe-botguard) binary from the + given path for generating PO tokens +- `--no-botguard` Disable Botguard, only download videos using clients that dont require + it ### Output format diff --git a/cli/src/main.rs b/cli/src/main.rs index c3dd816..b897380 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -2,6 +2,7 @@ #![warn(clippy::todo, clippy::dbg_macro)] use std::{ + ffi::OsString, path::PathBuf, str::FromStr, sync::{atomic::AtomicUsize, Arc}, @@ -63,6 +64,12 @@ struct Cli { /// RustyPipe report folder #[clap(long, global = true)] report_dir: Option, + /// Path to rustypipe-botguard binary + #[clap(long, global = true)] + botguard_bin: Option, + /// Disable Botguard + #[clap(long, global = true)] + no_botguard: bool, } #[derive(Parser)] @@ -130,9 +137,6 @@ enum Commands { /// YT Client used to fetch player data #[clap(short, long)] client_type: Option>, - /// `pot` token to circumvent bot detection - #[clap(long)] - pot: Option, }, /// Extract video, playlist, album or channel data Get { @@ -903,6 +907,12 @@ async fn run() -> anyhow::Result<()> { if let Some(country) = cli.country { rp = rp.country(Country::from_str(&country.to_ascii_uppercase()).expect("invalid country")); } + if let Some(botguard_bin) = cli.botguard_bin { + rp = rp.botguard_bin(botguard_bin); + } + if cli.no_botguard { + rp = rp.no_botguard(); + } if cli.auth { rp = rp.authenticated(); } @@ -918,7 +928,6 @@ async fn run() -> anyhow::Result<()> { music, limit, client_type, - pot, } => { let url_target = rp.query().resolve_string(&id, false).await?; @@ -940,9 +949,6 @@ async fn run() -> anyhow::Result<()> { dl = dl.audio_tag().crop_cover(); filter = filter.no_video(); } - if let Some(pot) = pot { - dl = dl.pot(pot); - } let dl = dl.stream_filter(filter).build(); let cts = client_type.map(|c| c.into_iter().map(ClientType::from).collect::>()); diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 29f5469..fc6cf8f 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -77,7 +77,6 @@ pub struct DownloaderBuilder { #[cfg(feature = "audiotag")] crop_cover: bool, client_types: Option>, - pot: Option, } struct DownloaderInner { @@ -109,8 +108,6 @@ struct DownloaderInner { crop_cover: bool, /// Client types for fetching videos client_types: Option>, - /// Pot token to circumvent bot detection - pot: Option, } /// Download query @@ -130,8 +127,6 @@ pub struct DownloadQuery { video_format: Option, /// Client types for fetching videos client_types: Option>, - /// Pot token to circumvent bot detection - pot: Option, } /// Video to be downloaded @@ -298,7 +293,6 @@ impl Default for DownloaderBuilder { #[cfg(feature = "audiotag")] crop_cover: false, client_types: None, - pot: None, } } } @@ -417,21 +411,6 @@ impl DownloaderBuilder { self } - /// Set the `pot` token to circumvent bot detection - /// - /// YouTube has implemented the token to prevent other clients from downloading YouTube videos. - /// The token is generated using YouTube's botguard. Therefore you need a full browser environment - /// to obtain one. - /// - /// The Invidious project has created a script to extract this token: - /// - /// The `pot` token is only used for the [`ClientType::Desktop`] and [`ClientType::DesktopMusic`] clients. - #[must_use] - pub fn pot>(mut self, pot: S) -> Self { - self.pot = Some(pot.into()); - self - } - /// Create a new, configured [`Downloader`] instance pub fn build(self) -> Downloader { self.build_with_client( @@ -466,7 +445,6 @@ impl DownloaderBuilder { #[cfg(feature = "audiotag")] crop_cover: self.crop_cover, client_types: self.client_types, - pot: self.pot, }), } } @@ -501,7 +479,6 @@ impl Downloader { filter: None, video_format: None, client_types: None, - pot: None, } } @@ -652,21 +629,6 @@ impl DownloadQuery { self } - /// Set the `pot` token to circumvent bot detection - /// - /// YouTube has implemented the token to prevent other clients from downloading YouTube videos. - /// The token is generated using YouTube's botguard. Therefore you need a full browser environment - /// to obtain one. - /// - /// The Invidious project has created a script to extract this token: - /// - /// The `pot` token is only used for the [`ClientType::Desktop`] and [`ClientType::DesktopMusic`] clients. - #[must_use] - pub fn pot>(mut self, pot: S) -> Self { - self.pot = Some(pot.into()); - self - } - /// Download the video /// /// If no download path is set, the video is downloaded to the current directory @@ -787,14 +749,6 @@ impl DownloadQuery { let player_data = q.player_from_clients(&self.video.id, &client_types).await?; let user_agent = q.user_agent(player_data.client_type); - let pot = if matches!( - player_data.client_type, - ClientType::Desktop | ClientType::DesktopMusic - ) { - self.pot.as_deref().or(self.dl.i.pot.as_deref()) - } else { - None - }; // Select streams to download let (video, audio) = player_data.select_video_audio_stream(filter); @@ -877,7 +831,6 @@ impl DownloadQuery { downloads, &self.dl.i.http, &user_agent, - pot, #[cfg(feature = "indicatif")] pb.clone(), ) @@ -1156,7 +1109,6 @@ async fn download_single_file( output: &Path, http: &Client, user_agent: &str, - pot: Option<&str>, #[cfg(feature = "indicatif")] pb: Option, ) -> Result<()> { // Check if file is already downloaded @@ -1253,7 +1205,6 @@ async fn download_single_file( size.unwrap(), offset, user_agent, - pot, #[cfg(feature = "indicatif")] pb, ) @@ -1381,7 +1332,6 @@ async fn download_chunks_by_param( size: u64, offset: u64, user_agent: &str, - pot: Option<&str>, #[cfg(feature = "indicatif")] pb: Option, ) -> Result<()> { let mut offset = offset; @@ -1394,12 +1344,9 @@ async fn download_chunks_by_param( let range = get_download_range(offset, Some(size)); tracing::debug!("Fetching range {}-{}", range.start, range.end); - let mut urlp = + let urlp = Url::parse_with_params(url, [("range", &format!("{}-{}", range.start, range.end))]) .map_err(|e| DownloadError::Progressive(format!("url parsing: {e}").into()))?; - if let Some(pot) = pot { - urlp.query_pairs_mut().append_pair("pot", pot); - } let res = http .get(urlp) @@ -1449,7 +1396,6 @@ async fn download_streams( downloads: Vec, http: &Client, user_agent: &str, - pot: Option<&str>, #[cfg(feature = "indicatif")] pb: Option, ) -> Result> { stream::iter(downloads.iter().map(Ok)) @@ -1462,7 +1408,6 @@ async fn download_streams( &d.file, http, user_agent, - pot, #[cfg(feature = "indicatif")] pb, ) From ef335258b7053377e0f2240012d6a5edcec43fec Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 3 Feb 2025 02:57:40 +0100 Subject: [PATCH 116/191] ci: fix rustypipe-botguard download --- .forgejo/workflows/ci.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 4598aa8..8576b83 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -28,8 +28,9 @@ jobs: run: | TARGET=$(rustc --version --verbose | grep "host:" | sed -e 's/^host: //') curl -SsL -o rustypipe-botguard.gz "https://thetadev.de/dl/rustypipe-botguard-${TARGET}.gz" - sudo gunzip -c rustypipe-botguard.gz > /usr/local/bin/rustypipe-botguard - sudo chmod +x /usr/local/bin/rustypipe-botguard + gunzip rustypipe-botguard.gz + sudo install -Dm755 rustypipe-botguard /usr/local/bin/rustypipe-botguard + rm rustypipe-botguard - name: 📎 Clippy run: cargo clippy --all --tests --features=rss,indicatif,audiotag -- -D warnings From eed1e3da3a92a9fac60fc0aa997f8d139573baf4 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 4 Feb 2025 22:22:29 +0100 Subject: [PATCH 117/191] revert user agent --- src/client/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 07817c0..de95d09 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -321,7 +321,8 @@ impl AuthCookie { } } -pub(crate) const DEFAULT_UA: &str = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"; +pub(crate) const DEFAULT_UA: &str = + "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0"; pub(crate) const MOBILE_UA: &str = "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.135 Mobile Safari/537.36"; pub(crate) const TV_UA: &str = "Mozilla/5.0 (SMART-TV; Linux; Tizen 5.0) AppleWebKit/538.1 (KHTML, like Gecko) Version/5.0 NativeTVAds Safari/538.1"; From 29c854b20d7a6677415b1744e7ba7ecd4f594ea5 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 5 Feb 2025 13:36:32 +0100 Subject: [PATCH 118/191] fix: allow player data to be fetched without botguard --- src/client/mod.rs | 24 ++++++++++++------------ src/client/player.rs | 17 +++++++++-------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index de95d09..e78f2ff 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -2057,15 +2057,12 @@ impl RustyPipeQuery { } /// Get PO tokens - async fn get_po_tokens(&self, idents: &[&str]) -> Result, Error> { - let bg = self - .client - .inner - .botguard - .as_ref() - .ok_or(Error::Extraction(ExtractionError::Botguard( - "not enabled".into(), - )))?; + async fn get_po_tokens(&self, idents: &[&str]) -> Result>, Error> { + let bg = match self.client.inner.botguard.as_ref() { + Some(bg) => bg, + None => return Ok(None), + }; + let start = std::time::Instant::now(); let cmd = tokio::process::Command::new(&bg.program) .arg("--snapshot-file") .arg(&bg.snapshot_file) @@ -2092,14 +2089,17 @@ impl RustyPipeQuery { "too few tokens returned".into(), ))); } - tracing::debug!("generated PO token"); - Ok(tokens) + tracing::debug!("generated PO token (took {:?})", start.elapsed()); + Ok(Some(tokens)) } /// Get a PO token pub async fn get_po_token>(self, ident: S) -> Result { self.get_po_tokens(&[ident.as_ref()]) - .await + .await? + .ok_or(Error::Extraction(ExtractionError::Botguard( + "not enabled".into(), + ))) .map(|res| res.into_iter().next().unwrap()) } diff --git a/src/client/player.rs b/src/client/player.rs index ab1cdc1..ef9aaf0 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -128,13 +128,13 @@ impl RustyPipeQuery { } Err(e) => return Err(e), } - last_e = Some(Error::Extraction(e)); } else { return Err(Error::Extraction(e)); } } else if !e.switch_client() { return Err(Error::Extraction(e)); } + last_e = Some(Error::Extraction(e)); } Err(e) => return Err(e), } @@ -163,14 +163,15 @@ impl RustyPipeQuery { }, async { if client_type.needs_po_token() { - let mut po_tokens = self - .get_po_tokens(&[video_id, &visitor_data]) - .await? - .into_iter(); - let po_token = po_tokens.next().unwrap(); - let session_po_token = po_tokens.next().unwrap(); + if let Some(po_tokens) = self.get_po_tokens(&[video_id, &visitor_data]).await? { + let mut po_tokens = po_tokens.into_iter(); + let po_token = po_tokens.next().unwrap(); + let session_po_token = po_tokens.next().unwrap(); - Ok((Some(ServiceIntegrity { po_token }), Some(session_po_token))) + Ok((Some(ServiceIntegrity { po_token }), Some(session_po_token))) + } else { + Ok((None, None)) + } } else { Ok((None, None)) } From b72b501b6dbcf4333b24cd80e7c8c61b0c21ec91 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 5 Feb 2025 15:55:32 +0100 Subject: [PATCH 119/191] feat: add session po token cache --- cli/src/main.rs | 6 + src/client/mod.rs | 122 ++++++++++++++---- src/client/player.rs | 67 ++++++---- ...layer__tests__map_player_data_android.snap | 1 + ...layer__tests__map_player_data_desktop.snap | 1 + ...__tests__map_player_data_desktopmusic.snap | 1 + ...t__player__tests__map_player_data_ios.snap | 1 + ...nt__player__tests__map_player_data_tv.snap | 1 + src/model/mod.rs | 6 + src/util/visitor_data.rs | 84 ++++++++++-- testfiles/player_model/drm.json | 1 + testfiles/player_model/hdr.json | 1 + testfiles/player_model/multilanguage.json | 1 + testfiles/player_model/surround.json | 1 + tests/youtube.rs | 1 + 15 files changed, 234 insertions(+), 61 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index b897380..7b5d15a 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -70,6 +70,9 @@ struct Cli { /// Disable Botguard #[clap(long, global = true)] no_botguard: bool, + /// Enable caching for session-bound PO tokens + #[clap(long, global = true)] + po_token_cache: bool, } #[derive(Parser)] @@ -913,6 +916,9 @@ async fn run() -> anyhow::Result<()> { if cli.no_botguard { rp = rp.no_botguard(); } + if cli.po_token_cache { + rp = rp.po_token_cache(); + } if cli.auth { rp = rp.authenticated(); } diff --git a/src/client/mod.rs b/src/client/mod.rs index e78f2ff..3d7ab9f 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -403,11 +403,22 @@ pub struct RustyPipeBuilder { default_opts: RustyPipeOpts, storage_dir: Option, botguard_bin: DefaultOpt, + po_token_cache: bool, } struct BotguardCfg { program: OsString, snapshot_file: PathBuf, + po_token_cache: bool, +} + +/// Proof-of-origin token +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct PoToken { + /// PO token value + pub po_token: String, + /// Date until which the token is valid + pub valid_until: OffsetDateTime, } enum DefaultOpt { @@ -643,6 +654,7 @@ impl RustyPipeBuilder { user_agent: None, storage_dir: None, botguard_bin: DefaultOpt::Default, + po_token_cache: false, } } @@ -705,7 +717,7 @@ impl RustyPipeBuilder { }) .collect::>(); - let visitor_data_cache = VisitorDataCache::new(http.clone()); + let visitor_data_cache = VisitorDataCache::new(http.clone(), 50, 20); let botguard_bin = self.botguard_bin.or_default_opt(|| { let n = OsString::from("rustypipe-botguard"); @@ -745,6 +757,7 @@ impl RustyPipeBuilder { BotguardCfg { program, snapshot_file, + po_token_cache: self.po_token_cache, } }), }), @@ -941,6 +954,7 @@ impl RustyPipeBuilder { /// /// By default, RustyPipe uses the `rustypipe-botguard` binary if it is available. If you want to /// use RustyPipe without Botguard, you can disable it. + #[must_use] pub fn no_botguard(mut self) -> Self { self.botguard_bin = DefaultOpt::None; self @@ -952,10 +966,24 @@ impl RustyPipeBuilder { /// By default, RustyPipe uses the `rustypipe-botguard` binary if it is available. /// /// More information: + #[must_use] pub fn botguard_bin>(mut self, botguard_bin: S) -> Self { self.botguard_bin = DefaultOpt::Some(botguard_bin.into()); self } + + /// Enable caching for session-bound PO tokens + /// + /// By default, RustyPipe calls Botguard for every player request to fetch both a + /// content-bound and a session-bound PO token. + /// + /// With caching enabled, the session-bound PO tokens are stored and reused. + /// Content-bound PO tokens are not used (they are not mandatory at the moment). + #[must_use] + pub fn po_token_cache(mut self) -> Self { + self.po_token_cache = true; + self + } } impl Default for RustyPipe { @@ -2057,11 +2085,14 @@ impl RustyPipeQuery { } /// Get PO tokens - async fn get_po_tokens(&self, idents: &[&str]) -> Result>, Error> { - let bg = match self.client.inner.botguard.as_ref() { - Some(bg) => bg, - None => return Ok(None), - }; + async fn get_po_tokens(&self, idents: &[&str]) -> Result<(Vec, OffsetDateTime), Error> { + let bg = self + .client + .inner + .botguard + .as_ref() + .ok_or(ExtractionError::Botguard("not enabled".into()))?; + let start = std::time::Instant::now(); let cmd = tokio::process::Command::new(&bg.program) .arg("--snapshot-file") @@ -2079,28 +2110,62 @@ impl RustyPipeQuery { let output = String::from_utf8(cmd.stdout) .map_err(|e| Error::Extraction(ExtractionError::Botguard(e.to_string().into())))?; - let tokens = output - .split_whitespace() - .take(idents.len()) - .map(str::to_owned) - .collect::>(); - if tokens.len() != idents.len() { - return Err(Error::Extraction(ExtractionError::Botguard( - "too few tokens returned".into(), - ))); + + let mut words = output.split_whitespace(); + let mut tokens = Vec::with_capacity(idents.len()); + for _ in 0..idents.len() { + tokens.push( + words + .next() + .ok_or(ExtractionError::Botguard("too few tokens returned".into()))? + .to_owned(), + ); } + + let mut valid_until = None; + for word in words { + if let Some((k, v)) = word.split_once('=') { + if k == "valid_until" { + valid_until = Some( + v.parse::() + .ok() + .and_then(|x| OffsetDateTime::from_unix_timestamp(x).ok()) + .ok_or(ExtractionError::Botguard( + format!("invalid validity date: {v}").into(), + ))?, + ); + } + } + } + tracing::debug!("generated PO token (took {:?})", start.elapsed()); - Ok(Some(tokens)) + Ok(( + tokens, + valid_until.unwrap_or_else(|| OffsetDateTime::now_utc() + time::Duration::hours(12)), + )) + } + + async fn get_session_po_token(&self, visitor_data: &str) -> Result { + if let Some(po_token) = self.client.inner.visitor_data_cache.get_pot(visitor_data) { + return Ok(po_token); + } + + let po_token = self.get_po_token(visitor_data).await?; + self.client + .inner + .visitor_data_cache + .store_pot(visitor_data, po_token.clone()); + Ok(po_token) } /// Get a PO token - pub async fn get_po_token>(self, ident: S) -> Result { - self.get_po_tokens(&[ident.as_ref()]) - .await? - .ok_or(Error::Extraction(ExtractionError::Botguard( - "not enabled".into(), - ))) - .map(|res| res.into_iter().next().unwrap()) + pub async fn get_po_token>(&self, ident: S) -> Result { + let (tokens, valid_until) = self.get_po_tokens(&[ident.as_ref()]).await?; + + Ok(PoToken { + po_token: tokens.into_iter().next().unwrap(), + valid_until, + }) } async fn yt_request_attempt + Debug, M>( @@ -2393,7 +2458,7 @@ struct MapRespCtx<'a> { client_type: ClientType, artist: Option, authenticated: bool, - session_po_token: Option<&'a str>, + session_po_token: Option, } /// Options to give to the mapper when making requests; @@ -2404,7 +2469,7 @@ struct MapRespOptions<'a> { deobf: Option<&'a DeobfData>, artist: Option, unlocalized: bool, - session_po_token: Option<&'a str>, + session_po_token: Option, } #[allow(clippy::needless_lifetimes)] @@ -2497,8 +2562,13 @@ mod tests { let po_token = rp.query().get_po_token(ident).await.unwrap(); let token_bts = data_encoding::BASE64URL - .decode(po_token.as_bytes()) + .decode(po_token.po_token.as_bytes()) .unwrap(); assert_eq!(token_bts.len(), ident.len() + 74); + assert!( + po_token.valid_until > OffsetDateTime::now_utc() + time::Duration::minutes(30), + "valid until {}", + po_token.valid_until + ) } } diff --git a/src/client/player.rs b/src/client/player.rs index ef9aaf0..9dcbae1 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -7,6 +7,7 @@ use std::{ use once_cell::sync::Lazy; use regex::Regex; use serde::Serialize; +use time::OffsetDateTime; use url::Url; use crate::{ @@ -25,7 +26,7 @@ use super::{ self, player::{self, Format}, }, - ClientType, MapRespCtx, MapRespOptions, MapResponse, MapResult, RustyPipeQuery, + ClientType, MapRespCtx, MapRespOptions, MapResponse, MapResult, PoToken, RustyPipeQuery, }; #[derive(Debug, Serialize)] @@ -142,6 +143,34 @@ impl RustyPipeQuery { Err(last_e.unwrap_or(Error::Other("no clients".into()))) } + async fn get_player_po_token( + &self, + video_id: &str, + visitor_data: &str, + ) -> Result<(Option, Option), Error> { + if let Some(bg) = &self.client.inner.botguard { + if bg.po_token_cache { + let session_token = self.get_session_po_token(visitor_data).await?; + Ok((None, Some(session_token))) + } else { + let (po_tokens, valid_until) = + self.get_po_tokens(&[video_id, visitor_data]).await?; + let mut po_tokens = po_tokens.into_iter(); + let po_token = po_tokens.next().unwrap(); + let session_po_token = po_tokens.next().unwrap(); + Ok(( + Some(ServiceIntegrity { po_token }), + Some(PoToken { + po_token: session_po_token, + valid_until, + }), + )) + } + } else { + Ok((None, None)) + } + } + /// Get YouTube player data (video/audio streams + basic metadata) using the specified client #[tracing::instrument(skip(self), level = "error")] pub async fn player_from_client + Debug>( @@ -150,7 +179,6 @@ impl RustyPipeQuery { client_type: ClientType, ) -> Result { let video_id = video_id.as_ref(); - let visitor_data = self.get_visitor_data(false).await?; let (deobf, (service_integrity_dimensions, session_po_token)) = tokio::try_join!( @@ -163,15 +191,7 @@ impl RustyPipeQuery { }, async { if client_type.needs_po_token() { - if let Some(po_tokens) = self.get_po_tokens(&[video_id, &visitor_data]).await? { - let mut po_tokens = po_tokens.into_iter(); - let po_token = po_tokens.next().unwrap(); - let session_po_token = po_tokens.next().unwrap(); - - Ok((Some(ServiceIntegrity { po_token }), Some(session_po_token))) - } else { - Ok((None, None)) - } + self.get_player_po_token(video_id, &visitor_data).await } else { Ok((None, None)) } @@ -203,7 +223,7 @@ impl RustyPipeQuery { visitor_data: Some(&visitor_data), deobf: deobf.as_ref(), unlocalized: true, - session_po_token: session_po_token.as_deref(), + session_po_token, ..Default::default() }, ) @@ -369,7 +389,10 @@ impl MapResponse for response::Player { }; let streams = if !is_live { - let mut mapper = StreamsMapper::new(ctx.deobf, ctx.session_po_token)?; + let mut mapper = StreamsMapper::new( + ctx.deobf, + ctx.session_po_token.as_ref().map(|t| t.po_token.as_str()), + )?; mapper.map_streams(streaming_data.formats); mapper.map_streams(streaming_data.adaptive_formats); let mut res = mapper.output()?; @@ -461,6 +484,12 @@ impl MapResponse for response::Player { drm_session_id, }); + let mut valid_until = OffsetDateTime::now_utc() + + time::Duration::seconds(streaming_data.expires_in_seconds.into()); + if let Some(pot) = &ctx.session_po_token { + valid_until = valid_until.min(pot.valid_until); + } + Ok(MapResult { c: VideoPlayer { details: video_info, @@ -469,6 +498,7 @@ impl MapResponse for response::Player { audio_streams: streams.audio_streams, subtitles, expires_in_seconds: streaming_data.expires_in_seconds, + valid_until, hls_manifest_url: streaming_data.hls_manifest_url, dash_manifest_url: streaming_data.dash_manifest_url, preview_frames, @@ -940,17 +970,8 @@ mod tests { "deserialization/mapping warnings: {:?}", map_res.warnings ); - let is_desktop = name == "desktop" || name == "desktopmusic"; insta::assert_ron_snapshot!(format!("map_player_data_{name}"), map_res.c, { - ".details.publish_date" => insta::dynamic_redaction(move |value, _path| { - if is_desktop { - assert!(value.as_str().unwrap().starts_with("2019-05-30T00:00:00")); - "2019-05-30T00:00:00" - } else { - assert_eq!(value, insta::internals::Content::None); - "~" - } - }), + ".valid_until" => "[date]" }); } diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_android.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_android.snap index 047d489..56cbc1c 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_android.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_android.snap @@ -462,6 +462,7 @@ VideoPlayer( ), ], expires_in_seconds: 21540, + valid_until: "[date]", hls_manifest_url: None, dash_manifest_url: Some("https://manifest.googlevideo.com/api/manifest/dash/expire/1659481355/ei/q1jpYtOPEYSBgQeHmqbwAQ/ip/2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e/id/a4fbddf14c6649b4/source/youtube/requiressl/yes/playback_host/rr5---sn-h0jeenek.googlevideo.com/mh/mQ/mm/31%2C29/mn/sn-h0jeenek%2Csn-h0jelnez/ms/au%2Crdu/mv/m/mvi/5/pl/37/hfr/1/as/fmp4_audio_clear%2Cfmp4_sd_hd_clear/initcwndbps/1527500/vprv/1/mt/1659459429/fvip/4/itag_bl/376%2C377%2C384%2C385%2C612%2C613%2C617%2C619%2C623%2C628%2C655%2C656%2C660%2C662%2C666%2C671/keepalive/yes/fexp/24001373%2C24007246/itag/0/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Chfr%2Cas%2Cvprv%2Citag/sig/AOq0QJ8wRAIgMm4a_MIHA3YUszKeruSy3exs5JwNjJAyLAwxL0yPdNMCIANb9GDMSTp_NT-PPhbvYMwRULJ5a9BO6MYD9FuWprC1/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRQIgETSOwhwWVMy7gmrFXZlJu655ToLzSwOEsT16oRyrWhACIQDkvOEw1fImz5omu4iVIRNFe-z-JC9v8WUyx281dW2NOw%3D%3D"), preview_frames: [ diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktop.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktop.snap index e0feb06..d140467 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktop.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktop.snap @@ -585,6 +585,7 @@ VideoPlayer( ), ], expires_in_seconds: 21540, + valid_until: "[date]", hls_manifest_url: None, dash_manifest_url: Some("https://manifest.googlevideo.com/api/manifest/dash/expire/1659481355/ei/q1jpYtq3BJCX1gKVyJGQDg/ip/2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e/id/a4fbddf14c6649b4/source/youtube/requiressl/yes/playback_host/rr4---sn-h0jelnez.googlevideo.com/mh/mQ/mm/31%2C26/mn/sn-h0jelnez%2Csn-4g5edn6k/ms/au%2Conr/mv/m/mvi/4/pl/37/hfr/all/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cwebm2_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm2_sd_hd_clear/initcwndbps/1513750/spc/lT-KhrZGE2opztWyVdAtyUNlb8dXPDs/vprv/1/mt/1659459429/fvip/4/keepalive/yes/fexp/24001373%2C24007246/itag/0/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Chfr%2Cas%2Cspc%2Cvprv%2Citag/sig/AOq0QJ8wRgIhAPEjHK19PKVHqQeia6WF4qubuMYk74LGi8F8lk5ZMPkFAiEAsaB2pKQWBvuPnNUnbdQXHc-izgsHJUP793woC2xNJlg%3D/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRQIgOY4xu4H9wqPVZ7vF2i0hFcOnqrur1XGoA43a7ZEuuSUCIQCyPxBKXUQrKFmknNEGpX5GSWySKgMw_xHBikWpKpKwvg%3D%3D"), preview_frames: [ diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktopmusic.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktopmusic.snap index ac93ebf..47fbb1e 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktopmusic.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_desktopmusic.snap @@ -397,6 +397,7 @@ VideoPlayer( ), ], expires_in_seconds: 21540, + valid_until: "[date]", hls_manifest_url: None, dash_manifest_url: Some("https://manifest.googlevideo.com/api/manifest/dash/expire/1659487474/ei/knDpYub6BojEgAf6jbLgDw/ip/2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e/id/a4fbddf14c6649b4/source/youtube/requiressl/yes/playback_host/rr5---sn-h0jeenek.googlevideo.com/mh/mQ/mm/31%2C29/mn/sn-h0jeenek%2Csn-h0jelnez/ms/au%2Crdu/mv/m/mvi/5/pl/37/hfr/all/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cwebm2_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm2_sd_hd_clear/initcwndbps/1418750/spc/lT-Khox4YuJQ2wmH79zYALRvsWTPCUc/vprv/1/mt/1659465669/fvip/4/keepalive/yes/fexp/24001373%2C24007246/itag/0/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Chfr%2Cas%2Cspc%2Cvprv%2Citag/sig/AOq0QJ8wRAIgErABhAEaoKHUDu9dDbpxE_8gR4b8WWAi61fnu8UKnuICIEYrEKcHvqHdO4V3R7cvSGwi_HGH34IlQsKbziOfMBov/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRQIgJxHmH0Sxo3cY_pW_ZzQ3hW9-7oz6K_pZWcUdrDDQ2sQCIQDJYNINQwLgKelgbO3CZYx7sMxdUAFpWdokmRBQ77vwvw%3D%3D"), preview_frames: [ diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_ios.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_ios.snap index 8bdb80f..94d9f38 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_ios.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_ios.snap @@ -168,6 +168,7 @@ VideoPlayer( ), ], expires_in_seconds: 21540, + valid_until: "[date]", hls_manifest_url: Some("https://manifest.googlevideo.com/api/manifest/hls_variant/expire/1659481355/ei/q1jpYq-xHs7NgQev0bfwAQ/ip/2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e/id/a4fbddf14c6649b4/source/youtube/requiressl/yes/playback_host/rr4---sn-h0jelnez.googlevideo.com/mh/mQ/mm/31%2C29/mn/sn-h0jelnez%2Csn-h0jeenek/ms/au%2Crdu/mv/m/mvi/4/pl/37/hfr/1/demuxed/1/tts_caps/1/maudio/1/initcwndbps/1513750/vprv/1/go/1/mt/1659459429/fvip/5/nvgoi/1/short_key/1/ncsapi/1/keepalive/yes/fexp/24001373%2C24007246/dover/13/itag/0/playlist_type/DVR/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Chfr%2Cdemuxed%2Ctts_caps%2Cmaudio%2Cvprv%2Cgo%2Citag%2Cplaylist_type/sig/AOq0QJ8wRQIhAIYnEHvIgJtJ8hehAXNtVY3qsgsq_GdOhWf2hkJZe6lCAiBxaRY_nubYp6hBizcAg_KFkKnkG-t2XYLRQ5wGdM3AjA%3D%3D/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRgIhAM_91Kk_0VLuSsR6nLCY7LdtWojyRAzXSScd_X9ShRROAiEA1AF4VY04F71NsAI8_j3iqjuXnWL9s6NoXHq7P8-bHx8%3D/file/index.m3u8"), dash_manifest_url: None, preview_frames: [ diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap index 5f54102..b7d5a29 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap @@ -517,6 +517,7 @@ VideoPlayer( ), ], expires_in_seconds: 21540, + valid_until: "[date]", hls_manifest_url: None, dash_manifest_url: None, preview_frames: [ diff --git a/src/model/mod.rs b/src/model/mod.rs index 94b05a6..0912f74 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -136,7 +136,13 @@ pub struct VideoPlayer { /// List of subtitles pub subtitles: Vec, /// Lifetime of the stream URLs in seconds + /// + /// **Note:** use the `valid_until` value to check if the stream URLs are still valid, + /// since it takes PO token lifetime into account. pub expires_in_seconds: u32, + /// Date until which the stream URLs are valid + #[serde(with = "time::serde::rfc3339")] + pub valid_until: OffsetDateTime, /// HLS manifest URL (for livestreams) pub hls_manifest_url: Option, /// Dash manifest URL (for livestreams) diff --git a/src/util/visitor_data.rs b/src/util/visitor_data.rs index 4831b6a..52e6d14 100644 --- a/src/util/visitor_data.rs +++ b/src/util/visitor_data.rs @@ -1,12 +1,16 @@ -use std::sync::{atomic::AtomicU32, Arc, RwLock}; +use std::{ + collections::HashMap, + sync::{atomic::AtomicU32, Arc, RwLock}, +}; use once_cell::sync::Lazy; use rand::Rng; use regex::Regex; use reqwest::{header, Client}; +use time::OffsetDateTime; use crate::{ - client::{CONSENT_COOKIE, YOUTUBE_MUSIC_HOME_URL}, + client::{PoToken, CONSENT_COOKIE, YOUTUBE_MUSIC_HOME_URL}, error::{Error, ExtractionError}, util, }; @@ -29,23 +33,27 @@ pub struct VisitorDataCache { struct VisitorDataCacheRef { req_counter: AtomicU32, visitor_data: RwLock>, + session_potoken: RwLock>, http: Client, + /// Number of requests after which a new token is requested + req_limit: u32, + /// Maximum size of the cache + max_size: usize, } static VISITOR_DATA_REGEX: Lazy = Lazy::new(|| Regex::new(r#""visitorData":"([\w\d_\-%]+?)""#).unwrap()); -/// Number of requests after which a new token is requested -const REQ_LIMIT: u32 = 50; -/// Maximum size of the cache -const MAX_SIZE: usize = 20; impl VisitorDataCache { - pub fn new(http: Client) -> Self { + pub fn new(http: Client, req_limit: u32, max_size: usize) -> Self { Self { inner: VisitorDataCacheRef { req_counter: Default::default(), visitor_data: Default::default(), + session_potoken: Default::default(), http, + req_limit, + max_size: max_size - 1, } .into(), } @@ -107,8 +115,12 @@ impl VisitorDataCache { .req_counter .store(0, std::sync::atomic::Ordering::Relaxed); let mut vds = self.inner.visitor_data.write().unwrap(); - for _ in 0..(vds.len().saturating_sub(MAX_SIZE)) { + for _ in 0..(vds.len().saturating_sub(self.inner.max_size)) { let rem = vds.remove(0); + { + let mut pots = self.inner.session_potoken.write().unwrap(); + pots.remove(&rem); + } tracing::debug!("visitor data {rem} removed from cache"); } vds.push(vd.to_owned()); @@ -122,7 +134,7 @@ impl VisitorDataCache { .inner .req_counter .fetch_add(1, std::sync::atomic::Ordering::Relaxed) - >= REQ_LIMIT + >= self.inner.req_limit { self.inner .req_counter @@ -148,9 +160,26 @@ impl VisitorDataCache { let mut vds = self.inner.visitor_data.write().unwrap(); if let Some(i) = vds.iter().position(|x| x == visitor_data) { vds.remove(i); + let mut pots = self.inner.session_potoken.write().unwrap(); + pots.remove(visitor_data); tracing::debug!("visitor data {visitor_data} removed from cache"); } } + + pub fn store_pot(&self, visitor_data: &str, po_token: PoToken) { + let mut pots = self.inner.session_potoken.write().unwrap(); + pots.insert(visitor_data.to_owned(), po_token); + } + + pub fn get_pot(&self, visitor_data: &str) -> Option { + let pots = self.inner.session_potoken.read().unwrap(); + if let Some(entry) = pots.get(visitor_data) { + if entry.valid_until > OffsetDateTime::now_utc() { + return Some(entry.clone()); + } + } + None + } } #[cfg(test)] @@ -166,13 +195,16 @@ mod tests { #[tokio::test] #[traced_test] async fn get_visitor_data() { - let cache = - VisitorDataCache::new(Client::builder().user_agent(DEFAULT_UA).build().unwrap()); + let cache = VisitorDataCache::new( + Client::builder().user_agent(DEFAULT_UA).build().unwrap(), + 2, + 2, + ); // Get initial visitor data let v1 = cache.get().await.unwrap(); // Run as many request as necessary to fetch second visitor data - for _ in 0..=REQ_LIMIT { + for _ in 0..=cache.inner.req_limit { let got = cache.get().await.unwrap(); assert_eq!(got, v1); } @@ -186,4 +218,32 @@ mod tests { let vds_len = cache.inner.visitor_data.read().unwrap().len(); assert_eq!(vds_len, 2); } + + #[tokio::test] + #[traced_test] + async fn cache_potoken() { + let cache = VisitorDataCache::new( + Client::builder().user_agent(DEFAULT_UA).build().unwrap(), + 1, + 2, + ); + let v1 = cache.get().await.unwrap(); + let pot1 = PoToken { + po_token: "pot1".to_owned(), + valid_until: OffsetDateTime::now_utc() + time::Duration::hours(1), + }; + cache.store_pot(&v1, pot1.clone()); + assert_eq!(cache.get_pot(&v1).unwrap(), pot1); + + for _ in 0..4 { + cache.get().await.unwrap(); + } + tokio::time::sleep(Duration::from_millis(1000)).await; + + { + let vd = cache.inner.visitor_data.read().unwrap(); + assert!(!vd.contains(&v1), "first token still present"); + } + assert_eq!(cache.get_pot(&v1), None); + } } diff --git a/testfiles/player_model/drm.json b/testfiles/player_model/drm.json index 6e1e2ac..2ef96c2 100644 --- a/testfiles/player_model/drm.json +++ b/testfiles/player_model/drm.json @@ -1650,6 +1650,7 @@ } ], "expires_in_seconds": 21540, + "valid_until": "2025-01-16T12:47:01Z", "hls_manifest_url": null, "dash_manifest_url": "https://manifest.googlevideo.com/api/manifest/dash/expire/1737003630/ei/Dj6IZ_uSLs3l6dsPjd_aWQ/ip/93.235.184.108/id/5c0488f533287530/source/youtube/requiressl/yes/xpc/EgVo2aDSNQ%3D%3D/playback_host/rr5---sn-h0jeener.googlevideo.com/met/1736982030%2C/mh/3d/mm/31%2C29/mn/sn-h0jeener%2Csn-h0jelnes/ms/au%2Crdu/mv/m/mvi/5/pl/26/rms/au%2Cau/tx/51357437/txs/51357435%2C51357436%2C51357437/ctier/A/as/fmp4_audio_cenc%2Cfmp4_sd_hd_cenc/pfa/5/gcr/de/initcwndbps/2801250/hightc/yes/siu/1/spc/9kzgDTo16Q_mO7TFjJcMOcNa4IBGqdJV3_zJD2blPLtGQWHzV12Pjt9HGSUEzE5EuxsT3KGLQTHgHKI/vprv/1/rqh/2/mt/1736981586/fvip/4/keepalive/yes/fexp/51326932%2C51335594%2C51353498%2C51355912%2C51384461/itag/0/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Ctx%2Ctxs%2Cctier%2Cas%2Cpfa%2Cgcr%2Chightc%2Csiu%2Cspc%2Cvprv%2Crqh%2Citag/sig/AJfQdSswRAIgRGOt6B9XX33VLI3cBW4IJBjHtjzvGSwSUz5lGrFpegsCIBSRvvj21BsdHibsMhod72dm_FCzt3VZtKP61w-r5n2-/lsparams/playback_host%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps/lsig/AGluJ3MwRQIhALUqrxIiML5XnPfd9h-nywvh8crYVxT_hobOiytW73FFAiBMWQt9t34-kNtSkoiYgyJRfl3Z1bwu6Ss8d2lOZp1ZjA%3D%3D", "preview_frames": [], diff --git a/testfiles/player_model/hdr.json b/testfiles/player_model/hdr.json index 4e75a03..887dac6 100644 --- a/testfiles/player_model/hdr.json +++ b/testfiles/player_model/hdr.json @@ -1169,6 +1169,7 @@ ], "subtitles": [], "expires_in_seconds": 21540, + "valid_until": "2025-01-16T12:47:01Z", "hls_manifest_url": null, "dash_manifest_url": null, "drm": null, diff --git a/testfiles/player_model/multilanguage.json b/testfiles/player_model/multilanguage.json index ad53247..aa89ee0 100644 --- a/testfiles/player_model/multilanguage.json +++ b/testfiles/player_model/multilanguage.json @@ -2187,6 +2187,7 @@ } ], "expires_in_seconds": 21540, + "valid_until": "2025-01-16T12:47:01Z", "hls_manifest_url": null, "dash_manifest_url": null, "preview_frames": [], diff --git a/testfiles/player_model/surround.json b/testfiles/player_model/surround.json index 8a9d3a0..7635f26 100644 --- a/testfiles/player_model/surround.json +++ b/testfiles/player_model/surround.json @@ -506,6 +506,7 @@ ], "subtitles": [], "expires_in_seconds": 21540, + "valid_until": "2025-01-16T12:47:01Z", "hls_manifest_url": null, "dash_manifest_url": null, "preview_frames": [ diff --git a/tests/youtube.rs b/tests/youtube.rs index 5867637..b5a8074 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2844,6 +2844,7 @@ fn rp(lang: Language) -> RustyPipe { .storage_dir(env!("CARGO_MANIFEST_DIR")) .lang(lang) .visitor_data_opt(vdata) + .po_token_cache() .build() .unwrap() } From 8385b87c63677f32a240679a78702f53072e517a Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 6 Feb 2025 01:41:48 +0100 Subject: [PATCH 120/191] feat: check rustypipe-botguard-api version --- src/client/mod.rs | 18 ++++++++++++++---- tests/youtube.rs | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 3d7ab9f..dfb5140 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -725,11 +725,21 @@ impl RustyPipeBuilder { .arg("--version") .output() .ok()?; - if out.status.success() { - Some(n) - } else { - None + if !out.status.success() { + return None; } + let output = String::from_utf8_lossy(&out.stdout); + let pat = "rustypipe-botguard-api "; + let pos = output.find(pat)? + pat.len(); + let pos_end = output[pos..] + .char_indices() + .find(|(_, c)| !c.is_ascii_digit()) + .map(|(p, _)| p + pos) + .unwrap_or(output.len()); + if &output[pos..pos_end] != "1" { + return None; + } + Some(n) }); Ok(RustyPipe { diff --git a/tests/youtube.rs b/tests/youtube.rs index b5a8074..140770a 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2136,7 +2136,7 @@ async fn music_search_artists(rp: RustyPipe, unlocalized: bool) { #[rstest] #[tokio::test] async fn music_search_artists_cont(rp: RustyPipe) { - let res = rp.query().music_search_artists("band").await.unwrap(); + let res = rp.query().music_search_artists("boys").await.unwrap(); assert_eq!(res.corrected_query, None); assert_next(res.items, rp.query(), 15, 2, true).await; From dfd03edfadff2657e9cfbf04e5d313ba409520ac Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 6 Feb 2025 03:12:54 +0100 Subject: [PATCH 121/191] feat: rewrite request attempt system, retry with different visitor data --- src/client/mod.rs | 124 ++++++++++++++++++++++++++++------------------ 1 file changed, 76 insertions(+), 48 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index dfb5140..c1dfc8c 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -578,12 +578,14 @@ struct ClientData { pub version: String, } -/// Result of a successful HTTP request +/// Result of a YouTube HTTP request struct RequestResult { /// Result of the deserialiation/mapping res: Result, Error>, status: StatusCode, body: String, + visitor_data: String, + request: Request, } impl CacheEntry { @@ -838,7 +840,7 @@ impl RustyPipeBuilder { self } - /// Set the number of retries for HTTP requests. + /// Set the maximum number of attempts for HTTP requests. /// /// If a HTTP requests fails because of a serverside error and retries are enabled, /// RustyPipe waits 1 second before the next attempt. @@ -849,7 +851,7 @@ impl RustyPipeBuilder { /// **Default value**: 2 #[must_use] pub fn n_http_retries(mut self, n_retries: u32) -> Self { - self.n_http_retries = n_retries; + self.n_http_retries = n_retries.max(1); self } @@ -2178,11 +2180,49 @@ impl RustyPipeQuery { }) } - async fn yt_request_attempt + Debug, M>( + async fn execute_request_attempt< + R: DeserializeOwned + MapResponse + Debug, + M, + B: Serialize + ?Sized, + >( &self, - request: &Request, - ctx: &MapRespCtx<'_>, + ctype: ClientType, + id: &str, + endpoint: &str, + body: &B, + ctx_src: &MapRespOptions<'_>, ) -> Result, Error> { + let visitor_data = match ctx_src + .visitor_data + .or(self.opts.visitor_data.as_deref()) + .map(Cow::Borrowed) + { + Some(vd) => vd, + None => self.client.inner.visitor_data_cache.get().await?.into(), + }; + + let context = self + .get_context(ctype, !ctx_src.unlocalized, &visitor_data) + .await; + let req_body = QBody { context, body }; + + let ctx = MapRespCtx { + id, + lang: self.opts.lang, + deobf: ctx_src.deobf, + visitor_data: Some(&visitor_data), + client_type: ctype, + artist: ctx_src.artist.clone(), + authenticated: self.opts.auth.unwrap_or_default(), + session_po_token: ctx_src.session_po_token.clone(), + }; + + let request = self + .request_builder(ctype, endpoint, ctx.visitor_data) + .await? + .json(&req_body) + .build()?; + let response = self .client .inner @@ -2211,7 +2251,7 @@ impl RustyPipeQuery { }) } else { match serde_json::from_str::(&body) { - Ok(deserialized) => match deserialized.map_response(ctx) { + Ok(deserialized) => match deserialized.map_response(&ctx) { Ok(mapres) => Ok(mapres), Err(e) => Err(e.into()), }, @@ -2220,18 +2260,32 @@ impl RustyPipeQuery { }; tracing::trace!("mapped response"); - Ok(RequestResult { res, status, body }) + Ok(RequestResult { + res, + status, + body, + request, + visitor_data: visitor_data.into_owned(), + }) } - #[tracing::instrument(skip_all)] - async fn yt_request + Debug, M>( + async fn execute_request_inner< + R: DeserializeOwned + MapResponse + Debug, + M, + B: Serialize + ?Sized, + >( &self, - request: &Request, - ctx: &MapRespCtx<'_>, + ctype: ClientType, + id: &str, + endpoint: &str, + body: &B, + ctx_src: &MapRespOptions<'_>, ) -> Result, Error> { let mut last_resp = None; for n in 0..=self.client.inner.n_http_retries { - let resp = self.yt_request_attempt::(request, ctx).await?; + let resp = self + .execute_request_attempt::(ctype, id, endpoint, body, ctx_src) + .await?; let err = match &resp.res { Ok(_) => return Ok(resp), @@ -2243,6 +2297,9 @@ impl RustyPipeQuery { } }; + // Remove the used visitor data from cache if the request resulted in a recoverable error + self.remove_visitor_data(&resp.visitor_data); + if n != self.client.inner.n_http_retries { let ms = util::retry_delay(n, 1000, 60000, 3); tracing::warn!( @@ -2273,7 +2330,6 @@ impl RustyPipeQuery { /// - `endpoint`: YouTube API endpoint (`https://www.youtube.com/youtubei/v1/?key=...`) /// - `body`: Serializable request body to be sent in json format /// - `ctx_src`: Context source (additional parameters for fetching and mapping, used to build the MapRespCtx) - #[allow(clippy::too_many_arguments)] async fn execute_request_ctx< R: DeserializeOwned + MapResponse + Debug, M, @@ -2289,38 +2345,10 @@ impl RustyPipeQuery { ) -> Result { tracing::debug!("getting {}({})", operation, id); - let visitor_data = match ctx_src - .visitor_data - .or(self.opts.visitor_data.as_deref()) - .map(Cow::Borrowed) - { - Some(vd) => vd, - None => self.client.inner.visitor_data_cache.get().await?.into(), - }; - - let context = self - .get_context(ctype, !ctx_src.unlocalized, &visitor_data) - .await; - let req_body = QBody { context, body }; - - let ctx = MapRespCtx { - id, - lang: self.opts.lang, - deobf: ctx_src.deobf, - visitor_data: Some(&visitor_data), - client_type: ctype, - artist: ctx_src.artist, - authenticated: self.opts.auth.unwrap_or_default(), - session_po_token: ctx_src.session_po_token, - }; - - let request = self - .request_builder(ctype, endpoint, ctx.visitor_data) - .await? - .json(&req_body) - .build()?; - - let req_res = self.yt_request::(&request, &ctx).await?; + let req_res = self + .execute_request_inner::(ctype, id, endpoint, body, &ctx_src) + .await?; + let request = req_res.request; // Uncomment to debug response text // println!("{}", &req_res.body); @@ -2352,7 +2380,7 @@ impl RustyPipeQuery { operation: &format!("{operation}({id})"), error, msgs, - deobf_data: ctx.deobf.cloned(), + deobf_data: ctx_src.deobf.cloned(), http_request: crate::report::HTTPRequest { url: request.url().as_str(), method: request.method().as_str(), @@ -2371,7 +2399,7 @@ impl RustyPipeQuery { }) .collect(), ), - req_body: serde_json::to_string(&req_body).ok(), + req_body: serde_json::to_string(&req_res.body).ok(), status: req_res.status.into(), resp_body: req_res.body, }, From b8cfe1b034a7470a9c4a587d709de7542d459091 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 6 Feb 2025 03:16:03 +0100 Subject: [PATCH 122/191] refactor!: rename n_http_retries option to n_request_attempts to be less misleading the option sets the total number of attempts, not the number of attempts after the first failure --- src/client/mod.rs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index c1dfc8c..e4f056a 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -375,7 +375,7 @@ struct RustyPipeRef { http: Client, storage: Option>, reporter: Option>, - n_http_retries: u32, + n_request_attempts: u32, cache: CacheHolder, default_opts: RustyPipeOpts, user_agent: Cow<'static, str>, @@ -397,7 +397,7 @@ struct RustyPipeOpts { pub struct RustyPipeBuilder { storage: DefaultOpt>, reporter: DefaultOpt>, - n_http_retries: u32, + n_request_attempts: u32, timeout: DefaultOpt, user_agent: Option, default_opts: RustyPipeOpts, @@ -652,7 +652,7 @@ impl RustyPipeBuilder { storage: DefaultOpt::Default, reporter: DefaultOpt::Default, timeout: DefaultOpt::Default, - n_http_retries: 2, + n_request_attempts: 2, user_agent: None, storage_dir: None, botguard_bin: DefaultOpt::Default, @@ -753,7 +753,7 @@ impl RustyPipeBuilder { report_dir.push(DEFAULT_REPORT_DIR); Box::new(FileReporter::new(report_dir)) }), - n_http_retries: self.n_http_retries, + n_request_attempts: self.n_request_attempts, cache: CacheHolder { clients: cache_clients, deobf: AsyncRwLock::new(cdata.deobf), @@ -840,18 +840,18 @@ impl RustyPipeBuilder { self } - /// Set the maximum number of attempts for HTTP requests. + /// Set the maximum number of attempts for HTTP requests (at least 1). /// /// If a HTTP requests fails because of a serverside error and retries are enabled, /// RustyPipe waits 1 second before the next attempt. /// - /// The waiting time is doubled for subsequent attempts (including a bit of + /// The wait time is doubled for subsequent attempts (including a bit of /// random jitter to be less predictable). /// /// **Default value**: 2 #[must_use] - pub fn n_http_retries(mut self, n_retries: u32) -> Self { - self.n_http_retries = n_retries.max(1); + pub fn n_request_attempts(mut self, n_retries: u32) -> Self { + self.n_request_attempts = n_retries.max(1); self } @@ -1034,7 +1034,7 @@ impl RustyPipe { /// Execute the given http request. async fn http_request(&self, request: &Request) -> Result { let mut last_resp = None; - for n in 0..=self.inner.n_http_retries { + for n in 0..=self.inner.n_request_attempts { let resp = self.inner.http.execute(request.try_clone().unwrap()).await; let err = match resp { @@ -1060,7 +1060,7 @@ impl RustyPipe { }; // Retry in case of a recoverable status code (server err, too many requests) - if n != self.inner.n_http_retries { + if n != self.inner.n_request_attempts { let ms = util::retry_delay(n, 1000, 60000, 3); tracing::warn!( "Retry attempt #{}. Error: {}. Waiting {} ms", @@ -2282,7 +2282,7 @@ impl RustyPipeQuery { ctx_src: &MapRespOptions<'_>, ) -> Result, Error> { let mut last_resp = None; - for n in 0..=self.client.inner.n_http_retries { + for n in 0..=self.client.inner.n_request_attempts { let resp = self .execute_request_attempt::(ctype, id, endpoint, body, ctx_src) .await?; @@ -2300,7 +2300,7 @@ impl RustyPipeQuery { // Remove the used visitor data from cache if the request resulted in a recoverable error self.remove_visitor_data(&resp.visitor_data); - if n != self.client.inner.n_http_retries { + if n != self.client.inner.n_request_attempts { let ms = util::retry_delay(n, 1000, 60000, 3); tracing::warn!( "Retry attempt #{}. Error: {}. Waiting {} ms", From a0d850f8e01428a73bbd66397d0dbf797b45958f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 6 Feb 2025 03:56:11 +0100 Subject: [PATCH 123/191] fix: output full request body in reports, clean up get_player_po_token --- src/client/mod.rs | 12 +++++++++-- src/client/player.rs | 48 ++++++++++++++++++++++++++------------------ 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index e4f056a..485f2a2 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -2170,7 +2170,11 @@ impl RustyPipeQuery { Ok(po_token) } - /// Get a PO token + /// Get a Proof-of-origin token + /// + /// PO tokens are used by the web-based YouTube clients for requesting player data and video streams. + /// + /// See for more information pub async fn get_po_token>(&self, ident: S) -> Result { let (tokens, valid_until) = self.get_po_tokens(&[ident.as_ref()]).await?; @@ -2399,7 +2403,11 @@ impl RustyPipeQuery { }) .collect(), ), - req_body: serde_json::to_string(&req_res.body).ok(), + req_body: request + .body() + .as_ref() + .and_then(|b| b.as_bytes()) + .map(|b| String::from_utf8_lossy(b).into_owned()), status: req_res.status.into(), resp_body: req_res.body, }, diff --git a/src/client/player.rs b/src/client/player.rs index 9dcbae1..f34ab6f 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -79,6 +79,13 @@ struct ServiceIntegrity { po_token: String, } +#[derive(Default)] +struct PlayerPoToken { + visitor_data: Option, + session_po_token: Option, + content_po_token: Option, +} + impl RustyPipeQuery { /// Get YouTube player data (video/audio streams + basic metadata) pub async fn player + Debug>(&self, video_id: S) -> Result { @@ -143,31 +150,33 @@ impl RustyPipeQuery { Err(last_e.unwrap_or(Error::Other("no clients".into()))) } - async fn get_player_po_token( - &self, - video_id: &str, - visitor_data: &str, - ) -> Result<(Option, Option), Error> { + async fn get_player_po_token(&self, video_id: &str) -> Result { if let Some(bg) = &self.client.inner.botguard { + let visitor_data = self.get_visitor_data(false).await?; if bg.po_token_cache { - let session_token = self.get_session_po_token(visitor_data).await?; - Ok((None, Some(session_token))) + let session_token = self.get_session_po_token(&visitor_data).await?; + Ok(PlayerPoToken { + visitor_data: Some(visitor_data), + session_po_token: Some(session_token), + content_po_token: None, + }) } else { let (po_tokens, valid_until) = - self.get_po_tokens(&[video_id, visitor_data]).await?; + self.get_po_tokens(&[video_id, &visitor_data]).await?; let mut po_tokens = po_tokens.into_iter(); let po_token = po_tokens.next().unwrap(); let session_po_token = po_tokens.next().unwrap(); - Ok(( - Some(ServiceIntegrity { po_token }), - Some(PoToken { + Ok(PlayerPoToken { + visitor_data: Some(visitor_data), + session_po_token: Some(PoToken { po_token: session_po_token, valid_until, }), - )) + content_po_token: Some(ServiceIntegrity { po_token }), + }) } } else { - Ok((None, None)) + Ok(PlayerPoToken::default()) } } @@ -179,9 +188,8 @@ impl RustyPipeQuery { client_type: ClientType, ) -> Result { let video_id = video_id.as_ref(); - let visitor_data = self.get_visitor_data(false).await?; - let (deobf, (service_integrity_dimensions, session_po_token)) = tokio::try_join!( + let (deobf, player_po) = tokio::try_join!( async { if client_type.needs_deobf() { Ok::<_, Error>(Some(self.client.get_deobf_data().await?)) @@ -191,9 +199,9 @@ impl RustyPipeQuery { }, async { if client_type.needs_po_token() { - self.get_player_po_token(video_id, &visitor_data).await + self.get_player_po_token(video_id).await } else { - Ok((None, None)) + Ok(PlayerPoToken::default()) } } )?; @@ -210,7 +218,7 @@ impl RustyPipeQuery { video_id, content_check_ok: true, racy_check_ok: true, - service_integrity_dimensions, + service_integrity_dimensions: player_po.content_po_token, }; self.execute_request_ctx::( @@ -220,10 +228,10 @@ impl RustyPipeQuery { "player", &request_body, MapRespOptions { - visitor_data: Some(&visitor_data), + visitor_data: player_po.visitor_data.as_deref(), deobf: deobf.as_ref(), unlocalized: true, - session_po_token, + session_po_token: player_po.session_po_token, ..Default::default() }, ) From 5f5ac65ce947e8d2c736a15add649146c04dbe24 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 6 Feb 2025 13:21:10 +0100 Subject: [PATCH 124/191] ci: download rustypipe-botguard from codeberg --- .forgejo/workflows/ci.yaml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 8576b83..e7610ed 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -27,10 +27,12 @@ jobs: - name: Download rustypipe-botguard run: | TARGET=$(rustc --version --verbose | grep "host:" | sed -e 's/^host: //') - curl -SsL -o rustypipe-botguard.gz "https://thetadev.de/dl/rustypipe-botguard-${TARGET}.gz" - gunzip rustypipe-botguard.gz - sudo install -Dm755 rustypipe-botguard /usr/local/bin/rustypipe-botguard - rm rustypipe-botguard + cd ~ + curl -SsL -o rustypipe-botguard.tar.xz "https://codeberg.org/ThetaDev/rustypipe-botguard/releases/download/v0.1.0/rustypipe-botguard-v0.1.0-${TARGET}.tar.xz" + cd /usr/local/bin + sudo tar -xJf ~/rustypipe-botguard.tar.xz + rm ~/rustypipe-botguard.tar.xz + rustypipe-botguard --version - name: 📎 Clippy run: cargo clippy --all --tests --features=rss,indicatif,audiotag -- -D warnings From 594e675b39efc5fbcdbd5e920a4d2cdee64f718e Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 6 Feb 2025 13:47:10 +0100 Subject: [PATCH 125/191] refactor!: add client_type field to DownloadError, rename cli option po-token-cache to pot-cache --- cli/README.md | 1 + cli/src/main.rs | 4 ++-- downloader/src/error.rs | 9 +++++++-- downloader/src/lib.rs | 20 +++++++++++++------- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/cli/README.md b/cli/README.md index e6d6c27..b4056c4 100644 --- a/cli/README.md +++ b/cli/README.md @@ -146,6 +146,7 @@ Fetch a list of all the items saved in your YouTube/YouTube Music profile. given path for generating PO tokens - `--no-botguard` Disable Botguard, only download videos using clients that dont require it +- `--pot-cache` Enable caching for session-bound PO tokens ### Output format diff --git a/cli/src/main.rs b/cli/src/main.rs index 7b5d15a..7f49119 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -72,7 +72,7 @@ struct Cli { no_botguard: bool, /// Enable caching for session-bound PO tokens #[clap(long, global = true)] - po_token_cache: bool, + pot_cache: bool, } #[derive(Parser)] @@ -916,7 +916,7 @@ async fn run() -> anyhow::Result<()> { if cli.no_botguard { rp = rp.no_botguard(); } - if cli.po_token_cache { + if cli.pot_cache { rp = rp.po_token_cache(); } if cli.auth { diff --git a/downloader/src/error.rs b/downloader/src/error.rs index c9ad088..d45405d 100644 --- a/downloader/src/error.rs +++ b/downloader/src/error.rs @@ -13,8 +13,13 @@ pub enum DownloadError { #[error("http error: {0}")] Http(#[from] reqwest::Error), /// 403 error trying to download video - #[error("YouTube returned 403 error; visitor_data={}", .1.as_deref().unwrap_or_default())] - Forbidden(ClientType, Option), + #[error("YouTube returned 403 error; visitor_data={}", .visitor_data.as_deref().unwrap_or_default())] + Forbidden { + /// Client type used to fetch the failed stream + client_type: ClientType, + /// Visitor data used to fetch the failed stream + visitor_data: Option, + }, /// File IO error #[error(transparent)] Io(#[from] std::io::Error), diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index fc6cf8f..8dc00c0 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -660,9 +660,15 @@ impl DownloadQuery { .await { Ok(res) => return Ok(res), - Err(DownloadError::Forbidden(c, vd)) => { - failed_client = Some(c); - DownloadError::Forbidden(c, vd) + Err(DownloadError::Forbidden { + client_type, + visitor_data, + }) => { + failed_client = Some(client_type); + DownloadError::Forbidden { + client_type, + visitor_data, + } } Err(DownloadError::Http(e)) => { if !e.is_timeout() { @@ -842,10 +848,10 @@ impl DownloadQuery { if let Some(vd) = &player_data.visitor_data { q.remove_visitor_data(vd); } - return DownloadError::Forbidden( - player_data.client_type, - player_data.visitor_data.clone(), - ); + return DownloadError::Forbidden { + client_type: player_data.client_type, + visitor_data: player_data.visitor_data.clone(), + }; } } e From 8e35358c8941301f6ebf7646a11ab22711082569 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 6 Feb 2025 14:04:01 +0100 Subject: [PATCH 126/191] feat: log failed player fetch attempts with player_from_clients --- src/client/player.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/client/player.rs b/src/client/player.rs index f34ab6f..d85394c 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -104,8 +104,9 @@ impl RustyPipeQuery { ) -> Result { let video_id = video_id.as_ref(); let mut last_e = None; + let mut clients_iter = clients.iter().peekable(); - for client in clients { + while let Some(client) = clients_iter.next() { if self.opts.auth == Some(true) && !self.auth_enabled(*client) { // If no client has auth enabled, return NoLogin error instead of "no clients" if last_e.is_none() { @@ -142,6 +143,9 @@ impl RustyPipeQuery { } else if !e.switch_client() { return Err(Error::Extraction(e)); } + if let Some(next_client) = clients_iter.peek() { + tracing::warn!("error fetching player with {client:?} client: {e}; retrying with {next_client:?} client"); + } last_e = Some(Error::Extraction(e)); } Err(e) => return Err(e), From 8297bf0234b3fc98d92f47068451ed23f5cd726e Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 6 Feb 2025 14:14:22 +0100 Subject: [PATCH 127/191] update visitor data cache docs --- src/util/visitor_data.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/util/visitor_data.rs b/src/util/visitor_data.rs index 52e6d14..b9a3d7b 100644 --- a/src/util/visitor_data.rs +++ b/src/util/visitor_data.rs @@ -23,8 +23,7 @@ use crate::{ /// After req_limit requests, a new token is requested asynchronously and added to the cache /// to prevent the IDs from being overused. /// -/// The cache holds a maximum of 100 visitor data IDs. If more are added, the oldest ones -/// are evicted. +/// The cache's maximum size is limited. If more IDs are added, the oldest ones are evicted. #[derive(Clone)] pub struct VisitorDataCache { inner: Arc, @@ -59,7 +58,8 @@ impl VisitorDataCache { } } - async fn get_visitor_data(&self) -> Result { + /// Fetch a new visitor data ID from YouTube + async fn fetch_visitor_data(&self) -> Result { tracing::debug!("getting YT visitor data"); let resp = self .inner @@ -108,8 +108,9 @@ impl VisitorDataCache { } } + /// Fetch a new visitor data ID and store it in the cache pub async fn new_visitor_data(&self) -> Result { - let vd = self.get_visitor_data().await.unwrap(); + let vd = self.fetch_visitor_data().await.unwrap(); self.inner .req_counter @@ -128,8 +129,9 @@ impl VisitorDataCache { Ok(vd) } + /// Get a visitor data ID from the cache pub async fn get(&self) -> Result { - // Request new visitor data in the background every 10 requests + // Request a new visitor data ID in the background after a set number of requests if self .inner .req_counter @@ -156,6 +158,9 @@ impl VisitorDataCache { self.new_visitor_data().await } + /// Remove a visitor data ID from the cache. + /// + /// This also removes the PO token associated with that ID. pub fn remove(&self, visitor_data: &str) { let mut vds = self.inner.visitor_data.write().unwrap(); if let Some(i) = vds.iter().position(|x| x == visitor_data) { @@ -166,11 +171,13 @@ impl VisitorDataCache { } } + /// Store a session PO token in the cache pub fn store_pot(&self, visitor_data: &str, po_token: PoToken) { let mut pots = self.inner.session_potoken.write().unwrap(); pots.insert(visitor_data.to_owned(), po_token); } + /// Get a session PO token from the cache pub fn get_pot(&self, visitor_data: &str) -> Option { let pots = self.inner.session_potoken.read().unwrap(); if let Some(entry) = pots.get(visitor_data) { From ccb1178b95101e0d95ce2e6c0f7a828c0eb46889 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 6 Feb 2025 00:59:38 +0100 Subject: [PATCH 128/191] fix iOS client doc --- src/client/mod.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 485f2a2..7102f47 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -83,7 +83,6 @@ pub enum ClientType { /// Client used by the iOS app /// /// - no obfuscated stream URLs - /// - does not include opus audio streams Ios, } From 3a2370b97ca3d0f40d72d66a23295557317d29fb Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 18 Jan 2025 07:03:36 +0100 Subject: [PATCH 129/191] feat: add timezone query option --- Cargo.toml | 1 + cli/Cargo.toml | 3 ++ cli/src/main.rs | 18 +++++++++++ src/client/channel.rs | 6 ++-- src/client/history.rs | 4 +-- src/client/mod.rs | 50 ++++++++++++++++++++++++++++++- src/client/pagination.rs | 5 ++-- src/client/player.rs | 2 ++ src/client/playlist.rs | 11 +++++-- src/client/response/video_item.rs | 21 ++++++++++--- src/client/search.rs | 2 +- src/client/trends.rs | 2 +- src/client/video_details.rs | 9 ++++-- src/util/timeago.rs | 23 +++++++++----- 14 files changed, 132 insertions(+), 25 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index efc8ce3..7d4dd18 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,6 +46,7 @@ time = { version = "0.3.37", features = [ "serde-human-readable", "serde-well-known", ] } +time-tz = { version = "2.0.0" } futures-util = "0.3.31" ress = "0.11.0" phf = "0.11.0" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 519d210..a1c2257 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -12,6 +12,7 @@ description = "CLI for RustyPipe - download videos and extract data from YouTube [features] default = ["native-tls"] +timezone = ["dep:time", "dep:time-tz"] # Reqwest TLS options native-tls = [ @@ -49,6 +50,8 @@ futures-util.workspace = true serde.workspace = true serde_json.workspace = true quick-xml.workspace = true +time = { workspace = true, optional = true } +time-tz = { workspace = true, optional = true } indicatif.workspace = true anyhow.workspace = true diff --git a/cli/src/main.rs b/cli/src/main.rs index 7f49119..68ff919 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -55,6 +55,10 @@ struct Cli { /// YouTube content country #[clap(long, global = true)] country: Option, + /// UTC offset in minutes + #[cfg(feature = "timezone")] + #[clap(long, global = true)] + timezone: Option, /// Use authentication #[clap(long, global = true)] auth: bool, @@ -913,6 +917,20 @@ async fn run() -> anyhow::Result<()> { if let Some(botguard_bin) = cli.botguard_bin { rp = rp.botguard_bin(botguard_bin); } + + #[cfg(feature = "timezone")] + if let Some(timezone) = cli.timezone { + use time::OffsetDateTime; + use time_tz::{Offset, TimeZone}; + + let tz = time_tz::timezones::get_by_name(&timezone).expect("invalid timezone"); + let offset = tz + .get_offset_utc(&OffsetDateTime::now_utc()) + .to_utc() + .whole_minutes(); + rp = rp.timezone(tz.name(), offset); + } + if cli.no_botguard { rp = rp.no_botguard(); } diff --git a/src/client/channel.rs b/src/client/channel.rs index 533e0a3..7945719 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -220,6 +220,7 @@ impl MapResponse>> for response::Channel { let mut mapper = response::YouTubeListMapper::::with_channel( ctx.lang, + ctx.utc_offset, &channel_data.c, channel_data.warnings, ); @@ -265,6 +266,7 @@ impl MapResponse>> for response::Channel { let mut mapper = response::YouTubeListMapper::::with_channel( ctx.lang, + ctx.utc_offset, &channel_data.c, channel_data.warnings, ); @@ -280,7 +282,7 @@ impl MapResponse>> for response::Channel { impl MapResponse for response::ChannelAbout { fn map_response(self, ctx: &MapRespCtx<'_>) -> Result, ExtractionError> { - // Channel info is always fetched in English. There is no localized data there + // Channel info is always fetched in English. There is no localized data // and it allows parsing the country name. let lang = Language::En; @@ -335,7 +337,7 @@ impl MapResponse for response::ChannelAbout { .video_count_text .and_then(|txt| util::parse_numeric_or_warn(&txt, &mut warnings)), create_date: about.joined_date_text.and_then(|txt| { - timeago::parse_textual_date_or_warn(lang, &txt, &mut warnings) + timeago::parse_textual_date_or_warn(lang, ctx.utc_offset, &txt, &mut warnings) .map(OffsetDateTime::date) }), view_count: about diff --git a/src/client/history.rs b/src/client/history.rs index 6852b60..d0272b2 100644 --- a/src/client/history.rs +++ b/src/client/history.rs @@ -177,7 +177,7 @@ impl MapResponse>> for response::History { for item in items.c { match item { response::YouTubeListItem::ItemSectionRenderer { header, contents } => { - let mut mapper = YouTubeListMapper::::new(ctx.lang); + let mut mapper = YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); mapper.map_response(contents); mapper.conv_history_items( header.map(|h| h.item_section_header_renderer.title), @@ -228,7 +228,7 @@ impl MapResponse> for response::History { .section_list_renderer .contents; - let mut mapper = response::YouTubeListMapper::::new(ctx.lang); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); mapper.map_response(items); Ok(MapResult { diff --git a/src/client/mod.rs b/src/client/mod.rs index 7102f47..a44f346 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -35,7 +35,7 @@ use regex::Regex; use reqwest::{header, Client, ClientBuilder, Request, RequestBuilder, Response, StatusCode}; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use sha1::{Digest, Sha1}; -use time::OffsetDateTime; +use time::{OffsetDateTime, UtcOffset}; use tokio::sync::RwLock as AsyncRwLock; use crate::error::AuthError; @@ -386,6 +386,8 @@ struct RustyPipeRef { struct RustyPipeOpts { lang: Language, country: Country, + timezone: Option, + utc_offset_minutes: i16, report: bool, strict: bool, auth: Option, @@ -525,6 +527,8 @@ impl Default for RustyPipeOpts { Self { lang: Language::En, country: Country::Us, + timezone: None, + utc_offset_minutes: 0, report: false, strict: false, auth: None, @@ -890,6 +894,21 @@ impl RustyPipeBuilder { self } + /// Set the timezone and its associated UTC offset in minutes used + /// when accessing the YouTube API. + /// + /// This will also change the UTC offset of the returned dates. + /// + /// **Default value**: `0` (UTC) + /// + /// **Info**: you can set this option for individual queries, too + #[must_use] + pub fn timezone>(mut self, timezone: S, utc_offset_minutes: i16) -> Self { + self.default_opts.timezone = Some(timezone.into()); + self.default_opts.utc_offset_minutes = utc_offset_minutes; + self + } + /// Generate a report on every operation. /// /// This should only be used for debugging. @@ -1668,6 +1687,17 @@ impl RustyPipeQuery { self } + /// Set the timezone and its associated UTC offset in minutes used + /// when accessing the YouTube API. + /// + /// This will also change the UTC offset of the returned dates. + #[must_use] + pub fn timezone>(mut self, timezone: S, utc_offset_minutes: i16) -> Self { + self.opts.timezone = Some(timezone.into()); + self.opts.utc_offset_minutes = utc_offset_minutes; + self + } + /// Generate a report on every operation. /// /// This should only be used for debugging. @@ -1822,6 +1852,8 @@ impl RustyPipeQuery { } else { (Language::En, Country::Us) }; + let utc_offset_minutes = self.opts.utc_offset_minutes; + let time_zone = self.opts.timezone.as_deref().unwrap_or("UTC"); match ctype { ClientType::Desktop => YTContext { @@ -1833,6 +1865,8 @@ impl RustyPipeQuery { visitor_data, hl, gl, + time_zone, + utc_offset_minutes, ..Default::default() }, request: Some(RequestYT::default()), @@ -1848,6 +1882,8 @@ impl RustyPipeQuery { visitor_data, hl, gl, + time_zone, + utc_offset_minutes, ..Default::default() }, request: Some(RequestYT::default()), @@ -1863,6 +1899,8 @@ impl RustyPipeQuery { visitor_data, hl, gl, + time_zone, + utc_offset_minutes, ..Default::default() }, request: Some(RequestYT::default()), @@ -1879,6 +1917,8 @@ impl RustyPipeQuery { visitor_data, hl, gl, + time_zone, + utc_offset_minutes, ..Default::default() }, request: Some(RequestYT::default()), @@ -1898,6 +1938,8 @@ impl RustyPipeQuery { visitor_data, hl, gl, + time_zone, + utc_offset_minutes, ..Default::default() }, request: None, @@ -1915,6 +1957,8 @@ impl RustyPipeQuery { visitor_data, hl, gl, + time_zone, + utc_offset_minutes, ..Default::default() }, request: None, @@ -2212,6 +2256,8 @@ impl RustyPipeQuery { let ctx = MapRespCtx { id, lang: self.opts.lang, + utc_offset: UtcOffset::from_whole_seconds(i32::from(self.opts.utc_offset_minutes) * 60) + .map_err(|_| Error::Other("utc_offset overflow".into()))?, deobf: ctx_src.deobf, visitor_data: Some(&visitor_data), client_type: ctype, @@ -2498,6 +2544,7 @@ impl AsRef for RustyPipeQuery { struct MapRespCtx<'a> { id: &'a str, lang: Language, + utc_offset: UtcOffset, deobf: Option<&'a DeobfData>, visitor_data: Option<&'a str>, client_type: ClientType, @@ -2525,6 +2572,7 @@ impl<'a> MapRespCtx<'a> { Self { id, lang: Language::En, + utc_offset: UtcOffset::UTC, deobf: None, visitor_data: None, client_type: ClientType::Desktop, diff --git a/src/client/pagination.rs b/src/client/pagination.rs index 3fad657..2948d06 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -127,7 +127,7 @@ impl MapResponse> for response::Continuation { let estimated_results = self.estimated_results; let items = continuation_items(self); - let mut mapper = response::YouTubeListMapper::::new(ctx.lang); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); mapper.map_response(items); Ok(MapResult { @@ -237,7 +237,8 @@ impl MapResponse>> for response::Continuation { for item in items.c { match item { response::YouTubeListItem::ItemSectionRenderer { header, contents } => { - let mut mapper = response::YouTubeListMapper::::new(ctx.lang); + let mut mapper = + response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); mapper.map_response(contents); mapper.conv_history_items( header.map(|h| h.item_section_header_renderer.title), diff --git a/src/client/player.rs b/src/client/player.rs index d85394c..f5e0c53 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -937,6 +937,7 @@ mod tests { use path_macro::path; use rstest::rstest; + use time::UtcOffset; use super::*; use crate::{deobfuscate::DeobfData, param::Language, util::tests::TESTFILES}; @@ -968,6 +969,7 @@ mod tests { .map_response(&MapRespCtx { id: "pPvd8UxmSbQ", lang: Language::En, + utc_offset: UtcOffset::UTC, deobf: Some(&DEOBF_DATA), visitor_data: None, client_type, diff --git a/src/client/playlist.rs b/src/client/playlist.rs index c2872e6..bf6913a 100644 --- a/src/client/playlist.rs +++ b/src/client/playlist.rs @@ -90,7 +90,7 @@ impl MapResponse for response::Playlist { .playlist_video_list_renderer .contents; - let mut mapper = response::YouTubeListMapper::::new(ctx.lang); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); mapper.map_response(video_items); let (description, thumbnails, last_update_txt) = match self.sidebar { @@ -225,8 +225,13 @@ impl MapResponse for response::Playlist { .as_deref() .or(last_update_txt2.as_deref()) .and_then(|txt| { - timeago::parse_textual_date_or_warn(ctx.lang, txt, &mut mapper.warnings) - .map(OffsetDateTime::date) + timeago::parse_textual_date_or_warn( + ctx.lang, + ctx.utc_offset, + txt, + &mut mapper.warnings, + ) + .map(OffsetDateTime::date) }); Ok(MapResult { diff --git a/src/client/response/video_item.rs b/src/client/response/video_item.rs index 1541728..001d8d1 100644 --- a/src/client/response/video_item.rs +++ b/src/client/response/video_item.rs @@ -2,7 +2,7 @@ use serde::Deserialize; use serde_with::{ rust::deserialize_ignore_any, serde_as, DefaultOnError, DisplayFromStr, VecSkipError, }; -use time::OffsetDateTime; +use time::{OffsetDateTime, UtcOffset}; use super::{ ChannelBadge, ContentImage, ContinuationEndpoint, PhMetadataView, SimpleHeaderRenderer, @@ -461,6 +461,7 @@ impl IsShort for Vec { #[derive(Debug)] pub(crate) struct YouTubeListMapper { lang: Language, + utc_offset: UtcOffset, channel: Option, pub items: Vec, @@ -470,9 +471,10 @@ pub(crate) struct YouTubeListMapper { } impl YouTubeListMapper { - pub fn new(lang: Language) -> Self { + pub fn new(lang: Language, utc_offset: UtcOffset) -> Self { Self { lang, + utc_offset, channel: None, items: Vec::new(), warnings: Vec::new(), @@ -481,9 +483,15 @@ impl YouTubeListMapper { } } - pub fn with_channel(lang: Language, channel: &Channel, warnings: Vec) -> Self { + pub fn with_channel( + lang: Language, + utc_offset: UtcOffset, + channel: &Channel, + warnings: Vec, + ) -> Self { Self { lang, + utc_offset, channel: Some(ChannelTag { id: channel.id.clone(), name: channel.name.clone(), @@ -786,7 +794,12 @@ impl YouTubeListMapper { thumbnail: tn.image.into(), channel, publish_date: publish_date_txt.as_deref().and_then(|t| { - timeago::parse_textual_date_or_warn(self.lang, t, &mut self.warnings) + timeago::parse_textual_date_or_warn( + self.lang, + self.utc_offset, + t, + &mut self.warnings, + ) }), publish_date_txt, view_count, diff --git a/src/client/search.rs b/src/client/search.rs index b4ba544..5ab5793 100644 --- a/src/client/search.rs +++ b/src/client/search.rs @@ -107,7 +107,7 @@ impl MapResponse> for response::Search { .section_list_renderer .contents; - let mut mapper = response::YouTubeListMapper::::new(ctx.lang); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); mapper.map_response(items); Ok(MapResult { diff --git a/src/client/trends.rs b/src/client/trends.rs index fa3510c..10e8fe9 100644 --- a/src/client/trends.rs +++ b/src/client/trends.rs @@ -45,7 +45,7 @@ impl MapResponse> for response::Trending { .section_list_renderer .contents; - let mut mapper = response::YouTubeListMapper::::new(ctx.lang); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); mapper.map_response(items); Ok(MapResult { diff --git a/src/client/video_details.rs b/src/client/video_details.rs index 9cc1ffc..f027c12 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -180,7 +180,12 @@ impl MapResponse for response::VideoDetails { // so we ignore parse errors here for now like_text.and_then(|txt| util::parse_numeric(&txt).ok()), date_text.as_deref().and_then(|txt| { - timeago::parse_textual_date_or_warn(ctx.lang, txt, &mut warnings) + timeago::parse_textual_date_or_warn( + ctx.lang, + ctx.utc_offset, + txt, + &mut warnings, + ) }), date_text, view_count @@ -470,7 +475,7 @@ fn map_recommendations( visitor_data: Option, ctx: &MapRespCtx<'_>, ) -> MapResult> { - let mut mapper = response::YouTubeListMapper::::new(ctx.lang); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); mapper.map_response(r); mapper.ctoken = mapper.ctoken.or_else(|| { diff --git a/src/util/timeago.rs b/src/util/timeago.rs index 274c653..65b85a7 100644 --- a/src/util/timeago.rs +++ b/src/util/timeago.rs @@ -13,7 +13,7 @@ use std::ops::Mul; use serde::{Deserialize, Serialize}; -use time::{Date, Duration, Month, OffsetDateTime}; +use time::{Date, Duration, Month, OffsetDateTime, UtcOffset}; use crate::{ param::Language, @@ -333,8 +333,13 @@ pub fn parse_textual_date(lang: Language, textual_date: &str) -> Option Option { - parse_textual_date(lang, textual_date).map(OffsetDateTime::from) +pub fn parse_textual_date_to_dt( + lang: Language, + utc_offset: UtcOffset, + textual_date: &str, +) -> Option { + parse_textual_date(lang, textual_date) + .map(|parsed| OffsetDateTime::from(parsed).replace_offset(utc_offset)) } /// Parse a textual date (e.g. "29 minutes ago" "Jul 2, 2014") into a Date object. @@ -345,15 +350,17 @@ pub fn parse_textual_date_to_d( textual_date: &str, warnings: &mut Vec, ) -> Option { - parse_textual_date_or_warn(lang, textual_date, warnings).map(OffsetDateTime::date) + parse_textual_date_or_warn(lang, UtcOffset::UTC, textual_date, warnings) + .map(OffsetDateTime::date) } pub fn parse_textual_date_or_warn( lang: Language, + utc_offset: UtcOffset, textual_date: &str, warnings: &mut Vec, ) -> Option { - let res = parse_textual_date_to_dt(lang, textual_date); + let res = parse_textual_date_to_dt(lang, utc_offset, textual_date); if res.is_none() { warnings.push(format!("could not parse textual date `{textual_date}`")); } @@ -1101,11 +1108,13 @@ mod tests { #[test] fn t_to_datetime() { // Absolute date - let date = parse_textual_date_to_dt(Language::En, "Last updated on Jan 3, 2020").unwrap(); + let date = + parse_textual_date_to_dt(Language::En, UtcOffset::UTC, "Last updated on Jan 3, 2020") + .unwrap(); assert_eq!(date, datetime!(2020-1-3 0:00 +0)); // Relative date - let date = parse_textual_date_to_dt(Language::En, "1 year ago").unwrap(); + let date = parse_textual_date_to_dt(Language::En, UtcOffset::UTC, "1 year ago").unwrap(); let now = OffsetDateTime::now_utc(); assert_eq!(date.year(), now.year() - 1); } From a5a7be5b4e0a0b73d7e1dc802ebd7bd48dafc76d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 25 Jan 2025 01:13:38 +0100 Subject: [PATCH 130/191] fix: correct timezone offset for parsed dates, add timezone_local option --- Cargo.toml | 8 +++ src/client/channel.rs | 2 - src/client/history.rs | 5 +- src/client/mod.rs | 34 +++++++-- src/client/music_history.rs | 2 +- src/client/pagination.rs | 8 +-- src/client/playlist.rs | 2 +- src/client/response/music_item.rs | 9 ++- src/client/response/video_item.rs | 34 +++------ src/client/search.rs | 2 +- src/client/trends.rs | 2 +- src/client/video_details.rs | 2 +- src/util/date.rs | 77 ++++++++++++++++++++- src/util/mod.rs | 2 +- src/util/timeago.rs | 111 +++++++++++++++--------------- 15 files changed, 202 insertions(+), 98 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 7d4dd18..1ea418a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,6 +45,7 @@ time = { version = "0.3.37", features = [ "macros", "serde-human-readable", "serde-well-known", + "local-offset", ] } time-tz = { version = "2.0.0" } futures-util = "0.3.31" @@ -55,6 +56,10 @@ data-encoding = "2.0.0" urlencoding = "2.1.0" quick-xml = { version = "0.37.0", features = ["serialize"] } tracing = { version = "0.1.0", features = ["log"] } +windows-sys = { version = "0.59.0", features = [ + "Win32_System_Time", + "Win32_Foundation", +] } # CLI indicatif = "0.17.0" @@ -115,6 +120,9 @@ urlencoding.workspace = true tracing.workspace = true quick-xml = { workspace = true, optional = true } +[target.'cfg(windows)'.dependencies] +windows-sys.workspace = true + [dev-dependencies] rstest.workspace = true tokio-test.workspace = true diff --git a/src/client/channel.rs b/src/client/channel.rs index 7945719..8dcb827 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -220,7 +220,6 @@ impl MapResponse>> for response::Channel { let mut mapper = response::YouTubeListMapper::::with_channel( ctx.lang, - ctx.utc_offset, &channel_data.c, channel_data.warnings, ); @@ -266,7 +265,6 @@ impl MapResponse>> for response::Channel { let mut mapper = response::YouTubeListMapper::::with_channel( ctx.lang, - ctx.utc_offset, &channel_data.c, channel_data.warnings, ); diff --git a/src/client/history.rs b/src/client/history.rs index d0272b2..427715c 100644 --- a/src/client/history.rs +++ b/src/client/history.rs @@ -177,10 +177,11 @@ impl MapResponse>> for response::History { for item in items.c { match item { response::YouTubeListItem::ItemSectionRenderer { header, contents } => { - let mut mapper = YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); + let mut mapper = YouTubeListMapper::::new(ctx.lang); mapper.map_response(contents); mapper.conv_history_items( header.map(|h| h.item_section_header_renderer.title), + ctx.utc_offset, &mut map_res, ); } @@ -228,7 +229,7 @@ impl MapResponse> for response::History { .section_list_renderer .contents; - let mut mapper = response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); mapper.map_response(items); Ok(MapResult { diff --git a/src/client/mod.rs b/src/client/mod.rs index a44f346..e21b752 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -897,8 +897,6 @@ impl RustyPipeBuilder { /// Set the timezone and its associated UTC offset in minutes used /// when accessing the YouTube API. /// - /// This will also change the UTC offset of the returned dates. - /// /// **Default value**: `0` (UTC) /// /// **Info**: you can set this option for individual queries, too @@ -909,6 +907,16 @@ impl RustyPipeBuilder { self } + /// Access the YouTube API using the local system timezone + /// + /// If the local timezone could not be determined, an error is logged and RustyPipe falls + /// back to UTC. + #[must_use] + pub fn timezone_local(self) -> Self { + let (timezone, utc_offset_minutes) = local_tz_offset(); + self.timezone(timezone, utc_offset_minutes) + } + /// Generate a report on every operation. /// /// This should only be used for debugging. @@ -1689,8 +1697,6 @@ impl RustyPipeQuery { /// Set the timezone and its associated UTC offset in minutes used /// when accessing the YouTube API. - /// - /// This will also change the UTC offset of the returned dates. #[must_use] pub fn timezone>(mut self, timezone: S, utc_offset_minutes: i16) -> Self { self.opts.timezone = Some(timezone.into()); @@ -1698,6 +1704,13 @@ impl RustyPipeQuery { self } + /// Access the YouTube API using the local system timezone + #[must_use] + pub fn timezone_local(self) -> Self { + let (timezone, utc_offset_minutes) = local_tz_offset(); + self.timezone(timezone, utc_offset_minutes) + } + /// Generate a report on every operation. /// /// This should only be used for debugging. @@ -2611,6 +2624,19 @@ fn validate_country(country: Country) -> Country { } } +fn local_tz_offset() -> (String, i16) { + match ( + util::local_timezone_name(), + UtcOffset::current_local_offset().map_err(|_| Error::Other("indeterminate offset".into())), + ) { + (Ok(timezone), Ok(offset)) => (timezone, offset.whole_minutes()), + (Err(e), _) | (_, Err(e)) => { + tracing::error!("{e}"); + ("UTC".to_owned(), 0) + } + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/src/client/music_history.rs b/src/client/music_history.rs index 0ebfcf0..50c5844 100644 --- a/src/client/music_history.rs +++ b/src/client/music_history.rs @@ -160,7 +160,7 @@ impl MapResponse>> for response::MusicHistory { }; let mut mapper = MusicListMapper::new(ctx.lang); mapper.map_response(shelf.contents); - mapper.conv_history_items(shelf.title, &mut map_res); + mapper.conv_history_items(shelf.title, ctx.utc_offset, &mut map_res); } let ctoken = contents diff --git a/src/client/pagination.rs b/src/client/pagination.rs index 2948d06..1440ebe 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -127,7 +127,7 @@ impl MapResponse> for response::Continuation { let estimated_results = self.estimated_results; let items = continuation_items(self); - let mut mapper = response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); mapper.map_response(items); Ok(MapResult { @@ -237,11 +237,11 @@ impl MapResponse>> for response::Continuation { for item in items.c { match item { response::YouTubeListItem::ItemSectionRenderer { header, contents } => { - let mut mapper = - response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); mapper.map_response(contents); mapper.conv_history_items( header.map(|h| h.item_section_header_renderer.title), + ctx.utc_offset, &mut map_res, ); } @@ -281,7 +281,7 @@ impl MapResponse>> for response::MusicContinuat let mut map_shelf = |shelf: response::music_item::MusicShelf| { let mut mapper = MusicListMapper::new(ctx.lang); mapper.map_response(shelf.contents); - mapper.conv_history_items(shelf.title, &mut map_res); + mapper.conv_history_items(shelf.title, ctx.utc_offset, &mut map_res); continuations.extend(shelf.continuations); }; diff --git a/src/client/playlist.rs b/src/client/playlist.rs index bf6913a..79e2329 100644 --- a/src/client/playlist.rs +++ b/src/client/playlist.rs @@ -90,7 +90,7 @@ impl MapResponse for response::Playlist { .playlist_video_list_renderer .contents; - let mut mapper = response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); mapper.map_response(video_items); let (description, thumbnails, last_update_txt) = match self.sidebar { diff --git a/src/client/response/music_item.rs b/src/client/response/music_item.rs index f5e0fac..d2bf983 100644 --- a/src/client/response/music_item.rs +++ b/src/client/response/music_item.rs @@ -1,5 +1,6 @@ use serde::Deserialize; use serde_with::{rust::deserialize_ignore_any, serde_as, DefaultOnError, VecSkipError}; +use time::UtcOffset; use crate::{ model::{ @@ -1272,6 +1273,7 @@ impl MusicListMapper { pub fn conv_history_items( self, date_txt: Option, + utc_offset: UtcOffset, res: &mut MapResult>>, ) { res.warnings.extend(self.warnings); @@ -1282,7 +1284,12 @@ impl MusicListMapper { .map(|item| HistoryItem { item, playback_date: date_txt.as_deref().and_then(|s| { - timeago::parse_textual_date_to_d(self.lang, s, &mut res.warnings) + timeago::parse_textual_date_to_d( + self.lang, + utc_offset, + s, + &mut res.warnings, + ) }), playback_date_txt: date_txt.clone(), }), diff --git a/src/client/response/video_item.rs b/src/client/response/video_item.rs index 001d8d1..f855f3f 100644 --- a/src/client/response/video_item.rs +++ b/src/client/response/video_item.rs @@ -461,7 +461,6 @@ impl IsShort for Vec { #[derive(Debug)] pub(crate) struct YouTubeListMapper { lang: Language, - utc_offset: UtcOffset, channel: Option, pub items: Vec, @@ -471,10 +470,9 @@ pub(crate) struct YouTubeListMapper { } impl YouTubeListMapper { - pub fn new(lang: Language, utc_offset: UtcOffset) -> Self { + pub fn new(lang: Language) -> Self { Self { lang, - utc_offset, channel: None, items: Vec::new(), warnings: Vec::new(), @@ -483,15 +481,9 @@ impl YouTubeListMapper { } } - pub fn with_channel( - lang: Language, - utc_offset: UtcOffset, - channel: &Channel, - warnings: Vec, - ) -> Self { + pub fn with_channel(lang: Language, channel: &Channel, warnings: Vec) -> Self { Self { lang, - utc_offset, channel: Some(ChannelTag { id: channel.id.clone(), name: channel.name.clone(), @@ -794,12 +786,7 @@ impl YouTubeListMapper { thumbnail: tn.image.into(), channel, publish_date: publish_date_txt.as_deref().and_then(|t| { - timeago::parse_textual_date_or_warn( - self.lang, - self.utc_offset, - t, - &mut self.warnings, - ) + timeago::parse_timeago_dt_or_warn(self.lang, t, &mut self.warnings) }), publish_date_txt, view_count, @@ -920,17 +907,16 @@ impl YouTubeListMapper { pub(crate) fn conv_history_items( self, date_txt: Option, + utc_offset: UtcOffset, res: &mut MapResult>>, ) { res.warnings.extend(self.warnings); - res.c.extend(self.items.into_iter().map(|item| { - HistoryItem { - item, - playback_date: date_txt.as_deref().and_then(|s| { - timeago::parse_textual_date_to_d(self.lang, s, &mut res.warnings) - }), - playback_date_txt: date_txt.clone(), - } + res.c.extend(self.items.into_iter().map(|item| HistoryItem { + item, + playback_date: date_txt.as_deref().and_then(|s| { + timeago::parse_textual_date_to_d(self.lang, utc_offset, s, &mut res.warnings) + }), + playback_date_txt: date_txt.clone(), })); } } diff --git a/src/client/search.rs b/src/client/search.rs index 5ab5793..b4ba544 100644 --- a/src/client/search.rs +++ b/src/client/search.rs @@ -107,7 +107,7 @@ impl MapResponse> for response::Search { .section_list_renderer .contents; - let mut mapper = response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); mapper.map_response(items); Ok(MapResult { diff --git a/src/client/trends.rs b/src/client/trends.rs index 10e8fe9..fa3510c 100644 --- a/src/client/trends.rs +++ b/src/client/trends.rs @@ -45,7 +45,7 @@ impl MapResponse> for response::Trending { .section_list_renderer .contents; - let mut mapper = response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); mapper.map_response(items); Ok(MapResult { diff --git a/src/client/video_details.rs b/src/client/video_details.rs index f027c12..f53201b 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -475,7 +475,7 @@ fn map_recommendations( visitor_data: Option, ctx: &MapRespCtx<'_>, ) -> MapResult> { - let mut mapper = response::YouTubeListMapper::::new(ctx.lang, ctx.utc_offset); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); mapper.map_response(r); mapper.ctoken = mapper.ctoken.or_else(|| { diff --git a/src/util/date.rs b/src/util/date.rs index dde5d88..e80f516 100644 --- a/src/util/date.rs +++ b/src/util/date.rs @@ -1,5 +1,7 @@ use time::{Date, Duration, Month, OffsetDateTime}; +use crate::error::Error; + /// Shift a date by the given number of months. /// Ambiguous month-ends are shifted backwards as necessary. pub fn shift_months(date: Date, months: i32) -> Date { @@ -25,7 +27,8 @@ pub fn shift_years(date: Date, years: i32) -> Date { shift_months(date, years * 12) } -pub fn shift_weeks_mo(date: Date, weeks: i32) -> Date { +/// Shift a date to the monday of its week, plus/minus the given amount of weeks +pub fn shift_weeks_monday(date: Date, weeks: i32) -> Date { let d = date + Duration::weeks(weeks.into()); Date::from_iso_week_date(d.year(), d.iso_week(), time::Weekday::Monday).unwrap() } @@ -40,3 +43,75 @@ pub fn now_sec() -> OffsetDateTime { .replace_nanosecond(0) .unwrap() } + +/// Gets the current timezone from the system. +/// +/// Currently only supported for Windows, Unix, and WASM targets. +/// +/// # Errors +/// Returns an [Error](enum@Error) if the timezone cannot be determined. +pub fn local_timezone_name() -> Result { + #[cfg(unix)] + { + use std::path::Path; + let path = Path::new("/etc/localtime"); + let realpath = std::fs::read_link(path) + .map_err(|_| Error::Other("could not read localtime".into()))?; + // The part of the path we're interested in cannot contain non unicode characters. + return realpath + .to_str() + .and_then(|s| s.split("/zoneinfo/").last()) + .map(str::to_owned) + .ok_or_else(|| { + Error::Other(format!("could not parse zoneinfo path: {realpath:?}").into()) + }); + } + + #[cfg(windows)] + #[allow(unsafe_code)] + { + unsafe { + use windows_sys::Win32::System::Time::GetDynamicTimeZoneInformation; + use windows_sys::Win32::System::Time::DYNAMIC_TIME_ZONE_INFORMATION; + let mut data: DYNAMIC_TIME_ZONE_INFORMATION = std::mem::zeroed(); + let res = GetDynamicTimeZoneInformation(&mut data as _); + if res > 2 { + return Err(Error::Other("local timezone could not be read".into())); + } else { + let win_name_utf16 = &data.TimeZoneKeyName; + let mut len: usize = 0; + while win_name_utf16[len] != 0x0 { + len += 1; + } + if len == 0 { + return Err(Error::Other("local timezone could not be read".into())); + } + return String::from_utf16(&win_name_utf16[..len]) + .map_err(|_| "local timezone is invalid UTF16".into())?; + } + } + } + + #[allow(unreachable_code)] + Err(Error::Other("local timezone unsupported".into())) +} + +#[cfg(test)] +mod tests { + use rstest::rstest; + use time::{macros::date, Date}; + + #[rstest] + #[case::this_week(date!(2025-01-17), 0, date!(2025-01-13))] + #[case::last_week(date!(2025-01-17), -1, date!(2025-01-06))] + #[case::last_month(date!(2025-01-17), -4, date!(2024-12-16))] + fn shift_weeks_monday(#[case] date: Date, #[case] weeks: i32, #[case] expect: Date) { + let res = super::shift_weeks_monday(date, weeks); + assert_eq!(res, expect); + } + + #[test] + fn local_timezone_name() { + super::local_timezone_name().unwrap(); + } +} diff --git a/src/util/mod.rs b/src/util/mod.rs index 9a49571..c42eb4b 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -5,7 +5,7 @@ mod visitor_data; pub mod dictionary; pub mod timeago; -pub use date::{now_sec, shift_months, shift_weeks_mo, shift_years}; +pub use date::{local_timezone_name, now_sec, shift_months, shift_weeks_monday, shift_years}; pub use protobuf::{string_from_pb, ProtoBuilder}; pub use visitor_data::VisitorDataCache; diff --git a/src/util/timeago.rs b/src/util/timeago.rs index 65b85a7..011b3ed 100644 --- a/src/util/timeago.rs +++ b/src/util/timeago.rs @@ -97,6 +97,26 @@ impl TimeAgo { fn secs(self) -> u32 { u32::from(self.n) * self.unit.secs() } + + fn into_datetime(self, utc_offset: UtcOffset) -> OffsetDateTime { + let ts = util::now_sec().to_offset(utc_offset); + match self.unit { + TimeUnit::Month => ts.replace_date(util::shift_months(ts.date(), -i32::from(self.n))), + TimeUnit::Year => ts.replace_date(util::shift_years(ts.date(), -i32::from(self.n))), + TimeUnit::LastWeek => { + ts.replace_date(util::shift_weeks_monday(ts.date(), -i32::from(self.n))) + } + TimeUnit::LastWeekday => ts.replace_date( + Date::from_iso_week_date( + ts.year(), + ts.iso_week(), + time::Weekday::Monday.nth_next(self.n), + ) + .unwrap(), + ), + _ => ts - Duration::from(self), + } + } } impl Mul for TimeAgo { @@ -116,33 +136,11 @@ impl From for Duration { } } -impl From for OffsetDateTime { - fn from(ta: TimeAgo) -> Self { - let ts = util::now_sec(); - match ta.unit { - TimeUnit::Month => ts.replace_date(util::shift_months(ts.date(), -i32::from(ta.n))), - TimeUnit::Year => ts.replace_date(util::shift_years(ts.date(), -i32::from(ta.n))), - TimeUnit::LastWeek => { - ts.replace_date(util::shift_weeks_mo(ts.date(), -i32::from(ta.n))) - } - TimeUnit::LastWeekday => ts.replace_date( - Date::from_iso_week_date( - ts.year(), - ts.iso_week(), - time::Weekday::Monday.nth_next(ta.n), - ) - .unwrap(), - ), - _ => ts - Duration::from(ta), - } - } -} - -impl From for OffsetDateTime { - fn from(date: ParsedDate) -> Self { - match date { - ParsedDate::Absolute(date) => date.with_hms(0, 0, 0).unwrap().assume_utc(), - ParsedDate::Relative(timeago) => timeago.into(), +impl ParsedDate { + fn into_datetime(self, utc_offset: UtcOffset) -> OffsetDateTime { + match self { + ParsedDate::Absolute(date) => date.with_hms(0, 0, 0).unwrap().assume_offset(utc_offset), + ParsedDate::Relative(timeago) => timeago.into_datetime(utc_offset), } } } @@ -247,7 +245,7 @@ pub fn parse_timeago(lang: Language, textual_date: &str) -> Option { /// /// Returns [`None`] if the date could not be parsed. pub fn parse_timeago_dt(lang: Language, textual_date: &str) -> Option { - parse_timeago(lang, textual_date).map(OffsetDateTime::from) + parse_timeago(lang, textual_date).map(|t| t.into_datetime(UtcOffset::UTC)) } pub fn parse_timeago_dt_or_warn( @@ -265,7 +263,11 @@ pub fn parse_timeago_dt_or_warn( /// Parse a textual date (e.g. "29 minutes ago" or "Jul 2, 2014") into a ParsedDate object. /// /// Returns [`None`] if the date could not be parsed. -pub fn parse_textual_date(lang: Language, textual_date: &str) -> Option { +pub fn parse_textual_date( + lang: Language, + utc_offset: UtcOffset, + textual_date: &str, +) -> Option { let entry = dictionary::entry(lang); let by_char = util::lang_by_char(lang); let filtered_str = filter_datestr(textual_date); @@ -317,8 +319,9 @@ pub fn parse_textual_date(lang: Language, textual_date: &str) -> Option Option { - parse_textual_date(lang, textual_date) - .map(|parsed| OffsetDateTime::from(parsed).replace_offset(utc_offset)) + parse_textual_date(lang, utc_offset, textual_date).map(|t| t.into_datetime(utc_offset)) } /// Parse a textual date (e.g. "29 minutes ago" "Jul 2, 2014") into a Date object. @@ -347,11 +349,12 @@ pub fn parse_textual_date_to_dt( /// Returns None if the date could not be parsed. pub fn parse_textual_date_to_d( lang: Language, + utc_offset: UtcOffset, textual_date: &str, warnings: &mut Vec, ) -> Option { - parse_textual_date_or_warn(lang, UtcOffset::UTC, textual_date, warnings) - .map(OffsetDateTime::date) + parse_textual_date_or_warn(lang, utc_offset, textual_date, warnings) + .map(|d| d.to_offset(utc_offset).date()) } pub fn parse_textual_date_or_warn( @@ -871,7 +874,7 @@ mod tests { for (t, entry) in entries { entry.cases.iter().for_each(|(txt, n)| { let timeago = parse_timeago(*lang, txt); - let textual_date = parse_textual_date(*lang, txt); + let textual_date = parse_textual_date(*lang, UtcOffset::UTC, txt); assert_eq!( timeago, Some(TimeAgo { n: *n, unit: *t }), @@ -913,7 +916,7 @@ mod tests { #[case] textual_date: &str, #[case] expect: Option, ) { - let parsed_date = parse_textual_date(lang, textual_date); + let parsed_date = parse_textual_date(lang, UtcOffset::UTC, textual_date); assert_eq!(parsed_date, expect); } @@ -924,7 +927,7 @@ mod tests { #[case] textual_date: &str, #[case] expect: Date, ) { - let parsed_date = parse_textual_date(lang, textual_date); + let parsed_date = parse_textual_date(lang, UtcOffset::UTC, textual_date); let expected_date = expect .replace_year(OffsetDateTime::now_utc().year()) .unwrap(); @@ -940,7 +943,7 @@ mod tests { for (lang, samples) in &date_samples { assert_eq!( - parse_textual_date(*lang, samples.get("Today").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Today").unwrap()), Some(ParsedDate::Relative(TimeAgo { n: 0, unit: TimeUnit::Day @@ -948,7 +951,7 @@ mod tests { "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("Yesterday").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Yesterday").unwrap()), Some(ParsedDate::Relative(TimeAgo { n: 1, unit: TimeUnit::Day @@ -956,7 +959,7 @@ mod tests { "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("Ago").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Ago").unwrap()), Some(ParsedDate::Relative(TimeAgo { n: 5, unit: TimeUnit::Day @@ -964,62 +967,62 @@ mod tests { "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("Jan").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Jan").unwrap()), Some(ParsedDate::Absolute(date!(2020 - 1 - 3))), "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("Feb").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Feb").unwrap()), Some(ParsedDate::Absolute(date!(2016 - 2 - 7))), "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("Mar").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Mar").unwrap()), Some(ParsedDate::Absolute(date!(2015 - 3 - 9))), "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("Apr").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Apr").unwrap()), Some(ParsedDate::Absolute(date!(2017 - 4 - 2))), "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("May").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("May").unwrap()), Some(ParsedDate::Absolute(date!(2014 - 5 - 22))), "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("Jun").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Jun").unwrap()), Some(ParsedDate::Absolute(date!(2014 - 6 - 28))), "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("Jul").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Jul").unwrap()), Some(ParsedDate::Absolute(date!(2014 - 7 - 2))), "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("Aug").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Aug").unwrap()), Some(ParsedDate::Absolute(date!(2015 - 8 - 23))), "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("Sep").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Sep").unwrap()), Some(ParsedDate::Absolute(date!(2018 - 9 - 16))), "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("Oct").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Oct").unwrap()), Some(ParsedDate::Absolute(date!(2014 - 10 - 31))), "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("Nov").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Nov").unwrap()), Some(ParsedDate::Absolute(date!(2016 - 11 - 3))), "lang: {lang}" ); assert_eq!( - parse_textual_date(*lang, samples.get("Dec").unwrap()), + parse_textual_date(*lang, UtcOffset::UTC, samples.get("Dec").unwrap()), Some(ParsedDate::Absolute(date!(2021 - 12 - 24))), "lang: {lang}" ); @@ -1065,7 +1068,7 @@ mod tests { } }; assert_eq!( - parse_textual_date(lang, &v), + parse_textual_date(lang, UtcOffset::UTC, &v), Some(expected), "lang={lang}; {k}" ); From 4f2bb47ab42ae0c68a64f3b3c2831fa7850b6f56 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 25 Jan 2025 01:17:06 +0100 Subject: [PATCH 131/191] feat: add --timezone-local CLI option --- cli/src/main.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cli/src/main.rs b/cli/src/main.rs index 68ff919..1940ed0 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -59,6 +59,9 @@ struct Cli { #[cfg(feature = "timezone")] #[clap(long, global = true)] timezone: Option, + /// Use local timezone + #[clap(long, global = true)] + timezone_local: bool, /// Use authentication #[clap(long, global = true)] auth: bool, @@ -917,6 +920,9 @@ async fn run() -> anyhow::Result<()> { if let Some(botguard_bin) = cli.botguard_bin { rp = rp.botguard_bin(botguard_bin); } + if cli.timezone_local { + rp = rp.timezone_local(); + } #[cfg(feature = "timezone")] if let Some(timezone) = cli.timezone { From 34f8e9b5510f0530e3afb040a640a61ce8aa21c0 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 25 Jan 2025 03:24:35 +0100 Subject: [PATCH 132/191] fix: compile error on windows --- src/lib.rs | 1 - src/util/date.rs | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 012211e..88ef929 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,5 @@ #![doc = include_str!("../README.md")] #![cfg_attr(docsrs, feature(doc_cfg))] -#![forbid(unsafe_code)] #![warn(missing_docs, clippy::todo, clippy::dbg_macro)] //! ## Go to diff --git a/src/util/date.rs b/src/util/date.rs index e80f516..d9ed6f9 100644 --- a/src/util/date.rs +++ b/src/util/date.rs @@ -68,7 +68,6 @@ pub fn local_timezone_name() -> Result { } #[cfg(windows)] - #[allow(unsafe_code)] { unsafe { use windows_sys::Win32::System::Time::GetDynamicTimeZoneInformation; @@ -87,7 +86,7 @@ pub fn local_timezone_name() -> Result { return Err(Error::Other("local timezone could not be read".into())); } return String::from_utf16(&win_name_utf16[..len]) - .map_err(|_| "local timezone is invalid UTF16".into())?; + .map_err(|_| Error::Other("local timezone is invalid UTF16".into())); } } } From 5acbf0e456b1f10707e0a56125d993a8129eee3a Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 25 Jan 2025 21:12:46 +0100 Subject: [PATCH 133/191] fix: use localzone crate to get local tz --- Cargo.toml | 9 ++------ src/client/mod.rs | 2 +- src/lib.rs | 1 + src/util/date.rs | 58 ----------------------------------------------- src/util/mod.rs | 2 +- 5 files changed, 5 insertions(+), 67 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 1ea418a..26b1c61 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -56,10 +56,7 @@ data-encoding = "2.0.0" urlencoding = "2.1.0" quick-xml = { version = "0.37.0", features = ["serialize"] } tracing = { version = "0.1.0", features = ["log"] } -windows-sys = { version = "0.59.0", features = [ - "Win32_System_Time", - "Win32_Foundation", -] } +localzone = "0.3.1" # CLI indicatif = "0.17.0" @@ -118,11 +115,9 @@ phf.workspace = true data-encoding.workspace = true urlencoding.workspace = true tracing.workspace = true +localzone.workspace = true quick-xml = { workspace = true, optional = true } -[target.'cfg(windows)'.dependencies] -windows-sys.workspace = true - [dev-dependencies] rstest.workspace = true tokio-test.workspace = true diff --git a/src/client/mod.rs b/src/client/mod.rs index e21b752..61e358e 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -2626,7 +2626,7 @@ fn validate_country(country: Country) -> Country { fn local_tz_offset() -> (String, i16) { match ( - util::local_timezone_name(), + localzone::get_local_zone().ok_or(Error::Other("could not get local timezone".into())), UtcOffset::current_local_offset().map_err(|_| Error::Other("indeterminate offset".into())), ) { (Ok(timezone), Ok(offset)) => (timezone, offset.whole_minutes()), diff --git a/src/lib.rs b/src/lib.rs index 88ef929..012211e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,6 @@ #![doc = include_str!("../README.md")] #![cfg_attr(docsrs, feature(doc_cfg))] +#![forbid(unsafe_code)] #![warn(missing_docs, clippy::todo, clippy::dbg_macro)] //! ## Go to diff --git a/src/util/date.rs b/src/util/date.rs index d9ed6f9..b21fed3 100644 --- a/src/util/date.rs +++ b/src/util/date.rs @@ -1,7 +1,5 @@ use time::{Date, Duration, Month, OffsetDateTime}; -use crate::error::Error; - /// Shift a date by the given number of months. /// Ambiguous month-ends are shifted backwards as necessary. pub fn shift_months(date: Date, months: i32) -> Date { @@ -44,57 +42,6 @@ pub fn now_sec() -> OffsetDateTime { .unwrap() } -/// Gets the current timezone from the system. -/// -/// Currently only supported for Windows, Unix, and WASM targets. -/// -/// # Errors -/// Returns an [Error](enum@Error) if the timezone cannot be determined. -pub fn local_timezone_name() -> Result { - #[cfg(unix)] - { - use std::path::Path; - let path = Path::new("/etc/localtime"); - let realpath = std::fs::read_link(path) - .map_err(|_| Error::Other("could not read localtime".into()))?; - // The part of the path we're interested in cannot contain non unicode characters. - return realpath - .to_str() - .and_then(|s| s.split("/zoneinfo/").last()) - .map(str::to_owned) - .ok_or_else(|| { - Error::Other(format!("could not parse zoneinfo path: {realpath:?}").into()) - }); - } - - #[cfg(windows)] - { - unsafe { - use windows_sys::Win32::System::Time::GetDynamicTimeZoneInformation; - use windows_sys::Win32::System::Time::DYNAMIC_TIME_ZONE_INFORMATION; - let mut data: DYNAMIC_TIME_ZONE_INFORMATION = std::mem::zeroed(); - let res = GetDynamicTimeZoneInformation(&mut data as _); - if res > 2 { - return Err(Error::Other("local timezone could not be read".into())); - } else { - let win_name_utf16 = &data.TimeZoneKeyName; - let mut len: usize = 0; - while win_name_utf16[len] != 0x0 { - len += 1; - } - if len == 0 { - return Err(Error::Other("local timezone could not be read".into())); - } - return String::from_utf16(&win_name_utf16[..len]) - .map_err(|_| Error::Other("local timezone is invalid UTF16".into())); - } - } - } - - #[allow(unreachable_code)] - Err(Error::Other("local timezone unsupported".into())) -} - #[cfg(test)] mod tests { use rstest::rstest; @@ -108,9 +55,4 @@ mod tests { let res = super::shift_weeks_monday(date, weeks); assert_eq!(res, expect); } - - #[test] - fn local_timezone_name() { - super::local_timezone_name().unwrap(); - } } diff --git a/src/util/mod.rs b/src/util/mod.rs index c42eb4b..0f4499f 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -5,7 +5,7 @@ mod visitor_data; pub mod dictionary; pub mod timeago; -pub use date::{local_timezone_name, now_sec, shift_months, shift_weeks_monday, shift_years}; +pub use date::{now_sec, shift_months, shift_weeks_monday, shift_years}; pub use protobuf::{string_from_pb, ProtoBuilder}; pub use visitor_data::VisitorDataCache; From 9890538c0ee940ea80fd00cdfc85e99a6cb39f92 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 6 Feb 2025 14:21:43 +0100 Subject: [PATCH 134/191] reorganize time-tz dependency --- Cargo.toml | 1 - cli/Cargo.toml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 26b1c61..4831324 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,7 +47,6 @@ time = { version = "0.3.37", features = [ "serde-well-known", "local-offset", ] } -time-tz = { version = "2.0.0" } futures-util = "0.3.31" ress = "0.11.0" phf = "0.11.0" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index a1c2257..c4cd005 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -51,7 +51,7 @@ serde.workspace = true serde_json.workspace = true quick-xml.workspace = true time = { workspace = true, optional = true } -time-tz = { workspace = true, optional = true } +time-tz = { version = "2.0.0", optional = true } indicatif.workspace = true anyhow.workspace = true From c87bac18563683b74e441bc25ae027cc5b3b991b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 6 Feb 2025 14:28:37 +0100 Subject: [PATCH 135/191] shorten CLI timezone flags, add docs --- cli/README.md | 6 ++++++ cli/src/main.rs | 10 +++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/cli/README.md b/cli/README.md index b4056c4..28c34a4 100644 --- a/cli/README.md +++ b/cli/README.md @@ -135,6 +135,12 @@ Fetch a list of all the items saved in your YouTube/YouTube Music profile. `--auth` flag you can use authentication for any request. - `--lang` Change the YouTube content language - `--country` Change the YouTube content country +- `--tz` Use a specific + [timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) (e.g. + Europe/Berlin, Australia/Sydney) + + **Note:** this requires building rustypipe-cli with the `timezone` feature +- `--local-tz` Use the local timezone instead of UTC - `--report` Generate a report on every request and store it in a `rustypipe_reports` folder in the current directory - `--cache-file` Change the RustyPipe cache file location (Default: diff --git a/cli/src/main.rs b/cli/src/main.rs index 1940ed0..f192dd8 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -55,13 +55,13 @@ struct Cli { /// YouTube content country #[clap(long, global = true)] country: Option, - /// UTC offset in minutes + /// Use a specific timezone (e.g. Europe/Berlin, Australia/Sydney) #[cfg(feature = "timezone")] #[clap(long, global = true)] - timezone: Option, + tz: Option, /// Use local timezone #[clap(long, global = true)] - timezone_local: bool, + tz_local: bool, /// Use authentication #[clap(long, global = true)] auth: bool, @@ -920,12 +920,12 @@ async fn run() -> anyhow::Result<()> { if let Some(botguard_bin) = cli.botguard_bin { rp = rp.botguard_bin(botguard_bin); } - if cli.timezone_local { + if cli.tz_local { rp = rp.timezone_local(); } #[cfg(feature = "timezone")] - if let Some(timezone) = cli.timezone { + if let Some(timezone) = cli.tz { use time::OffsetDateTime; use time_tz::{Offset, TimeZone}; From 65cb4244c6ab547f53d0cb12af802c4189188c86 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 7 Feb 2025 04:43:35 +0100 Subject: [PATCH 136/191] feat!: add userdata feature for all personal data queries (playback history, subscriptions) --- .forgejo/workflows/ci.yaml | 9 +- .pre-commit-config.yaml | 6 +- .woodpecker.yml | 10 --- Cargo.toml | 5 +- Justfile | 16 ++-- cli/Cargo.toml | 2 +- codegen/Cargo.toml | 2 +- codegen/src/download_testfiles.rs | 25 +++--- src/client/mod.rs | 9 +- src/client/music_playlist.rs | 14 --- .../{music_history.rs => music_userdata.rs} | 18 +++- src/client/pagination.rs | 29 ++++-- src/client/playlist.rs | 22 ----- src/client/response/mod.rs | 13 ++- src/client/response/music_item.rs | 10 ++- src/client/response/video_item.rs | 17 ++-- ...__music_userdata__tests__map_history.snap} | 0 ...client__userdata__tests__map_history.snap} | 0 ...erdata__tests__map_subscription_feed.snap} | 0 src/client/{history.rs => userdata.rs} | 28 +++++- src/util/mod.rs | 7 +- src/util/timeago.rs | 1 + .../music_history.json | 0 .../saved_albums.json | 0 .../saved_artists.json | 0 .../saved_playlists.json | 0 .../saved_tracks.json | 0 testfiles/{history => userdata}/history.json | 0 .../subscription_feed.json | 0 .../{history => userdata}/subscriptions.json | 0 tests/youtube.rs | 89 ++++++++++--------- 31 files changed, 189 insertions(+), 143 deletions(-) delete mode 100644 .woodpecker.yml rename src/client/{music_history.rs => music_userdata.rs} (90%) rename src/client/snapshots/{rustypipe__client__music_history__tests__map_history.snap => rustypipe__client__music_userdata__tests__map_history.snap} (100%) rename src/client/snapshots/{rustypipe__client__history__tests__map_history.snap => rustypipe__client__userdata__tests__map_history.snap} (100%) rename src/client/snapshots/{rustypipe__client__history__tests__map_subscription_feed.snap => rustypipe__client__userdata__tests__map_subscription_feed.snap} (100%) rename src/client/{history.rs => userdata.rs} (90%) rename testfiles/{music_history => music_userdata}/music_history.json (100%) rename testfiles/{music_history => music_userdata}/saved_albums.json (100%) rename testfiles/{music_history => music_userdata}/saved_artists.json (100%) rename testfiles/{music_history => music_userdata}/saved_playlists.json (100%) rename testfiles/{music_history => music_userdata}/saved_tracks.json (100%) rename testfiles/{history => userdata}/history.json (100%) rename testfiles/{history => userdata}/subscription_feed.json (100%) rename testfiles/{history => userdata}/subscriptions.json (100%) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index e7610ed..49e7479 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -35,10 +35,15 @@ jobs: rustypipe-botguard --version - name: 📎 Clippy - run: cargo clippy --all --tests --features=rss,indicatif,audiotag -- -D warnings + run: | + cargo clippy --all --tests --features=rss,userdata,indicatif,audiotag -- -D warnings + cargo clippy --package=rustypipe --tests -- -D warnings + cargo clippy --package=rustypipe-downloader -- -D warnings + cargo clippy --package=rustypipe-cli -- -D warnings + cargo clippy --package=rustypipe-cli --features=timezone -- -D warnings - name: 🧪 Test - run: cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace -- --skip 'cookie_auth::' + run: cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss,userdata --workspace -- --skip 'user_data::' env: ALL_PROXY: "http://warpproxy:8124" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d48fd4e..9a0cbb3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,4 +10,8 @@ repos: hooks: - id: cargo-fmt - id: cargo-clippy - args: ["--all", "--tests", "--features=rss,indicatif,audiotag", "--", "-D", "warnings"] + name: cargo-clippy rustypipe + args: ["--package=rustypipe", "--tests", "--", "-D", "warnings"] + - id: cargo-clippy + name: cargo-clippy workspace + args: ["--all", "--tests", "--features=rss,userdata,indicatif,audiotag", "--", "-D", "warnings"] diff --git a/.woodpecker.yml b/.woodpecker.yml deleted file mode 100644 index c76d6d0..0000000 --- a/.woodpecker.yml +++ /dev/null @@ -1,10 +0,0 @@ -steps: - test: - image: rust:latest - environment: - - CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse - commands: - - rustup component add rustfmt clippy - - cargo fmt --all --check - - cargo clippy --all --features=rss -- -D warnings - - cargo test --features=rss --workspace diff --git a/Cargo.toml b/Cargo.toml index 4831324..b9a7dc3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -84,6 +84,7 @@ rustypipe-downloader = { path = "./downloader", version = "0.2.1", default-featu default = ["default-tls"] rss = ["dep:quick-xml"] +userdata = [] # Reqwest TLS options default-tls = ["reqwest/default-tls"] @@ -126,6 +127,6 @@ tracing-test.workspace = true [package.metadata.docs.rs] # To build locally: -# RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --features rss --no-deps --open -features = ["rss"] +# RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --features rss,userdata --no-deps --open +features = ["rss", "userdata"] rustdoc-args = ["--cfg", "docsrs"] diff --git a/Justfile b/Justfile index 76e8102..d8bd7aa 100644 --- a/Justfile +++ b/Justfile @@ -1,19 +1,19 @@ test: - # cargo test --features=rss - cargo nextest run --workspace --features=rss --no-fail-fast --retries 1 -- --skip 'cookie_auth::' + # cargo test --features=rss,userdata + cargo nextest run --workspace --features=rss,userdata --no-fail-fast --retries 1 -- --skip 'user_data::' unittest: - cargo nextest run --features=rss --no-fail-fast --lib + cargo nextest run --features=rss,userdata --no-fail-fast --lib testyt: - cargo nextest run --features=rss --no-fail-fast --retries 1 --test youtube -- --skip 'cookie_auth::' + cargo nextest run --features=rss,userdata --no-fail-fast --retries 1 --test youtube -- --skip 'user_data::' testyt-cookie: - cargo nextest run --features=rss --no-fail-fast --retries 1 --test youtube + cargo nextest run --features=rss,userdata --no-fail-fast --retries 1 --test youtube testyt-localized: - YT_LANG=th cargo nextest run --features=rss --no-fail-fast --retries 1 --test youtube -- \ - --skip 'cookie_auth::' --skip 'search_suggestion' --skip 'isrc_search_languages' + YT_LANG=th cargo nextest run --features=rss,userdata --no-fail-fast --retries 1 --test youtube -- \ + --skip 'user_data::' --skip 'search_suggestion' --skip 'isrc_search_languages' testintl: #!/usr/bin/env bash @@ -33,7 +33,7 @@ testintl: echo "---TESTS FOR $YT_LANG ---" if YT_LANG="$YT_LANG" cargo nextest run --no-fail-fast --retries 1 --test-threads 4 --test youtube -- \ - --skip 'cookie_auth::' --skip 'search_suggestion' --skip 'isrc_search_languages' --skip 'resolve_'; then + --skip 'user_data::' --skip 'search_suggestion' --skip 'isrc_search_languages' --skip 'resolve_'; then echo "--- $YT_LANG COMPLETED ---" else echo "--- $YT_LANG FAILED ---" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index c4cd005..d6954b5 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -42,7 +42,7 @@ rustls-tls-native-roots = [ ] [dependencies] -rustypipe = { workspace = true, features = ["rss"] } +rustypipe = { workspace = true, features = ["rss", "userdata"] } rustypipe-downloader.workspace = true reqwest.workspace = true tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml index 0ccb5ac..4b602d8 100644 --- a/codegen/Cargo.toml +++ b/codegen/Cargo.toml @@ -9,7 +9,7 @@ repository.workspace = true publish = false [dependencies] -rustypipe = { path = "../" } +rustypipe = { path = "../", features = ["userdata"] } reqwest.workspace = true tokio = { workspace = true, features = ["rt-multi-thread"] } futures-util.workspace = true diff --git a/codegen/src/download_testfiles.rs b/codegen/src/download_testfiles.rs index 9e6f2bf..cd85654 100644 --- a/codegen/src/download_testfiles.rs +++ b/codegen/src/download_testfiles.rs @@ -39,9 +39,6 @@ pub async fn download_testfiles() { search_playlists().await; search_empty().await; trending().await; - history().await; - subscriptions().await; - subscription_feed().await; music_playlist().await; music_playlist_cont().await; @@ -65,6 +62,12 @@ pub async fn download_testfiles() { music_charts().await; music_genres().await; music_genre().await; + + // User data + history().await; + subscriptions().await; + subscription_feed().await; + music_history().await; music_saved_artists().await; music_saved_albums().await; @@ -464,7 +467,7 @@ async fn trending() { } async fn history() { - let json_path = path!(*TESTFILES_DIR / "history" / "history.json"); + let json_path = path!(*TESTFILES_DIR / "userdata" / "history.json"); if json_path.exists() { return; } @@ -474,7 +477,7 @@ async fn history() { } async fn subscriptions() { - let json_path = path!(*TESTFILES_DIR / "history" / "subscriptions.json"); + let json_path = path!(*TESTFILES_DIR / "userdata" / "subscriptions.json"); if json_path.exists() { return; } @@ -484,7 +487,7 @@ async fn subscriptions() { } async fn subscription_feed() { - let json_path = path!(*TESTFILES_DIR / "history" / "subscription_feed.json"); + let json_path = path!(*TESTFILES_DIR / "userdata" / "subscription_feed.json"); if json_path.exists() { return; } @@ -816,7 +819,7 @@ async fn music_genre() { } async fn music_history() { - let json_path = path!(*TESTFILES_DIR / "music_history" / "music_history.json"); + let json_path = path!(*TESTFILES_DIR / "music_userdata" / "music_history.json"); if json_path.exists() { return; } @@ -826,7 +829,7 @@ async fn music_history() { } async fn music_saved_artists() { - let json_path = path!(*TESTFILES_DIR / "music_history" / "saved_artists.json"); + let json_path = path!(*TESTFILES_DIR / "music_userdata" / "saved_artists.json"); if json_path.exists() { return; } @@ -836,7 +839,7 @@ async fn music_saved_artists() { } async fn music_saved_albums() { - let json_path = path!(*TESTFILES_DIR / "music_history" / "saved_albums.json"); + let json_path = path!(*TESTFILES_DIR / "music_userdata" / "saved_albums.json"); if json_path.exists() { return; } @@ -846,7 +849,7 @@ async fn music_saved_albums() { } async fn music_saved_tracks() { - let json_path = path!(*TESTFILES_DIR / "music_history" / "saved_tracks.json"); + let json_path = path!(*TESTFILES_DIR / "music_userdata" / "saved_tracks.json"); if json_path.exists() { return; } @@ -856,7 +859,7 @@ async fn music_saved_tracks() { } async fn music_saved_playlists() { - let json_path = path!(*TESTFILES_DIR / "music_history" / "saved_playlists.json"); + let json_path = path!(*TESTFILES_DIR / "music_userdata" / "saved_playlists.json"); if json_path.exists() { return; } diff --git a/src/client/mod.rs b/src/client/mod.rs index 61e358e..cbdd5b4 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -3,12 +3,10 @@ pub(crate) mod response; mod channel; -mod history; mod music_artist; mod music_charts; mod music_details; mod music_genres; -mod music_history; mod music_new; mod music_playlist; mod music_search; @@ -20,6 +18,13 @@ mod trends; mod url_resolver; mod video_details; +#[cfg(feature = "userdata")] +#[cfg_attr(docsrs, doc(cfg(feature = "userdata")))] +mod music_userdata; +#[cfg(feature = "userdata")] +#[cfg_attr(docsrs, doc(cfg(feature = "userdata")))] +mod userdata; + #[cfg(feature = "rss")] #[cfg_attr(docsrs, doc(cfg(feature = "rss")))] mod channel_rss; diff --git a/src/client/music_playlist.rs b/src/client/music_playlist.rs index b09656a..002d7c1 100644 --- a/src/client/music_playlist.rs +++ b/src/client/music_playlist.rs @@ -122,20 +122,6 @@ impl RustyPipeQuery { } Ok(album) } - - /// Get all liked YouTube Music tracks of the logged-in user - /// - /// The difference to [`RustyPipeQuery::music_saved_tracks`] is that this function only returns - /// tracks that were explicitly liked by the user. - /// - /// Requires authentication cookies. - pub async fn music_liked_tracks(&self) -> Result { - self.clone() - .authenticated() - .music_playlist("LM") - .await - .map_err(util::map_internal_playlist_err) - } } impl MapResponse for response::MusicPlaylist { diff --git a/src/client/music_history.rs b/src/client/music_userdata.rs similarity index 90% rename from src/client/music_history.rs rename to src/client/music_userdata.rs index 50c5844..8c256cb 100644 --- a/src/client/music_history.rs +++ b/src/client/music_userdata.rs @@ -8,7 +8,7 @@ use crate::{ error::{Error, ExtractionError}, model::{ paginator::{ContinuationEndpoint, Paginator}, - AlbumItem, ArtistItem, HistoryItem, MusicPlaylistItem, TrackItem, + AlbumItem, ArtistItem, HistoryItem, MusicPlaylist, MusicPlaylistItem, TrackItem, }, serializer::MapResult, }; @@ -127,6 +127,20 @@ impl RustyPipeQuery { ) .await } + + /// Get all liked YouTube Music tracks of the logged-in user + /// + /// The difference to [`RustyPipeQuery::music_saved_tracks`] is that this function only returns + /// tracks that were explicitly liked by the user. + /// + /// Requires authentication cookies. + pub async fn music_liked_tracks(&self) -> Result { + self.clone() + .authenticated() + .music_playlist("LM") + .await + .map_err(crate::util::map_internal_playlist_err) + } } impl MapResponse>> for response::MusicHistory { @@ -195,7 +209,7 @@ mod tests { #[test] fn map_history() { - let json_path = path!(*TESTFILES / "music_history" / "music_history.json"); + let json_path = path!(*TESTFILES / "music_userdata" / "music_history.json"); let json_file = File::open(json_path).unwrap(); let history: response::MusicHistory = diff --git a/src/client/pagination.rs b/src/client/pagination.rs index 1440ebe..49093eb 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -6,12 +6,15 @@ use crate::model::{ traits::FromYtItem, Comment, MusicItem, YouTubeItem, }; -use crate::model::{HistoryItem, TrackItem, VideoItem}; use crate::serializer::MapResult; -use self::response::YouTubeListItem; +#[cfg(feature = "userdata")] +use crate::model::{HistoryItem, TrackItem, VideoItem}; -use super::response::music_item::{map_queue_item, MusicListMapper, PlaylistPanelVideo}; +use super::response::{ + music_item::{map_queue_item, MusicListMapper, PlaylistPanelVideo}, + YouTubeListItem, +}; use super::{ response, ClientType, MapRespCtx, MapRespOptions, MapResponse, QContinuation, RustyPipeQuery, }; @@ -225,6 +228,7 @@ impl MapResponse> for response::MusicContinuation { } } +#[cfg(feature = "userdata")] impl MapResponse>> for response::Continuation { fn map_response( self, @@ -270,6 +274,7 @@ impl MapResponse>> for response::Continuation { } } +#[cfg(feature = "userdata")] impl MapResponse>> for response::MusicContinuation { fn map_response( self, @@ -422,6 +427,8 @@ impl Paginator { } } +#[cfg(feature = "userdata")] +#[cfg_attr(docsrs, doc(cfg(feature = "userdata")))] impl Paginator> { /// Get the next page from the paginator (or `None` if the paginator is exhausted) pub async fn next>(&self, query: Q) -> Result, Error> { @@ -437,6 +444,8 @@ impl Paginator> { } } +#[cfg(feature = "userdata")] +#[cfg_attr(docsrs, doc(cfg(feature = "userdata")))] impl Paginator> { /// Get the next page from the paginator (or `None` if the paginator is exhausted) pub async fn next>(&self, query: Q) -> Result, Error> { @@ -533,7 +542,11 @@ macro_rules! paginator { } paginator!(Comment); +#[cfg(feature = "userdata")] +#[cfg_attr(docsrs, doc(cfg(feature = "userdata")))] paginator!(HistoryItem); +#[cfg(feature = "userdata")] +#[cfg_attr(docsrs, doc(cfg(feature = "userdata")))] paginator!(HistoryItem); #[cfg(test)] @@ -620,7 +633,7 @@ mod tests { } #[rstest] - #[case::subscriptions("subscriptions", path!("history" / "subscriptions.json"))] + #[case::subscriptions("subscriptions", path!("userdata" / "subscriptions.json"))] fn map_continuation_channels(#[case] name: &str, #[case] path: PathBuf) { let json_path = path!(*TESTFILES / path); let json_file = File::open(json_path).unwrap(); @@ -644,7 +657,7 @@ mod tests { #[case::playlist_tracks("playlist_tracks", path!("music_playlist" / "playlist_cont.json"))] #[case::search_tracks("search_tracks", path!("music_search" / "tracks_cont.json"))] #[case::radio_tracks("radio_tracks", path!("music_details" / "radio_cont.json"))] - #[case::saved_tracks("saved_tracks", path!("music_history" / "saved_tracks.json"))] + #[case::saved_tracks("saved_tracks", path!("music_userdata" / "saved_tracks.json"))] fn map_continuation_tracks(#[case] name: &str, #[case] path: PathBuf) { let json_path = path!(*TESTFILES / path); let json_file = File::open(json_path).unwrap(); @@ -665,7 +678,7 @@ mod tests { } #[rstest] - #[case::saved_artists("saved_artists", path!("music_history" / "saved_artists.json"))] + #[case::saved_artists("saved_artists", path!("music_userdata" / "saved_artists.json"))] fn map_continuation_artists(#[case] name: &str, #[case] path: PathBuf) { let json_path = path!(*TESTFILES / path); let json_file = File::open(json_path).unwrap(); @@ -686,7 +699,7 @@ mod tests { } #[rstest] - #[case::saved_albums("saved_albums", path!("music_history" / "saved_albums.json"))] + #[case::saved_albums("saved_albums", path!("music_userdata" / "saved_albums.json"))] fn map_continuation_albums(#[case] name: &str, #[case] path: PathBuf) { let json_path = path!(*TESTFILES / path); let json_file = File::open(json_path).unwrap(); @@ -708,7 +721,7 @@ mod tests { #[rstest] #[case::playlist_related("playlist_related", path!("music_playlist" / "playlist_related.json"))] - #[case::saved_playlists("saved_playlists", path!("music_history" / "saved_playlists.json"))] + #[case::saved_playlists("saved_playlists", path!("music_userdata" / "saved_playlists.json"))] fn map_continuation_music_playlists(#[case] name: &str, #[case] path: PathBuf) { let json_path = path!(*TESTFILES / path); let json_file = File::open(json_path).unwrap(); diff --git a/src/client/playlist.rs b/src/client/playlist.rs index 79e2329..b911b99 100644 --- a/src/client/playlist.rs +++ b/src/client/playlist.rs @@ -33,28 +33,6 @@ impl RustyPipeQuery { ) .await } - - /// Get all liked videos of the logged-in user - /// - /// Requires authentication cookies. - pub async fn liked_videos(&self) -> Result { - self.clone() - .authenticated() - .playlist("LL") - .await - .map_err(util::map_internal_playlist_err) - } - - /// Get the "Watch later" playlist of the logged-in user - /// - /// Requires authentication cookies. - pub async fn watch_later(&self) -> Result { - self.clone() - .authenticated() - .playlist("WL") - .await - .map_err(util::map_internal_playlist_err) - } } impl MapResponse for response::Playlist { diff --git a/src/client/response/mod.rs b/src/client/response/mod.rs index c23c449..0dc466f 100644 --- a/src/client/response/mod.rs +++ b/src/client/response/mod.rs @@ -1,10 +1,8 @@ pub(crate) mod channel; -pub(crate) mod history; pub(crate) mod music_artist; pub(crate) mod music_charts; pub(crate) mod music_details; pub(crate) mod music_genres; -pub(crate) mod music_history; pub(crate) mod music_item; pub(crate) mod music_new; pub(crate) mod music_playlist; @@ -19,7 +17,6 @@ pub(crate) mod video_item; pub(crate) use channel::Channel; pub(crate) use channel::ChannelAbout; -pub(crate) use history::History; pub(crate) use music_artist::MusicArtist; pub(crate) use music_artist::MusicArtistAlbums; pub(crate) use music_charts::MusicCharts; @@ -28,7 +25,6 @@ pub(crate) use music_details::MusicLyrics; pub(crate) use music_details::MusicRelated; pub(crate) use music_genres::MusicGenre; pub(crate) use music_genres::MusicGenres; -pub(crate) use music_history::MusicHistory; pub(crate) use music_item::MusicContinuation; pub(crate) use music_new::MusicNew; pub(crate) use music_playlist::MusicPlaylist; @@ -51,6 +47,15 @@ pub(crate) mod channel_rss; #[cfg(feature = "rss")] pub(crate) use channel_rss::ChannelRss; +#[cfg(feature = "userdata")] +pub(crate) mod history; +#[cfg(feature = "userdata")] +pub(crate) use history::History; +#[cfg(feature = "userdata")] +pub(crate) mod music_history; +#[cfg(feature = "userdata")] +pub(crate) use music_history::MusicHistory; + use std::borrow::Cow; use std::collections::HashMap; use std::marker::PhantomData; diff --git a/src/client/response/music_item.rs b/src/client/response/music_item.rs index d2bf983..f7cadf6 100644 --- a/src/client/response/music_item.rs +++ b/src/client/response/music_item.rs @@ -1,11 +1,10 @@ use serde::Deserialize; use serde_with::{rust::deserialize_ignore_any, serde_as, DefaultOnError, VecSkipError}; -use time::UtcOffset; use crate::{ model::{ self, traits::FromYtItem, AlbumId, AlbumItem, AlbumType, ArtistId, ArtistItem, ChannelId, - HistoryItem, MusicItem, MusicItemType, MusicPlaylistItem, TrackItem, UserItem, + MusicItem, MusicItemType, MusicPlaylistItem, TrackItem, UserItem, }, param::Language, serializer::{ @@ -23,6 +22,11 @@ use super::{ SimpleHeaderRenderer, Thumbnails, ThumbnailsWrap, }; +#[cfg(feature = "userdata")] +use crate::model::HistoryItem; +#[cfg(feature = "userdata")] +use time::UtcOffset; + #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) enum ItemSection { @@ -40,6 +44,7 @@ pub(crate) enum ItemSection { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct MusicShelf { + #[cfg(feature = "userdata")] #[serde_as(as = "Option")] pub title: Option, /// Playlist ID (only for playlists) @@ -1270,6 +1275,7 @@ impl MusicListMapper { } } + #[cfg(feature = "userdata")] pub fn conv_history_items( self, date_txt: Option, diff --git a/src/client/response/video_item.rs b/src/client/response/video_item.rs index f855f3f..2a48bc6 100644 --- a/src/client/response/video_item.rs +++ b/src/client/response/video_item.rs @@ -2,14 +2,11 @@ use serde::Deserialize; use serde_with::{ rust::deserialize_ignore_any, serde_as, DefaultOnError, DisplayFromStr, VecSkipError, }; -use time::{OffsetDateTime, UtcOffset}; +use time::OffsetDateTime; -use super::{ - ChannelBadge, ContentImage, ContinuationEndpoint, PhMetadataView, SimpleHeaderRenderer, - Thumbnails, -}; +use super::{ChannelBadge, ContentImage, ContinuationEndpoint, PhMetadataView, Thumbnails}; use crate::{ - model::{Channel, ChannelItem, ChannelTag, HistoryItem, PlaylistItem, VideoItem, YouTubeItem}, + model::{Channel, ChannelItem, ChannelTag, PlaylistItem, VideoItem, YouTubeItem}, param::Language, serializer::{ text::{AttributedText, Text, TextComponent}, @@ -18,6 +15,11 @@ use crate::{ util::{self, timeago, TryRemove}, }; +#[cfg(feature = "userdata")] +use crate::{client::response::SimpleHeaderRenderer, model::HistoryItem}; +#[cfg(feature = "userdata")] +use time::UtcOffset; + #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] @@ -66,6 +68,7 @@ pub(crate) enum YouTubeListItem { /// GridRenderer: contains videos on channel page #[serde(alias = "expandedShelfContentsRenderer", alias = "gridRenderer")] ItemSectionRenderer { + #[cfg(feature = "userdata")] header: Option, #[serde(alias = "items")] contents: MapResult>, @@ -298,6 +301,7 @@ pub(crate) struct YouTubeListRenderer { pub contents: MapResult>, } +#[cfg(feature = "userdata")] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct ItemSectionHeader { @@ -904,6 +908,7 @@ impl YouTubeListMapper { res.c.into_iter().for_each(|item| self.map_item(item)); } + #[cfg(feature = "userdata")] pub(crate) fn conv_history_items( self, date_txt: Option, diff --git a/src/client/snapshots/rustypipe__client__music_history__tests__map_history.snap b/src/client/snapshots/rustypipe__client__music_userdata__tests__map_history.snap similarity index 100% rename from src/client/snapshots/rustypipe__client__music_history__tests__map_history.snap rename to src/client/snapshots/rustypipe__client__music_userdata__tests__map_history.snap diff --git a/src/client/snapshots/rustypipe__client__history__tests__map_history.snap b/src/client/snapshots/rustypipe__client__userdata__tests__map_history.snap similarity index 100% rename from src/client/snapshots/rustypipe__client__history__tests__map_history.snap rename to src/client/snapshots/rustypipe__client__userdata__tests__map_history.snap diff --git a/src/client/snapshots/rustypipe__client__history__tests__map_subscription_feed.snap b/src/client/snapshots/rustypipe__client__userdata__tests__map_subscription_feed.snap similarity index 100% rename from src/client/snapshots/rustypipe__client__history__tests__map_subscription_feed.snap rename to src/client/snapshots/rustypipe__client__userdata__tests__map_subscription_feed.snap diff --git a/src/client/history.rs b/src/client/userdata.rs similarity index 90% rename from src/client/history.rs rename to src/client/userdata.rs index 427715c..c2e4815 100644 --- a/src/client/history.rs +++ b/src/client/userdata.rs @@ -7,7 +7,7 @@ use crate::{ error::{Error, ExtractionError}, model::{ paginator::{ContinuationEndpoint, Paginator}, - ChannelItem, HistoryItem, PlaylistItem, VideoItem, + ChannelItem, HistoryItem, Playlist, PlaylistItem, VideoItem, }, serializer::MapResult, }; @@ -148,6 +148,28 @@ impl RustyPipeQuery { ) .await } + + /// Get all liked videos of the logged-in user + /// + /// Requires authentication cookies. + pub async fn liked_videos(&self) -> Result { + self.clone() + .authenticated() + .playlist("LL") + .await + .map_err(crate::util::map_internal_playlist_err) + } + + /// Get the "Watch later" playlist of the logged-in user + /// + /// Requires authentication cookies. + pub async fn watch_later(&self) -> Result { + self.clone() + .authenticated() + .playlist("WL") + .await + .map_err(crate::util::map_internal_playlist_err) + } } impl MapResponse>> for response::History { @@ -258,7 +280,7 @@ mod tests { #[test] fn map_history() { - let json_path = path!(*TESTFILES / "history" / "history.json"); + let json_path = path!(*TESTFILES / "userdata" / "history.json"); let json_file = File::open(json_path).unwrap(); let history: response::History = @@ -278,7 +300,7 @@ mod tests { #[test] fn map_subscription_feed() { - let json_path = path!(*TESTFILES / "history" / "subscription_feed.json"); + let json_path = path!(*TESTFILES / "userdata" / "subscription_feed.json"); let json_file = File::open(json_path).unwrap(); let history: response::History = diff --git a/src/util/mod.rs b/src/util/mod.rs index 0f4499f..fc6af15 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -21,7 +21,7 @@ use regex::Regex; use url::Url; use crate::{ - error::{AuthError, Error, ExtractionError}, + error::Error, param::{Country, Language, COUNTRIES}, serializer::text::TextComponent, }; @@ -581,9 +581,10 @@ where /// /// If no user is logged in, YouTube returns a "NotFound" error. This has to be corrected /// into a NoLogin error. +#[cfg(feature = "userdata")] pub fn map_internal_playlist_err(e: Error) -> Error { - if let Error::Extraction(ExtractionError::NotFound { .. }) = e { - Error::Auth(AuthError::NoLogin) + if let Error::Extraction(crate::error::ExtractionError::NotFound { .. }) = e { + Error::Auth(crate::error::AuthError::NoLogin) } else { e } diff --git a/src/util/timeago.rs b/src/util/timeago.rs index 011b3ed..8452415 100644 --- a/src/util/timeago.rs +++ b/src/util/timeago.rs @@ -347,6 +347,7 @@ pub fn parse_textual_date_to_dt( /// Parse a textual date (e.g. "29 minutes ago" "Jul 2, 2014") into a Date object. /// /// Returns None if the date could not be parsed. +#[cfg(feature = "userdata")] pub fn parse_textual_date_to_d( lang: Language, utc_offset: UtcOffset, diff --git a/testfiles/music_history/music_history.json b/testfiles/music_userdata/music_history.json similarity index 100% rename from testfiles/music_history/music_history.json rename to testfiles/music_userdata/music_history.json diff --git a/testfiles/music_history/saved_albums.json b/testfiles/music_userdata/saved_albums.json similarity index 100% rename from testfiles/music_history/saved_albums.json rename to testfiles/music_userdata/saved_albums.json diff --git a/testfiles/music_history/saved_artists.json b/testfiles/music_userdata/saved_artists.json similarity index 100% rename from testfiles/music_history/saved_artists.json rename to testfiles/music_userdata/saved_artists.json diff --git a/testfiles/music_history/saved_playlists.json b/testfiles/music_userdata/saved_playlists.json similarity index 100% rename from testfiles/music_history/saved_playlists.json rename to testfiles/music_userdata/saved_playlists.json diff --git a/testfiles/music_history/saved_tracks.json b/testfiles/music_userdata/saved_tracks.json similarity index 100% rename from testfiles/music_history/saved_tracks.json rename to testfiles/music_userdata/saved_tracks.json diff --git a/testfiles/history/history.json b/testfiles/userdata/history.json similarity index 100% rename from testfiles/history/history.json rename to testfiles/userdata/history.json diff --git a/testfiles/history/subscription_feed.json b/testfiles/userdata/subscription_feed.json similarity index 100% rename from testfiles/history/subscription_feed.json rename to testfiles/userdata/subscription_feed.json diff --git a/testfiles/history/subscriptions.json b/testfiles/userdata/subscriptions.json similarity index 100% rename from testfiles/history/subscriptions.json rename to testfiles/userdata/subscriptions.json diff --git a/tests/youtube.rs b/tests/youtube.rs index 140770a..9a5fc35 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -5,7 +5,7 @@ use std::fmt::Display; use std::str::FromStr; use rstest::{fixture, rstest}; -use rustypipe::model::{HistoryItem, TrackItem, TrackType, VideoItem}; +use rustypipe::model::TrackType; use rustypipe::param::{AlbumOrder, LANGUAGES}; use time::{macros::date, OffsetDateTime}; @@ -2728,9 +2728,12 @@ async fn isrc_search_languages(rp: RustyPipe) { } } -mod cookie_auth { +#[cfg(feature = "userdata")] +mod user_data { use super::*; + use rustypipe::model::{HistoryItem, TrackItem, VideoItem}; + #[rstest] #[tokio::test] async fn history(rp: RustyPipe) { @@ -2814,6 +2817,30 @@ mod cookie_auth { let tracks = rp.query().music_liked_tracks().await.unwrap(); assert_next_items(tracks.tracks, rp.query(), 5).await; } + + /// Assert that the history paginator produces at least n items + async fn assert_next_history>( + paginator: Paginator>, + query: Q, + n_items: usize, + ) { + let mut p = paginator; + let query = query.as_ref(); + p.extend_limit(query, n_items).await.unwrap(); + assert_gte(p.items.len(), n_items, "items"); + } + + /// Assert that the music history paginator produces at least n items + async fn assert_next_music_history>( + paginator: Paginator>, + query: Q, + n_items: usize, + ) { + let mut p = paginator; + let query = query.as_ref(); + p.extend_limit(query, n_items).await.unwrap(); + assert_gte(p.items.len(), n_items, "items"); + } } #[rstest] @@ -2940,30 +2967,6 @@ async fn assert_next_items>( assert_gte(p.items.len(), n_items, "items"); } -/// Assert that the history paginator produces at least n items -async fn assert_next_history>( - paginator: Paginator>, - query: Q, - n_items: usize, -) { - let mut p = paginator; - let query = query.as_ref(); - p.extend_limit(query, n_items).await.unwrap(); - assert_gte(p.items.len(), n_items, "items"); -} - -/// Assert that the music history paginator produces at least n items -async fn assert_next_music_history>( - paginator: Paginator>, - query: Q, - n_items: usize, -) { - let mut p = paginator; - let query = query.as_ref(); - p.extend_limit(query, n_items).await.unwrap(); - assert_gte(p.items.len(), n_items, "items"); -} - #[track_caller] fn assert_frameset(frameset: &Frameset) { assert_gte(frameset.frame_height, 20, "frame height"); @@ -3025,10 +3028,6 @@ async fn all_send_and_sync() { rp.query() .drm_license("", rustypipe::model::DrmSystem::Widevine, "", "", &[]), ); - send_and_sync(rp.query().history()); - send_and_sync(rp.query().history_continuation("", None)); - send_and_sync(rp.query().history_search("")); - send_and_sync(rp.query().liked_videos()); send_and_sync(rp.query().music_album("")); send_and_sync(rp.query().music_artist("", false)); send_and_sync(rp.query().music_artist_albums("", None, None)); @@ -3037,9 +3036,6 @@ async fn all_send_and_sync() { send_and_sync(rp.query().music_details("")); send_and_sync(rp.query().music_genre("")); send_and_sync(rp.query().music_genres()); - send_and_sync(rp.query().music_history()); - send_and_sync(rp.query().music_history_continuation("", None)); - send_and_sync(rp.query().music_liked_tracks()); send_and_sync(rp.query().music_lyrics("")); send_and_sync(rp.query().music_new_albums()); send_and_sync(rp.query().music_new_videos()); @@ -3048,10 +3044,6 @@ async fn all_send_and_sync() { send_and_sync(rp.query().music_radio_playlist("")); send_and_sync(rp.query().music_radio_track("")); send_and_sync(rp.query().music_related("")); - send_and_sync(rp.query().music_saved_albums()); - send_and_sync(rp.query().music_saved_artists()); - send_and_sync(rp.query().music_saved_playlists()); - send_and_sync(rp.query().music_saved_tracks()); send_and_sync(rp.query().music_search::("", None)); send_and_sync(rp.query().music_search_albums("")); send_and_sync(rp.query().music_search_artists("")); @@ -3068,17 +3060,32 @@ async fn all_send_and_sync() { send_and_sync(rp.query().raw(ClientType::Desktop, "", "")); send_and_sync(rp.query().resolve_string("", false)); send_and_sync(rp.query().resolve_url("", false)); - send_and_sync(rp.query().saved_playlists()); send_and_sync(rp.query().search::("")); send_and_sync( rp.query() .search_filter::("", &SearchFilter::default()), ); send_and_sync(rp.query().search_suggestion("")); - send_and_sync(rp.query().subscription_feed()); - send_and_sync(rp.query().subscriptions()); send_and_sync(rp.query().trending()); send_and_sync(rp.query().video_comments("", None)); send_and_sync(rp.query().video_details("")); - send_and_sync(rp.query().watch_later()); + + #[cfg(feature = "userdata")] + { + send_and_sync(rp.query().history()); + send_and_sync(rp.query().history_continuation("", None)); + send_and_sync(rp.query().history_search("")); + send_and_sync(rp.query().liked_videos()); + send_and_sync(rp.query().watch_later()); + send_and_sync(rp.query().music_history()); + send_and_sync(rp.query().music_history_continuation("", None)); + send_and_sync(rp.query().music_saved_albums()); + send_and_sync(rp.query().music_saved_artists()); + send_and_sync(rp.query().music_saved_playlists()); + send_and_sync(rp.query().music_saved_tracks()); + send_and_sync(rp.query().saved_playlists()); + send_and_sync(rp.query().subscription_feed()); + send_and_sync(rp.query().subscriptions()); + send_and_sync(rp.query().music_liked_tracks()); + } } From a80f046a198c6d9e2cdad20d74dc6e4436f8d1b1 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 7 Feb 2025 20:46:33 +0100 Subject: [PATCH 137/191] ci: update rustypipe-botguard --- .forgejo/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 49e7479..6c53208 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -28,7 +28,7 @@ jobs: run: | TARGET=$(rustc --version --verbose | grep "host:" | sed -e 's/^host: //') cd ~ - curl -SsL -o rustypipe-botguard.tar.xz "https://codeberg.org/ThetaDev/rustypipe-botguard/releases/download/v0.1.0/rustypipe-botguard-v0.1.0-${TARGET}.tar.xz" + curl -SsL -o rustypipe-botguard.tar.xz "https://codeberg.org/ThetaDev/rustypipe-botguard/releases/download/v0.1.1/rustypipe-botguard-v0.1.1-${TARGET}.tar.xz" cd /usr/local/bin sudo tar -xJf ~/rustypipe-botguard.tar.xz rm ~/rustypipe-botguard.tar.xz From 0c94267d0371b2b26c7b5c9abfa156d5cde2153e Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 7 Feb 2025 22:00:48 +0100 Subject: [PATCH 138/191] fix: only use cached potokens with min. 10min lifetime --- src/client/mod.rs | 64 ++++++++++++++++++++++++++++++---------- src/util/visitor_data.rs | 2 +- 2 files changed, 49 insertions(+), 17 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index cbdd5b4..3962be8 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -508,6 +508,26 @@ impl DefaultOpt { /// - [`music_new_albums`](RustyPipeQuery::music_new_albums) /// - [`music_new_videos`](RustyPipeQuery::music_new_videos) /// +/// ### User data (🔒 Feature `userdata`) +/// +/// - **Playback history** +/// - [`history`](RustyPipeQuery::history) +/// - [`history_search`](RustyPipeQuery::history_search) +/// - [`music_history`](RustyPipeQuery::music_history) +/// - **YouTube library** +/// - [`liked_videos`](RustyPipeQuery::liked_videos) +/// - [`watch_later`](RustyPipeQuery::watch_later) +/// - [`saved_playlists`](RustyPipeQuery::saved_playlists) +/// - **Music library** +/// - [`music_saved_artists`](RustyPipeQuery::music_saved_artists) +/// - [`music_saved_albums`](RustyPipeQuery::music_saved_albums) +/// - [`music_saved_tracks`](RustyPipeQuery::music_saved_tracks) +/// - [`music_saved_playlists`](RustyPipeQuery::music_saved_playlists) +/// - [`music_liked_tracks`](RustyPipeQuery::music_liked_tracks) +/// - **Subscriptions** +/// - [`subscriptions`](RustyPipeQuery::subscriptions) +/// - [`subscription_feed`](RustyPipeQuery::subscription_feed) +/// /// ## Options /// /// You can set the language, country and visitor data ID for individual requests. @@ -848,9 +868,9 @@ impl RustyPipeBuilder { self } - /// Set the maximum number of attempts for HTTP requests (at least 1). + /// Set the maximum number of attempts for YouTube requests (at least 1). /// - /// If a HTTP requests fails because of a serverside error and retries are enabled, + /// If a request fails because of a serverside error and retries are enabled, /// RustyPipe waits 1 second before the next attempt. /// /// The wait time is doubled for subsequent attempts (including a bit of @@ -2196,26 +2216,38 @@ impl RustyPipeQuery { } let mut valid_until = None; + let mut from_snapshot = false; for word in words { if let Some((k, v)) = word.split_once('=') { - if k == "valid_until" { - valid_until = Some( - v.parse::() - .ok() - .and_then(|x| OffsetDateTime::from_unix_timestamp(x).ok()) - .ok_or(ExtractionError::Botguard( - format!("invalid validity date: {v}").into(), - ))?, - ); + match k { + "valid_until" => { + valid_until = Some( + v.parse::() + .ok() + .and_then(|x| OffsetDateTime::from_unix_timestamp(x).ok()) + .ok_or(ExtractionError::Botguard( + format!("invalid validity date: {v}").into(), + ))?, + ); + } + "from_snapshot" => { + from_snapshot = v.eq_ignore_ascii_case("true") || v == "1"; + } + _ => {} } } } - tracing::debug!("generated PO token (took {:?})", start.elapsed()); - Ok(( - tokens, - valid_until.unwrap_or_else(|| OffsetDateTime::now_utc() + time::Duration::hours(12)), - )) + let valid_until = + valid_until.unwrap_or_else(|| OffsetDateTime::now_utc() + time::Duration::hours(12)); + + tracing::debug!( + "generated PO token (valid_until {}, from_snapshot={}, took {}ms)", + valid_until, + from_snapshot, + start.elapsed().as_millis() + ); + Ok((tokens, valid_until)) } async fn get_session_po_token(&self, visitor_data: &str) -> Result { diff --git a/src/util/visitor_data.rs b/src/util/visitor_data.rs index b9a3d7b..1daf1bd 100644 --- a/src/util/visitor_data.rs +++ b/src/util/visitor_data.rs @@ -181,7 +181,7 @@ impl VisitorDataCache { pub fn get_pot(&self, visitor_data: &str) -> Option { let pots = self.inner.session_potoken.read().unwrap(); if let Some(entry) = pots.get(visitor_data) { - if entry.valid_until > OffsetDateTime::now_utc() { + if entry.valid_until > OffsetDateTime::now_utc() + time::Duration::minutes(10) { return Some(entry.clone()); } } From c1a872e1c14ea0956053bd7c65f6875b1cb3bc55 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 7 Feb 2025 22:50:56 +0100 Subject: [PATCH 139/191] refactor: rename rustypipe-cli binary name to rustypipe --- cli/Cargo.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cli/Cargo.toml b/cli/Cargo.toml index d6954b5..67fa3df 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -64,3 +64,7 @@ dirs.workspace = true anstream = "0.6.15" owo-colors = "4.0.0" const_format = "0.2.33" + +[[bin]] +name = "rustypipe" +path = "src/main.rs" From 9957add2b5d6391b2c1869d2019fd7dd91b8cd41 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 7 Feb 2025 23:09:05 +0100 Subject: [PATCH 140/191] doc: add Botguard info to README --- README.md | 28 ++++++++++++++++++++++++++++ cli/README.md | 13 ++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c4df0c2..767680f 100644 --- a/README.md +++ b/README.md @@ -181,6 +181,19 @@ Subscribers: 1780000 ... ``` +## Crate features + +Some features of RustyPipe are gated behind features to avoid compiling unneeded +dependencies. + +- `rss` Fetch a channel's RSS feed, which is faster than fetching the channel page +- `userdata` Add functions to fetch YouTube user data (watch history, subscriptions, + music library) + +You can also choose the TLS library used for making web requests using the same features +as the reqwest crate (`default-tls`, `native-tls`, `native-tls-alpn`, +`native-tls-vendored`, `rustls-tls-webpki-roots`, `rustls-tls-native-roots`). + ## Cache storage The RustyPipe cache holds the current version numbers for all clients, the JavaScript @@ -213,6 +226,21 @@ RustyPipe reports come in 3 severity levels: incomplete) - ERR (entire response could not be deserialized/parsed, RustyPipe returned an error) +## PO tokens + +Since August 2024 YouTube requires PO tokens to access streams from web-based clients +(Desktop, Mobile). Otherwise streams will return a 403 error. + +Generating PO tokens requires a simulated browser environment, which would be too large +to include in RustyPipe directly. + +Therefore, the PO token generation is handled by a seperate CLI application +([rustypipe-botguard](https://codeberg.org/ThetaDev/rustypipe-botguard)) which is called +by the RustyPipe crate. RustyPipe automatically detects the rustypipe-botguard binary if +it is located in PATH or the current working directory. If your rustypipe-botguard +binary is located at a different path, you can specify it with the `.botguard_bin(path)` +option. + ## Authentication RustyPipe supports authenticating with your YouTube account to access diff --git a/cli/README.md b/cli/README.md index 28c34a4..25a9e49 100644 --- a/cli/README.md +++ b/cli/README.md @@ -8,7 +8,17 @@ The RustyPipe CLI is a powerful YouTube client for the command line. It allows y access most of the features of the RustyPipe crate: getting data from YouTube and downloading videos. -The following subcommands are included: +## Installation + +You can download a compiled version of RustyPipe here: + + +Alternatively, you can compile it yourself by installing [Rust](https://rustup.rs/) and +running `cargo install rustypipe-cli`. + +To be able to download streams from web-based clients (Desktop, Mobile) you need to +download [rustypipe-botguard](https://codeberg.org/ThetaDev/rustypipe-botguard/releases) +and place the binary either in the PATH or the current working directory. ## `get`: Fetch information @@ -140,6 +150,7 @@ Fetch a list of all the items saved in your YouTube/YouTube Music profile. Europe/Berlin, Australia/Sydney) **Note:** this requires building rustypipe-cli with the `timezone` feature + - `--local-tz` Use the local timezone instead of UTC - `--report` Generate a report on every request and store it in a `rustypipe_reports` folder in the current directory From 1d755b76bf4569f7d0bb90a65494ac8e7aae499a Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 9 Feb 2025 01:52:09 +0100 Subject: [PATCH 141/191] feat: add RustyPipe::version_botguard fn, detect rustypipe-botguard in current dir, add botguard version to report --- src/client/channel_rss.rs | 4 +- src/client/mod.rs | 152 ++++++++++++++++++++++++++++---------- src/deobfuscate.rs | 2 +- src/report.rs | 7 +- 4 files changed, 120 insertions(+), 45 deletions(-) diff --git a/src/client/channel_rss.rs b/src/client/channel_rss.rs index b28a802..f3f7319 100644 --- a/src/client/channel_rss.rs +++ b/src/client/channel_rss.rs @@ -3,7 +3,7 @@ use std::fmt::Debug; use crate::{ error::{Error, ExtractionError}, model::ChannelRss, - report::{Report, RustyPipeInfo}, + report::Report, util, }; @@ -45,7 +45,7 @@ impl RustyPipeQuery { Err(e) => { if let Some(reporter) = &self.client.inner.reporter { let report = Report { - info: RustyPipeInfo::new(Some(self.opts.lang)), + info: self.rp_info(), level: crate::report::Level::ERR, operation: "channel_rss", error: Some(e.to_string()), diff --git a/src/client/mod.rs b/src/client/mod.rs index 3962be8..b3df2b2 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -362,6 +362,8 @@ const OAUTH_CLIENT_ID: &str = const OAUTH_CLIENT_SECRET: &str = "SboVhoG9s0rNafixCSGGKXAT"; const OAUTH_SCOPES: &str = "http://gdata.youtube.com https://www.googleapis.com/auth/youtube"; +const BOTGUARD_API_VERSION: &str = "1"; + static CLIENT_VERSION_REGEX: Lazy = Lazy::new(|| Regex::new(r#""INNERTUBE_CONTEXT_CLIENT_VERSION":"([\w\d\._-]+?)""#).unwrap()); @@ -409,11 +411,13 @@ pub struct RustyPipeBuilder { default_opts: RustyPipeOpts, storage_dir: Option, botguard_bin: DefaultOpt, + snapshot_file: Option, po_token_cache: bool, } struct BotguardCfg { program: OsString, + version: String, snapshot_file: PathBuf, po_token_cache: bool, } @@ -441,13 +445,6 @@ impl DefaultOpt { DefaultOpt::Default => Some(f()), } } - fn or_default_opt Option>(self, f: F) -> Option { - match self { - DefaultOpt::Some(x) => Some(x), - DefaultOpt::None => None, - DefaultOpt::Default => f(), - } - } } /// # RustyPipe query @@ -684,6 +681,7 @@ impl RustyPipeBuilder { user_agent: None, storage_dir: None, botguard_bin: DefaultOpt::Default, + snapshot_file: None, po_token_cache: false, } } @@ -749,27 +747,31 @@ impl RustyPipeBuilder { let visitor_data_cache = VisitorDataCache::new(http.clone(), 50, 20); - let botguard_bin = self.botguard_bin.or_default_opt(|| { - let n = OsString::from("rustypipe-botguard"); - let out = std::process::Command::new(&n) - .arg("--version") - .output() - .ok()?; - if !out.status.success() { - return None; + let botguard = match self.botguard_bin { + DefaultOpt::Some(botguard_bin) => Some(detect_botguard_bin(botguard_bin)?), + DefaultOpt::None => None, + DefaultOpt::Default => detect_botguard_bin("./rustypipe-botguard".into()) + .or_else(|_| detect_botguard_bin("rustypipe-botguard".into())) + .map_err(|e| tracing::debug!("could not detect rustypipe-botguard: {e}")) + .ok(), + } + .map(|(program, version)| { + tracing::debug!( + "rustypipe-botguard: using {} at {}", + version, + program.to_string_lossy() + ); + + BotguardCfg { + program: program.to_owned(), + version, + snapshot_file: self.snapshot_file.unwrap_or_else(|| { + let mut snapshot_file = storage_dir.clone(); + snapshot_file.push("bg_snapshot.bin"); + snapshot_file + }), + po_token_cache: self.po_token_cache, } - let output = String::from_utf8_lossy(&out.stdout); - let pat = "rustypipe-botguard-api "; - let pos = output.find(pat)? + pat.len(); - let pos_end = output[pos..] - .char_indices() - .find(|(_, c)| !c.is_ascii_digit()) - .map(|(p, _)| p + pos) - .unwrap_or(output.len()); - if &output[pos..pos_end] != "1" { - return None; - } - Some(n) }); Ok(RustyPipe { @@ -777,7 +779,7 @@ impl RustyPipeBuilder { http, storage, reporter: self.reporter.or_default(|| { - let mut report_dir = storage_dir.clone(); + let mut report_dir = storage_dir; report_dir.push(DEFAULT_REPORT_DIR); Box::new(FileReporter::new(report_dir)) }), @@ -791,15 +793,7 @@ impl RustyPipeBuilder { default_opts: self.default_opts, user_agent, visitor_data_cache, - botguard: botguard_bin.map(|program| { - let mut snapshot_file = storage_dir; - snapshot_file.push("bg_snapshot.bin"); - BotguardCfg { - program, - snapshot_file, - po_token_cache: self.po_token_cache, - } - }), + botguard, }), }) } @@ -1035,6 +1029,18 @@ impl RustyPipeBuilder { self } + /// Set the path where the rustypipe-botguard snapshot file is stored + /// + /// After solving a Botguard challenge, rustypipe-botguard stores its + /// JavaScript environment in a snapshot file, so it can quickly generate additional tokens. + /// + /// By default the snapshot is stored in the storage_dir (Filename: bg_snapshot.bin). + #[must_use] + pub fn botguard_snapshot_file>(mut self, snapshot_file: P) -> Self { + self.snapshot_file = Some(snapshot_file.into()); + self + } + /// Enable caching for session-bound PO tokens /// /// By default, RustyPipe calls Botguard for every player request to fetch both a @@ -1699,6 +1705,11 @@ impl RustyPipe { ); Ok(()) } + + /// Get the version string (e.g. `rustypipe-botguard 0.1.1`) of the used botguard binary + pub async fn version_botguard(&self) -> Option { + self.inner.botguard.as_ref().map(|bg| bg.version.to_owned()) + } } impl RustyPipeQuery { @@ -2177,7 +2188,7 @@ impl RustyPipeQuery { self.client.inner.visitor_data_cache.remove(visitor_data); } - /// Get PO tokens + /// Generate PO tokens async fn get_po_tokens(&self, idents: &[&str]) -> Result<(Vec, OffsetDateTime), Error> { let bg = self .client @@ -2250,6 +2261,7 @@ impl RustyPipeQuery { Ok((tokens, valid_until)) } + /// Get a session-bound PO token (either from cache or newly generated) async fn get_session_po_token(&self, visitor_data: &str) -> Result { if let Some(po_token) = self.client.inner.visitor_data_cache.get_pot(visitor_data) { return Ok(po_token); @@ -2263,7 +2275,7 @@ impl RustyPipeQuery { Ok(po_token) } - /// Get a Proof-of-origin token + /// Get a PO token (Proof-of-origin token) /// /// PO tokens are used by the web-based YouTube clients for requesting player data and video streams. /// @@ -2277,6 +2289,22 @@ impl RustyPipeQuery { }) } + /// Get a new RustyPipeInfo object for reports + fn rp_info(&self) -> RustyPipeInfo<'_> { + RustyPipeInfo::new( + Some(self.opts.lang), + self.client + .inner + .botguard + .as_ref() + .map(|bg| bg.version.as_str()), + ) + } + + /// Execute a request to the YouTube API, then deobfuscate and map the response. + /// + /// Runs a single attempt, returns Ok with a erroneous RequestResult in case of a + /// HTTP or mapping error so it can be retried/reported. async fn execute_request_attempt< R: DeserializeOwned + MapResponse + Debug, M, @@ -2368,6 +2396,10 @@ impl RustyPipeQuery { }) } + /// Execute a request to the YouTube API, then deobfuscate and map the response. + /// + /// Runs up to n_request_attempts, returns Ok with a erroneous RequestResult in case of a + /// HTTP or mapping error so it can be reported. async fn execute_request_inner< R: DeserializeOwned + MapResponse + Debug, M, @@ -2474,7 +2506,7 @@ impl RustyPipeQuery { if level > Level::DBG || self.opts.report { if let Some(reporter) = &self.client.inner.reporter { let report = Report { - info: RustyPipeInfo::new(Some(self.opts.lang)), + info: self.rp_info(), level, operation: &format!("{operation}({id})"), error, @@ -2674,6 +2706,46 @@ fn local_tz_offset() -> (String, i16) { } } +/// Check if a valid Botguard binary is available at the given location +fn detect_botguard_bin(program: OsString) -> Result<(OsString, String), Error> { + let out = std::process::Command::new(&program) + .arg("--version") + .output() + .map_err(|e| { + if e.kind() == std::io::ErrorKind::NotFound { + Error::Other("rustypipe-botguard binary not found".into()) + } else { + Error::Other(format!("error calling rustypipe-botguard {e}").into()) + } + })?; + if !out.status.success() { + return Err(Error::Extraction(ExtractionError::Botguard( + format!("version check failed with status {}", out.status).into(), + ))); + } + let output = String::from_utf8_lossy(&out.stdout); + let pat = "rustypipe-botguard-api "; + let pos = output.find(pat).ok_or(Error::Other( + "no rustypipe-botguard-api version returned".into(), + ))? + pat.len(); + let pos_end = output[pos..] + .char_indices() + .find(|(_, c)| !c.is_ascii_digit()) + .map(|(p, _)| p + pos) + .unwrap_or(output.len()); + let api_version = &output[pos..pos_end]; + if api_version != BOTGUARD_API_VERSION { + return Err(Error::Other( + format!( + "incompatible rustypipe-botguard-api version {api_version}, expected {BOTGUARD_API_VERSION}" + ) + .into(), + )); + } + let version = output[..pos].lines().next().unwrap_or_default().to_owned(); + Ok((program, version)) +} + #[cfg(test)] mod tests { use super::*; diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index d0adc12..75748b2 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -39,7 +39,7 @@ impl DeobfData { if let Err(e) = &res { if let Some(reporter) = reporter { let report = Report { - info: RustyPipeInfo::new(None), + info: RustyPipeInfo::new(None, None), level: Level::ERR, operation: "extract_deobf", error: Some(e.to_string()), diff --git a/src/report.rs b/src/report.rs index 85477fa..3ff5d4d 100644 --- a/src/report.rs +++ b/src/report.rs @@ -70,6 +70,8 @@ pub struct RustyPipeInfo<'a> { /// YouTube content language #[serde(skip_serializing_if = "Option::is_none")] pub language: Option, + /// RustyPipe Botguard version (`rustypipe-botguard 0.1.1`) + pub botguard_version: Option<&'a str>, } /// Reported HTTP request data @@ -104,13 +106,14 @@ pub enum Level { ERR, } -impl RustyPipeInfo<'_> { - pub(crate) fn new(language: Option) -> Self { +impl<'a> RustyPipeInfo<'a> { + pub(crate) fn new(language: Option, botguard_version: Option<&'a str>) -> Self { Self { package: env!("CARGO_PKG_NAME"), version: crate::VERSION, date: util::now_sec(), language, + botguard_version, } } } From c0770f281cbe807a0075ef417bb9aa86bc0989f0 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 9 Feb 2025 01:53:12 +0100 Subject: [PATCH 142/191] ci: release rustypipe-cli binaries --- .forgejo/workflows/release-cli.yaml | 68 +++++++++++++++++++++++++++++ cli/README.md | 4 +- 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 .forgejo/workflows/release-cli.yaml diff --git a/.forgejo/workflows/release-cli.yaml b/.forgejo/workflows/release-cli.yaml new file mode 100644 index 0000000..0e0ca64 --- /dev/null +++ b/.forgejo/workflows/release-cli.yaml @@ -0,0 +1,68 @@ +name: Release CLI +on: + push: + tags: + - "rustypipe-cli/v*.*.*" + +jobs: + Release: + runs-on: cimaster-latest + steps: + - name: 📦 Checkout repository + uses: actions/checkout@v4 + + - name: Setup cross compilation + run: | + rustup target add x86_64-pc-windows-msvc x86_64-apple-darwin aarch64-apple-darwin + cargo install cargo-xwin + + # https://wapl.es/rust/2019/02/17/rust-cross-compile-linux-to-macos.html/ + sudo apt-get install -y llvm clang cmake + cd ~ + git clone https://github.com/tpoechtrager/osxcross + cd osxcross + wget -nc "https://github.com/joseluisq/macosx-sdks/releases/download/12.3/MacOSX12.3.sdk.tar.xz" + mv MacOSX12.3.sdk.tar.xz tarballs/ + UNATTENDED=yes OSX_VERSION_MIN=12.3 ./build.sh + OSXCROSS_BIN="$(pwd)/target/bin" + + echo "CARGO_TARGET_X86_64_APPLE_DARWIN_LINKER=$(find "$OSXCROSS_BIN" -name "x86_64-apple-darwin*-clang")" >> $GITHUB_ENV + echo "CARGO_TARGET_X86_64_APPLE_DARWIN_RUSTFLAGS=-Car=$(find "$OSXCROSS_BIN" -name "x86_64-apple-darwin*-ar"),-Clink-arg=-undefined,-Clink-arg=dynamic_lookup" >> $GITHUB_ENV + echo "CARGO_TARGET_AARCH64_APPLE_DARWIN_LINKER=$(find "$OSXCROSS_BIN" -name "aarch64-apple-darwin*-clang")" >> $GITHUB_ENV + echo "CARGO_TARGET_AARCH64_APPLE_DARWIN_RUSTFLAGS=-Car=$(find "$OSXCROSS_BIN" -name "aarch64-apple-darwin*-ar"),-Clink-arg=-undefined,-Clink-arg=dynamic_lookup" >> $GITHUB_ENV + + - name: ⚒️ Build application + run: | + export PATH="$PATH:$HOME/osxcross/target/bin" + CRATE="rustypipe-cli" + PKG_CONFIG_SYSROOT_DIR=/usr/x86_64-linux-gnu cargo build --release --package=$CRATE --target x86_64-unknown-linux-gnu + PKG_CONFIG_SYSROOT_DIR=/usr/aarch64-linux-gnu cargo build --release --package=$CRATE --target aarch64-unknown-linux-gnu + CC="$CARGO_TARGET_X86_64_APPLE_DARWIN_LINKER" CXX="$CARGO_TARGET_X86_64_APPLE_DARWIN_LINKER++" cargo build --release --package=$CRATE --target x86_64-apple-darwin + CC="$CARGO_TARGET_AARCH64_APPLE_DARWIN_LINKER" CXX="$CARGO_TARGET_AARCH64_APPLE_DARWIN_LINKER++" cargo build --release --package=$CRATE --target aarch64-apple-darwin + cargo xwin build --release --package=$CRATE --target x86_64-pc-windows-msvc + + - name: Prepare release + run: | + CRATE="rustypipe-cli" + BIN="rustypipe" + echo "CRATE=$CRATE" >> "$GITHUB_ENV" + echo "CRATE_VERSION=$(echo '${{ github.ref_name }}' | awk 'BEGIN{RS="/"} NR==2{print}')" >> "$GITHUB_ENV" + CL_PATH="cli/CHANGELOG.md" + { + echo 'CHANGELOG<> "$GITHUB_ENV" + + mkdir dist + + for arch in x86_64-unknown-linux-gnu aarch64-unknown-linux-gnu x86_64-apple-darwin aarch64-apple-darwin; do + tar -cJf "dist/${BIN}-${CRATE_VERSION}-${arch}.tar.xz" -C target/${arch}/release "${BIN}" + done + (cd target/x86_64-pc-windows-msvc/release && zip -9 "../../../dist/${BIN}-${CRATE_VERSION}-x86_64-pc-windows-msvc.zip" "${BIN}.exe") + + - name: 🎉 Publish release + uses: https://gitea.com/actions/release-action@main + with: + title: "${{ env.CRATE }} ${{ env.CRATE_VERSION }}" + body: "${{ env.CHANGELOG }}" diff --git a/cli/README.md b/cli/README.md index 25a9e49..2af17e9 100644 --- a/cli/README.md +++ b/cli/README.md @@ -16,10 +16,12 @@ You can download a compiled version of RustyPipe here: Alternatively, you can compile it yourself by installing [Rust](https://rustup.rs/) and running `cargo install rustypipe-cli`. -To be able to download streams from web-based clients (Desktop, Mobile) you need to +To be able to access streams from web-based clients (Desktop, Mobile) you need to download [rustypipe-botguard](https://codeberg.org/ThetaDev/rustypipe-botguard/releases) and place the binary either in the PATH or the current working directory. +For downloading videos you also need to have ffmpeg installed. + ## `get`: Fetch information You can call the get command with any YouTube entity ID or URL and RustyPipe will fetch From 80a358ee54ee8933a5bb0a2827d8fdf523fd7956 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 9 Feb 2025 02:20:55 +0100 Subject: [PATCH 143/191] Revert "refactor!: rename n_http_retries option to n_request_attempts to be less misleading" This reverts commit b8cfe1b034a7470a9c4a587d709de7542d459091. --- src/client/mod.rs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index b3df2b2..8a2c31b 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -381,7 +381,7 @@ struct RustyPipeRef { http: Client, storage: Option>, reporter: Option>, - n_request_attempts: u32, + n_http_retries: u32, cache: CacheHolder, default_opts: RustyPipeOpts, user_agent: Cow<'static, str>, @@ -405,7 +405,7 @@ struct RustyPipeOpts { pub struct RustyPipeBuilder { storage: DefaultOpt>, reporter: DefaultOpt>, - n_request_attempts: u32, + n_http_retries: u32, timeout: DefaultOpt, user_agent: Option, default_opts: RustyPipeOpts, @@ -677,7 +677,7 @@ impl RustyPipeBuilder { storage: DefaultOpt::Default, reporter: DefaultOpt::Default, timeout: DefaultOpt::Default, - n_request_attempts: 2, + n_http_retries: 2, user_agent: None, storage_dir: None, botguard_bin: DefaultOpt::Default, @@ -783,7 +783,7 @@ impl RustyPipeBuilder { report_dir.push(DEFAULT_REPORT_DIR); Box::new(FileReporter::new(report_dir)) }), - n_request_attempts: self.n_request_attempts, + n_http_retries: self.n_http_retries, cache: CacheHolder { clients: cache_clients, deobf: AsyncRwLock::new(cdata.deobf), @@ -862,7 +862,7 @@ impl RustyPipeBuilder { self } - /// Set the maximum number of attempts for YouTube requests (at least 1). + /// Set the maximum number of retries for YouTube requests. /// /// If a request fails because of a serverside error and retries are enabled, /// RustyPipe waits 1 second before the next attempt. @@ -872,8 +872,8 @@ impl RustyPipeBuilder { /// /// **Default value**: 2 #[must_use] - pub fn n_request_attempts(mut self, n_retries: u32) -> Self { - self.n_request_attempts = n_retries.max(1); + pub fn n_http_retries(mut self, n_retries: u32) -> Self { + self.n_http_retries = n_retries.max(1); self } @@ -1091,7 +1091,7 @@ impl RustyPipe { /// Execute the given http request. async fn http_request(&self, request: &Request) -> Result { let mut last_resp = None; - for n in 0..=self.inner.n_request_attempts { + for n in 0..=self.inner.n_http_retries { let resp = self.inner.http.execute(request.try_clone().unwrap()).await; let err = match resp { @@ -1117,7 +1117,7 @@ impl RustyPipe { }; // Retry in case of a recoverable status code (server err, too many requests) - if n != self.inner.n_request_attempts { + if n != self.inner.n_http_retries { let ms = util::retry_delay(n, 1000, 60000, 3); tracing::warn!( "Retry attempt #{}. Error: {}. Waiting {} ms", @@ -2413,7 +2413,7 @@ impl RustyPipeQuery { ctx_src: &MapRespOptions<'_>, ) -> Result, Error> { let mut last_resp = None; - for n in 0..=self.client.inner.n_request_attempts { + for n in 0..=self.client.inner.n_http_retries { let resp = self .execute_request_attempt::(ctype, id, endpoint, body, ctx_src) .await?; @@ -2431,7 +2431,7 @@ impl RustyPipeQuery { // Remove the used visitor data from cache if the request resulted in a recoverable error self.remove_visitor_data(&resp.visitor_data); - if n != self.client.inner.n_request_attempts { + if n != self.client.inner.n_http_retries { let ms = util::retry_delay(n, 1000, 60000, 3); tracing::warn!( "Retry attempt #{}. Error: {}. Waiting {} ms", From fb1b732d5660bf0d374359d6228a9e255e759ad7 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 9 Feb 2025 02:32:44 +0100 Subject: [PATCH 144/191] chore(release): release rustypipe v0.10.0 --- CHANGELOG.md | 38 ++++++++++++++++++++++++++++++++++++++ Cargo.toml | 4 ++-- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a8d160..77eaabf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,44 @@ All notable changes to this project will be documented in this file. +## [v0.10.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.9.0..rustypipe/v0.10.0) - 2025-02-09 + +### 🚀 Features + +- Add visitor data cache, remove random visitor data - ([b12f4c5](https://codeberg.org/ThetaDev/rustypipe/commit/b12f4c5d821a9189d7ed8410ad860824b6d052ef)) +- Add support for rustypipe-botguard to get PO tokens - ([b90a252](https://codeberg.org/ThetaDev/rustypipe/commit/b90a252a5e1bf05a5294168b0ec16a73cbb88f42)) +- Add session po token cache - ([b72b501](https://codeberg.org/ThetaDev/rustypipe/commit/b72b501b6dbcf4333b24cd80e7c8c61b0c21ec91)) +- Check rustypipe-botguard-api version - ([8385b87](https://codeberg.org/ThetaDev/rustypipe/commit/8385b87c63677f32a240679a78702f53072e517a)) +- Rewrite request attempt system, retry with different visitor data - ([dfd03ed](https://codeberg.org/ThetaDev/rustypipe/commit/dfd03edfadff2657e9cfbf04e5d313ba409520ac)) +- Log failed player fetch attempts with player_from_clients - ([8e35358](https://codeberg.org/ThetaDev/rustypipe/commit/8e35358c8941301f6ebf7646a11ab22711082569)) +- Add timezone query option - ([3a2370b](https://codeberg.org/ThetaDev/rustypipe/commit/3a2370b97ca3d0f40d72d66a23295557317d29fb)) +- [**breaking**] Add userdata feature for all personal data queries (playback history, subscriptions) - ([65cb424](https://codeberg.org/ThetaDev/rustypipe/commit/65cb4244c6ab547f53d0cb12af802c4189188c86)) +- Add RustyPipe::version_botguard fn, detect rustypipe-botguard in current dir, add botguard version to report - ([1d755b7](https://codeberg.org/ThetaDev/rustypipe/commit/1d755b76bf4569f7d0bb90a65494ac8e7aae499a)) + +### 🐛 Bug Fixes + +- Parsing history dates - ([af7dc10](https://codeberg.org/ThetaDev/rustypipe/commit/af7dc1016322a87dd8fec0b739939c2b12b6f400)) +- A/V streams incorrectly recognized as video-only - ([2b891ca](https://codeberg.org/ThetaDev/rustypipe/commit/2b891ca0788f91f16dbb9203191cb3d2092ecc74)) +- Update iOS client - ([e915416](https://codeberg.org/ThetaDev/rustypipe/commit/e91541629d6c944c1001f5883e3c1264aeeb3969)) +- A/B test 20: music continuation item renderer - ([9c67f8f](https://codeberg.org/ThetaDev/rustypipe/commit/9c67f8f85bef8214848dc9d17bff6cff252e015e)) +- Include whole request body in report - ([15245c1](https://codeberg.org/ThetaDev/rustypipe/commit/15245c18b584e42523762b94fcc7284d483660a0)) +- Extracting nsig fn when outside variable starts with $ - ([eda16e3](https://codeberg.org/ThetaDev/rustypipe/commit/eda16e378730a3b57c4982a626df1622a93c574a)) +- Retry updating deobf data after a RustyPipe update - ([50ab1f7](https://codeberg.org/ThetaDev/rustypipe/commit/50ab1f7a5d8aeaa3720264b4a4b27805bb0e8121)) +- Allow player data to be fetched without botguard - ([29c854b](https://codeberg.org/ThetaDev/rustypipe/commit/29c854b20d7a6677415b1744e7ba7ecd4f594ea5)) +- Output full request body in reports, clean up `get_player_po_token` - ([a0d850f](https://codeberg.org/ThetaDev/rustypipe/commit/a0d850f8e01428a73bbd66397d0dbf797b45958f)) +- Correct timezone offset for parsed dates, add timezone_local option - ([a5a7be5](https://codeberg.org/ThetaDev/rustypipe/commit/a5a7be5b4e0a0b73d7e1dc802ebd7bd48dafc76d)) +- Use localzone crate to get local tz - ([5acbf0e](https://codeberg.org/ThetaDev/rustypipe/commit/5acbf0e456b1f10707e0a56125d993a8129eee3a)) +- Only use cached potokens with min. 10min lifetime - ([0c94267](https://codeberg.org/ThetaDev/rustypipe/commit/0c94267d0371b2b26c7b5c9abfa156d5cde2153e)) + +### 📚 Documentation + +- Add Botguard info to README - ([9957add](https://codeberg.org/ThetaDev/rustypipe/commit/9957add2b5d6391b2c1869d2019fd7dd91b8cd41)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate rquickjs to 0.9.0 (#33) - ([2c8ac41](https://codeberg.org/ThetaDev/rustypipe/commit/2c8ac410aa535d83f8bcc7181f81914b13bceb77)) + + ## [v0.9.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.8.0..rustypipe/v0.9.0) - 2025-01-16 ### 🚀 Features diff --git a/Cargo.toml b/Cargo.toml index b9a7dc3..bd15120 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.9.0" +version = "0.10.0" rust-version = "1.67.1" edition.workspace = true authors.workspace = true @@ -74,7 +74,7 @@ path_macro = "1.0.0" tracing-test = "0.2.5" # Included crates -rustypipe = { path = ".", version = "0.9.0", default-features = false } +rustypipe = { path = ".", version = "0.10.0", default-features = false } rustypipe-downloader = { path = "./downloader", version = "0.2.1", default-features = false, features = [ "indicatif", "audiotag", From 26e0c2cb2b83e54677625508731924215fc6ba1b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 9 Feb 2025 02:53:59 +0100 Subject: [PATCH 145/191] chore(release): release rustypipe-downloader v0.3.0 --- Cargo.toml | 2 +- downloader/CHANGELOG.md | 24 ++++++++++++++++++++++++ downloader/Cargo.toml | 2 +- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index bd15120..473ecb3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -75,7 +75,7 @@ tracing-test = "0.2.5" # Included crates rustypipe = { path = ".", version = "0.10.0", default-features = false } -rustypipe-downloader = { path = "./downloader", version = "0.2.1", default-features = false, features = [ +rustypipe-downloader = { path = "./downloader", version = "0.3.0", default-features = false, features = [ "indicatif", "audiotag", ] } diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md index 25d7681..309381d 100644 --- a/downloader/CHANGELOG.md +++ b/downloader/CHANGELOG.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. +## [v0.3.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.7..rustypipe-downloader/v0.3.0) - 2025-02-09 + +### 🚀 Features + +- [**breaking**] Add userdata feature for all personal data queries (playback history, subscriptions) - ([65cb424](https://codeberg.org/ThetaDev/rustypipe/commit/65cb4244c6ab547f53d0cb12af802c4189188c86)) + +### 🐛 Bug Fixes + +- Ensure downloader futures are send - ([812ff4c](https://codeberg.org/ThetaDev/rustypipe/commit/812ff4c5bafffc5708a6d5066f1ebadb6d9fc958)) +- Download audio with dolby codec - ([9234005](https://codeberg.org/ThetaDev/rustypipe/commit/92340056f868007beccb64e9e26eb39abc40f7aa)) + +### 🚜 Refactor + +- [**breaking**] Add client_type field to DownloadError, rename cli option po-token-cache to pot-cache - ([594e675](https://codeberg.org/ThetaDev/rustypipe/commit/594e675b39efc5fbcdbd5e920a4d2cdee64f718e)) + +### 📚 Documentation + +- Add Botguard info to README - ([9957add](https://codeberg.org/ThetaDev/rustypipe/commit/9957add2b5d6391b2c1869d2019fd7dd91b8cd41)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rustypipe to 0.10.0 + + ## [v0.2.7](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.6..rustypipe-downloader/v0.2.7) - 2025-01-16 ### 🚀 Features diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index a410beb..fb49ec5 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-downloader" -version = "0.2.7" +version = "0.3.0" rust-version = "1.67.1" edition.workspace = true authors.workspace = true From 629b5905da653c6fe0f3c6b5814dd2f49030e7ed Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 9 Feb 2025 03:09:47 +0100 Subject: [PATCH 146/191] feat: add verbose flag --- cli/README.md | 4 ++-- cli/src/main.rs | 16 +++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/cli/README.md b/cli/README.md index 2af17e9..7474f0a 100644 --- a/cli/README.md +++ b/cli/README.md @@ -139,8 +139,8 @@ Fetch a list of all the items saved in your YouTube/YouTube Music profile. - **Proxy:** RustyPipe respects the environment variables `HTTP_PROXY`, `HTTPS_PROXY` and `ALL_PROXY` -- **Logging:** You can change the log level with the `RUST_LOG` environment variable, it - is set to `info` by default +- **Logging:** Enable debug logging with the `-v` (verbose) flag. If you want more + fine-grained control, use the `RUST_LOG` environment variable. - **Visitor data:** A custom visitor data ID can be used with the `--vdata` flag - **Authentication:** Use the commands `rustypipe login` and `rustypipe login --cookie` to log into your Google account using either OAuth or YouTube cookies. With the diff --git a/cli/src/main.rs b/cli/src/main.rs index f192dd8..b226221 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -80,6 +80,9 @@ struct Cli { /// Enable caching for session-bound PO tokens #[clap(long, global = true)] pot_cache: bool, + /// Enable debug logging + #[clap(short, long, global = true)] + verbose: bool, } #[derive(Parser)] @@ -878,12 +881,15 @@ async fn run() -> anyhow::Result<()> { let cli = Cli::parse(); let multi = MultiProgress::new(); + let mut env_filter = EnvFilter::builder() + .with_default_directive(LevelFilter::INFO.into()) + .from_env_lossy(); + if cli.verbose { + env_filter = env_filter.add_directive("rustypipe=debug".parse().unwrap()); + } + tracing_subscriber::fmt::SubscriberBuilder::default() - .with_env_filter( - EnvFilter::builder() - .with_default_directive(LevelFilter::INFO.into()) - .from_env_lossy(), - ) + .with_env_filter(env_filter) .with_writer(ProgWriter(multi.clone())) .init(); From 8933c6fa2a38103ec1ae689a4197c5a417bdced8 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 9 Feb 2025 03:14:30 +0100 Subject: [PATCH 147/191] chore(release): release rustypipe-cli v0.7.0 --- cli/CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ cli/Cargo.toml | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 9ebf81a..8d60ece 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -3,6 +3,36 @@ All notable changes to this project will be documented in this file. +## [v0.7.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.6.0..rustypipe-cli/v0.7.0) - 2025-02-09 + +### 🚀 Features + +- Add support for rustypipe-botguard to get PO tokens - ([b90a252](https://codeberg.org/ThetaDev/rustypipe/commit/b90a252a5e1bf05a5294168b0ec16a73cbb88f42)) +- [**breaking**] Remove manual PO token options from downloader/cli, add new rustypipe-botguard options - ([cddb32f](https://codeberg.org/ThetaDev/rustypipe/commit/cddb32f190276265258c6ab45b3d43a8891c4b39)) +- Add session po token cache - ([b72b501](https://codeberg.org/ThetaDev/rustypipe/commit/b72b501b6dbcf4333b24cd80e7c8c61b0c21ec91)) +- Add timezone query option - ([3a2370b](https://codeberg.org/ThetaDev/rustypipe/commit/3a2370b97ca3d0f40d72d66a23295557317d29fb)) +- Add --timezone-local CLI option - ([4f2bb47](https://codeberg.org/ThetaDev/rustypipe/commit/4f2bb47ab42ae0c68a64f3b3c2831fa7850b6f56)) +- Add verbose flag - ([629b590](https://codeberg.org/ThetaDev/rustypipe/commit/629b5905da653c6fe0f3c6b5814dd2f49030e7ed)) + +### 🐛 Bug Fixes + +- Parsing mixed-case language codes like zh-CN - ([9c73ed4](https://codeberg.org/ThetaDev/rustypipe/commit/9c73ed4b3008cb093c0fa7fd94fd9f1ba8cd3627)) + +### 🚜 Refactor + +- [**breaking**] Add client_type field to DownloadError, rename cli option po-token-cache to pot-cache - ([594e675](https://codeberg.org/ThetaDev/rustypipe/commit/594e675b39efc5fbcdbd5e920a4d2cdee64f718e)) +- Rename rustypipe-cli binary to rustypipe - ([c1a872e](https://codeberg.org/ThetaDev/rustypipe/commit/c1a872e1c14ea0956053bd7c65f6875b1cb3bc55)) + +### 📚 Documentation + +- Add Botguard info to README - ([9957add](https://codeberg.org/ThetaDev/rustypipe/commit/9957add2b5d6391b2c1869d2019fd7dd91b8cd41)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rustypipe to 0.10.0 +- *(deps)* Update rust crate rquickjs to 0.9.0 (#33) - ([2c8ac41](https://codeberg.org/ThetaDev/rustypipe/commit/2c8ac410aa535d83f8bcc7181f81914b13bceb77)) + + ## [v0.6.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.5.0..rustypipe-cli/v0.6.0) - 2025-01-16 ### 🚀 Features diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 67fa3df..b429215 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-cli" -version = "0.6.0" +version = "0.7.0" rust-version = "1.70.0" edition.workspace = true authors.workspace = true From f8a0a253cc3a7a4cd5b36c126313541e86653c0d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 9 Feb 2025 03:15:30 +0100 Subject: [PATCH 148/191] change line in downloader changelog --- downloader/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md index 309381d..3877458 100644 --- a/downloader/CHANGELOG.md +++ b/downloader/CHANGELOG.md @@ -7,7 +7,7 @@ All notable changes to this project will be documented in this file. ### 🚀 Features -- [**breaking**] Add userdata feature for all personal data queries (playback history, subscriptions) - ([65cb424](https://codeberg.org/ThetaDev/rustypipe/commit/65cb4244c6ab547f53d0cb12af802c4189188c86)) +- [**breaking**] Remove manual PO token options from downloader in favor of rustypipe-botguard - ([cddb32f](https://codeberg.org/ThetaDev/rustypipe/commit/cddb32f190276265258c6ab45b3d43a8891c4b39)) ### 🐛 Bug Fixes From 45d3a9cd3337c7093cf400368060e60c6fc09d1e Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 9 Feb 2025 03:55:58 +0100 Subject: [PATCH 149/191] ci: add CLI release files --- .forgejo/workflows/release-cli.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.forgejo/workflows/release-cli.yaml b/.forgejo/workflows/release-cli.yaml index 0e0ca64..88578c1 100644 --- a/.forgejo/workflows/release-cli.yaml +++ b/.forgejo/workflows/release-cli.yaml @@ -3,6 +3,7 @@ on: push: tags: - "rustypipe-cli/v*.*.*" + workflow_dispatch: jobs: Release: @@ -66,3 +67,4 @@ jobs: with: title: "${{ env.CRATE }} ${{ env.CRATE_VERSION }}" body: "${{ env.CHANGELOG }}" + files: dist/* From 4d60e64f2c06d4c1dbcc0b8c70cbeced8f5ecc38 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 9 Feb 2025 04:35:30 +0100 Subject: [PATCH 150/191] ci: remove workflow_dispatch trigger --- .forgejo/workflows/release-cli.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.forgejo/workflows/release-cli.yaml b/.forgejo/workflows/release-cli.yaml index 88578c1..6268ead 100644 --- a/.forgejo/workflows/release-cli.yaml +++ b/.forgejo/workflows/release-cli.yaml @@ -3,7 +3,6 @@ on: push: tags: - "rustypipe-cli/v*.*.*" - workflow_dispatch: jobs: Release: From 739eac4d1fa9414367fda929535b72f344d24ee5 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 18 Feb 2025 00:16:09 +0100 Subject: [PATCH 151/191] test: fix tests --- .../youtube__music_artist_basic_all.snap | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/tests/snapshots/youtube__music_artist_basic_all.snap b/tests/snapshots/youtube__music_artist_basic_all.snap index 2fd25a1..aef63a7 100644 --- a/tests/snapshots/youtube__music_artist_basic_all.snap +++ b/tests/snapshots/youtube__music_artist_basic_all.snap @@ -146,21 +146,6 @@ MusicArtist( year: Some(2015), by_va: false, ), - AlbumItem( - id: "MPREb_ghrNI6BJSM8", - name: "Friends And Family", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - name: "Every Time I Die", - ), - ], - artist_id: Some("UCFKUUtHjT4iq3p0JJA13SOA"), - album_type: album, - year: Some(2017), - by_va: false, - ), AlbumItem( id: "MPREb_h0UZr2ALQXf", name: "From Parts Unknown (Deluxe Edition)", From 83f86527766e49dbddf45f1c2999500d58bb8ebd Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Feb 2025 23:02:15 +0000 Subject: [PATCH 152/191] ci: disable renovate --- .forgejo/workflows/{renovate.yaml => renovate.yaml.bak} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .forgejo/workflows/{renovate.yaml => renovate.yaml.bak} (100%) diff --git a/.forgejo/workflows/renovate.yaml b/.forgejo/workflows/renovate.yaml.bak similarity index 100% rename from .forgejo/workflows/renovate.yaml rename to .forgejo/workflows/renovate.yaml.bak From 544782f8de728cda0aca9a1cb95837cdfbd001f1 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 25 Feb 2025 22:16:14 +0100 Subject: [PATCH 153/191] feat: add original album track count, fix fetching albums with more than 200 tracks --- src/client/music_playlist.rs | 35 +- ...__map_music_album_20240228_twoColumns.snap | 1 + ...t__tests__map_music_album_description.snap | 1 + ...st__tests__map_music_album_one_artist.snap | 1 + ...aylist__tests__map_music_album_single.snap | 1 + ...t__tests__map_music_album_unavailable.snap | 1 + ...ests__map_music_album_various_artists.snap | 1 + src/model/mod.rs | 2 + src/util/visitor_data.rs | 11 +- .../youtube__music_album_audiobook.snap | 3813 ++++++++++++++++- tests/snapshots/youtube__music_album_ep.snap | 1 + .../youtube__music_album_no_artist.snap | 1 + .../youtube__music_album_no_year.snap | 1 + .../youtube__music_album_one_artist.snap | 1 + .../snapshots/youtube__music_album_show.snap | 1 + .../youtube__music_album_single.snap | 1 + .../youtube__music_album_unavailable.snap | 1 + .../youtube__music_album_various_artists.snap | 1 + 18 files changed, 3870 insertions(+), 5 deletions(-) diff --git a/src/client/music_playlist.rs b/src/client/music_playlist.rs index 002d7c1..a11e6bf 100644 --- a/src/client/music_playlist.rs +++ b/src/client/music_playlist.rs @@ -95,11 +95,21 @@ impl RustyPipeQuery { }) .collect::>(); - if !to_replace.is_empty() { + let last_tn = album + .tracks + .last() + .and_then(|t| t.track_nr) + .unwrap_or_default(); + if !to_replace.is_empty() || last_tn < album.track_count { + tracing::debug!( + "fetching album playlist ({} tracks, {} to replace)", + album.track_count, + to_replace.len() + ); let mut playlist = self.music_playlist(playlist_id).await?; playlist .tracks - .extend_limit(&self, album.tracks.len()) + .extend_limit(&self, album.track_count.into()) .await?; for (i, title) in to_replace { @@ -118,6 +128,18 @@ impl RustyPipeQuery { album.tracks[i].track_type = TrackType::Track; } } + + // Extend the list of album tracks with the ones from the playlist if the playlist returned more tracks + // This is the case for albums with more than 200 tracks (e.g. audiobooks) + if album.tracks.len() < playlist.tracks.items.len() { + let mut tn = last_tn; + for mut t in playlist.tracks.items.into_iter().skip(album.tracks.len()) { + tn += 1; + t.album = album.tracks.first().and_then(|t| t.album.clone()); + t.track_nr = Some(tn); + album.tracks.push(t); + } + } } } Ok(album) @@ -457,6 +479,14 @@ impl MapResponse for response::MusicPlaylist { .unwrap_or_default(); let artist_id = artist_id.or_else(|| artists.first().and_then(|a| a.id.clone())); + let second_subtitle_parts = header + .second_subtitle + .split(|p| p == DOT_SEPARATOR) + .collect::>(); + let track_count = second_subtitle_parts + .get(usize::from(second_subtitle_parts.len() > 2)) + .and_then(|txt| util::parse_numeric::(&txt[0]).ok()); + let mut mapper = MusicListMapper::with_album( ctx.lang, artists.clone(), @@ -491,6 +521,7 @@ impl MapResponse for response::MusicPlaylist { album_type, year, by_va, + track_count: track_count.unwrap_or(tracks_res.c.len() as u16), tracks: tracks_res.c, variants: variants_res.c, }, diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_20240228_twoColumns.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_20240228_twoColumns.snap index 84ca230..3a080cd 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_20240228_twoColumns.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_20240228_twoColumns.snap @@ -43,6 +43,7 @@ MusicAlbum( album_type: single, year: Some(2020), by_va: false, + track_count: 1, tracks: [ TrackItem( id: "XX0epju-YvY", diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_description.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_description.snap index 13e1d87..09e8d67 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_description.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_description.snap @@ -43,6 +43,7 @@ MusicAlbum( album_type: album, year: Some(2015), by_va: false, + track_count: 11, tracks: [ TrackItem( id: "YQHsXMglC9A", diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_one_artist.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_one_artist.snap index 486d93f..1d55603 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_one_artist.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_one_artist.snap @@ -39,6 +39,7 @@ MusicAlbum( album_type: album, year: Some(2016), by_va: false, + track_count: 18, tracks: [ TrackItem( id: "g0iRiJ_ck48", diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_single.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_single.snap index ed4ce55..bf5add2 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_single.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_single.snap @@ -43,6 +43,7 @@ MusicAlbum( album_type: single, year: Some(2020), by_va: false, + track_count: 1, tracks: [ TrackItem( id: "XX0epju-YvY", diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_unavailable.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_unavailable.snap index 16fb88f..27d07af 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_unavailable.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_unavailable.snap @@ -34,6 +34,7 @@ MusicAlbum( album_type: album, year: Some(2019), by_va: true, + track_count: 18, tracks: [ TrackItem( id: "JWeJHN5P-E8", diff --git a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_various_artists.snap b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_various_artists.snap index 932ff7c..189d625 100644 --- a/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_various_artists.snap +++ b/src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_various_artists.snap @@ -34,6 +34,7 @@ MusicAlbum( album_type: single, year: Some(2022), by_va: true, + track_count: 6, tracks: [ TrackItem( id: "8IqLxg0GqXc", diff --git a/src/model/mod.rs b/src/model/mod.rs index 0912f74..9d53e60 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -1234,6 +1234,8 @@ pub struct MusicAlbum { pub year: Option, /// Is the album by 'Various artists'? pub by_va: bool, + /// Number of album tracks + pub track_count: u16, /// Album tracks pub tracks: Vec, /// Album variants diff --git a/src/util/visitor_data.rs b/src/util/visitor_data.rs index 1daf1bd..0087f96 100644 --- a/src/util/visitor_data.rs +++ b/src/util/visitor_data.rs @@ -245,12 +245,21 @@ mod tests { for _ in 0..4 { cache.get().await.unwrap(); } - tokio::time::sleep(Duration::from_millis(1000)).await; + for _ in 0..3 { + tokio::time::sleep(Duration::from_millis(1000)).await; + { + let vd = cache.inner.visitor_data.read().unwrap(); + if !vd.contains(&v1) { + break; + } + } + } { let vd = cache.inner.visitor_data.read().unwrap(); assert!(!vd.contains(&v1), "first token still present"); } + assert_eq!(cache.get_pot(&v1), None); } } diff --git a/tests/snapshots/youtube__music_album_audiobook.snap b/tests/snapshots/youtube__music_album_audiobook.snap index a1f0632..3f3bd96 100644 --- a/tests/snapshots/youtube__music_album_audiobook.snap +++ b/tests/snapshots/youtube__music_album_audiobook.snap @@ -18,6 +18,7 @@ MusicAlbum( album_type: audiobook, year: Some(2022), by_va: false, + track_count: 319, tracks: [ TrackItem( id: "F28BV_Y-970", @@ -1427,6 +1428,22 @@ MusicAlbum( track_nr: Some(88), by_va: false, ), + TrackItem( + id: "2klbe4CmXaQ", + name: "Kapitel 7.14 - 1984", + duration: Some(129), + cover: [], + artists: [], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(89), + by_va: false, + ), TrackItem( id: "qePq7ltD6j4", name: "Kapitel 7.15 & Kapitel 8.1 - 1984", @@ -3207,8 +3224,24 @@ MusicAlbum( id: "svY6h_e3LYI", name: "Kapitel 17.5 - 1984", duration: Some(128), - cover: [], - artists: [], + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), album: Some(AlbumId( id: "MPREb_gaoNzsQHedo", @@ -3219,6 +3252,3782 @@ MusicAlbum( track_nr: Some(201), by_va: false, ), + TrackItem( + id: "Hir7IMW_37k", + name: "Kapitel 17.6 - 1984", + duration: Some(203), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(202), + by_va: false, + ), + TrackItem( + id: "wrp-KxyqmKs", + name: "Kapitel 17.7 - 1984", + duration: Some(185), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(203), + by_va: false, + ), + TrackItem( + id: "tFQF6fw09ec", + name: "Kapitel 17.8 - 1984", + duration: Some(127), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(204), + by_va: false, + ), + TrackItem( + id: "tzlG81GlTXQ", + name: "Kapitel 17.9 - 1984", + duration: Some(212), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(205), + by_va: false, + ), + TrackItem( + id: "Vno9w1ba-C0", + name: "Kapitel 17.10 - 1984", + duration: Some(152), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(206), + by_va: false, + ), + TrackItem( + id: "Ve19y3AhLBk", + name: "Kapitel 17.11 - 1984", + duration: Some(143), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(207), + by_va: false, + ), + TrackItem( + id: "8oHasQ_tiuI", + name: "Kapitel 17.12 - 1984", + duration: Some(171), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(208), + by_va: false, + ), + TrackItem( + id: "Ap42W06bL2c", + name: "Kapitel 17.13 - 1984", + duration: Some(174), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(209), + by_va: false, + ), + TrackItem( + id: "qmiLwRF0fOs", + name: "Kapitel 17.14 - 1984", + duration: Some(173), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(210), + by_va: false, + ), + TrackItem( + id: "BdiOwfRyToY", + name: "Kapitel 17.15 - 1984", + duration: Some(192), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(211), + by_va: false, + ), + TrackItem( + id: "PlBZ0cGf5DE", + name: "Kapitel 17.16 - 1984", + duration: Some(214), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(212), + by_va: false, + ), + TrackItem( + id: "v9MgxVJWCow", + name: "Kapitel 17.17 - 1984", + duration: Some(367), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(213), + by_va: false, + ), + TrackItem( + id: "5nwe4RMmA8s", + name: "Kapitel 17.18 & Kapitel 18.1 - 1984", + duration: Some(137), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(214), + by_va: false, + ), + TrackItem( + id: "6ZP4rXcPFd0", + name: "Kapitel 18.2 - 1984", + duration: Some(141), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(215), + by_va: false, + ), + TrackItem( + id: "eVhWJKVdo40", + name: "Kapitel 18.3 - 1984", + duration: Some(230), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(216), + by_va: false, + ), + TrackItem( + id: "Vt7keSTK0No", + name: "Kapitel 18.4 - 1984", + duration: Some(180), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(217), + by_va: false, + ), + TrackItem( + id: "Ff3SyoUlcyY", + name: "Kapitel 18.5 - 1984", + duration: Some(234), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(218), + by_va: false, + ), + TrackItem( + id: "gMTJQzds2ac", + name: "Kapitel 18.6 - 1984", + duration: Some(199), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(219), + by_va: false, + ), + TrackItem( + id: "UgAOUifyrqc", + name: "Kapitel 18.7 - 1984", + duration: Some(138), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(220), + by_va: false, + ), + TrackItem( + id: "IGZoSexffaY", + name: "Kapitel 18.8 - 1984", + duration: Some(261), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(221), + by_va: false, + ), + TrackItem( + id: "_yk6rIXnfyw", + name: "Kapitel 18.9 - 1984", + duration: Some(375), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(222), + by_va: false, + ), + TrackItem( + id: "nhznAYDKokI", + name: "Kapitel 18.10 - 1984", + duration: Some(171), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(223), + by_va: false, + ), + TrackItem( + id: "xxcWex5wCpc", + name: "Kapitel 18.11 - 1984", + duration: Some(126), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(224), + by_va: false, + ), + TrackItem( + id: "bHuVgebOTtY", + name: "Kapitel 18.12 - 1984", + duration: Some(409), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(225), + by_va: false, + ), + TrackItem( + id: "4dSMRBLFXE8", + name: "Kapitel 18.13 - 1984", + duration: Some(126), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(226), + by_va: false, + ), + TrackItem( + id: "7nrceuJOGrQ", + name: "Kapitel 18.14 & Kapitel 19.1 - 1984", + duration: Some(152), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(227), + by_va: false, + ), + TrackItem( + id: "rs_bvUV0-ZE", + name: "Kapitel 19.2 - 1984", + duration: Some(194), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(228), + by_va: false, + ), + TrackItem( + id: "SjDAX5b1sCA", + name: "Kapitel 19.3 - 1984", + duration: Some(127), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(229), + by_va: false, + ), + TrackItem( + id: "9LPuIbBxM_4", + name: "Kapitel 19.4 - 1984", + duration: Some(126), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(230), + by_va: false, + ), + TrackItem( + id: "xoTJCozaeFw", + name: "Kapitel 19.5 - 1984", + duration: Some(134), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(231), + by_va: false, + ), + TrackItem( + id: "o9R4zEStCg0", + name: "Kapitel 19.6 - 1984", + duration: Some(127), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(232), + by_va: false, + ), + TrackItem( + id: "v9aTac8EXeU", + name: "Kapitel 19.7 - 1984", + duration: Some(144), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(233), + by_va: false, + ), + TrackItem( + id: "Q6LQBbg9OFg", + name: "Kapitel 19.8 & Kapitel 20.1 - 1984", + duration: Some(130), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(234), + by_va: false, + ), + TrackItem( + id: "m3uHhmbvtLQ", + name: "Kapitel 20.2 - 1984", + duration: Some(149), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(235), + by_va: false, + ), + TrackItem( + id: "6Q6paXKnxN4", + name: "Kapitel 20.3 - 1984", + duration: Some(134), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(236), + by_va: false, + ), + TrackItem( + id: "bZmfzI9OhCs", + name: "Kapitel 20.4 - 1984", + duration: Some(173), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(237), + by_va: false, + ), + TrackItem( + id: "LywfUGAGUPc", + name: "Kapitel 20.5 - 1984", + duration: Some(134), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(238), + by_va: false, + ), + TrackItem( + id: "r3vVFZ3zl94", + name: "Kapitel 20.6 - 1984", + duration: Some(161), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(239), + by_va: false, + ), + TrackItem( + id: "Qenx-MfJ9mw", + name: "Kapitel 20.7 - 1984", + duration: Some(138), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(240), + by_va: false, + ), + TrackItem( + id: "vl_qPscUgdQ", + name: "Kapitel 20.8 - 1984", + duration: Some(137), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(241), + by_va: false, + ), + TrackItem( + id: "FQwclGtvT8A", + name: "Kapitel 20.9 - 1984", + duration: Some(130), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(242), + by_va: false, + ), + TrackItem( + id: "XfZemPEMHYM", + name: "Kapitel 20.10 - 1984", + duration: Some(137), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(243), + by_va: false, + ), + TrackItem( + id: "tXEWSfM5jBI", + name: "Kapitel 20.11 - 1984", + duration: Some(134), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(244), + by_va: false, + ), + TrackItem( + id: "CyYeGELAYks", + name: "Kapitel 20.12 - 1984", + duration: Some(132), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(245), + by_va: false, + ), + TrackItem( + id: "V4crS8euIlY", + name: "Kapitel 20.13 - 1984", + duration: Some(126), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(246), + by_va: false, + ), + TrackItem( + id: "6wkfFwX8hEk", + name: "Kapitel 20.14 - 1984", + duration: Some(127), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(247), + by_va: false, + ), + TrackItem( + id: "7BrXtew4Xf8", + name: "Kapitel 20.15 - 1984", + duration: Some(125), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(248), + by_va: false, + ), + TrackItem( + id: "zBOsHSF010g", + name: "Kapitel 20.16 - 1984", + duration: Some(129), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(249), + by_va: false, + ), + TrackItem( + id: "5hY-Mmqfg-U", + name: "Kapitel 20.17 - 1984", + duration: Some(137), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(250), + by_va: false, + ), + TrackItem( + id: "GWsWxGtQG2U", + name: "Kapitel 20.18 & Kapitel 21.1 - 1984", + duration: Some(178), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(251), + by_va: false, + ), + TrackItem( + id: "CS61jsoqGxM", + name: "Kapitel 21.2 - 1984", + duration: Some(201), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(252), + by_va: false, + ), + TrackItem( + id: "--MDZ6MoFOk", + name: "Kapitel 21.3 - 1984", + duration: Some(126), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(253), + by_va: false, + ), + TrackItem( + id: "APxYXEvS1gI", + name: "Kapitel 21.4 - 1984", + duration: Some(147), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(254), + by_va: false, + ), + TrackItem( + id: "hTZCV0xIaNo", + name: "Kapitel 21.5 - 1984", + duration: Some(147), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(255), + by_va: false, + ), + TrackItem( + id: "fUyVsvSLXAA", + name: "Kapitel 21.6 - 1984", + duration: Some(129), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(256), + by_va: false, + ), + TrackItem( + id: "Ex8KXjkzH6U", + name: "Kapitel 21.7 - 1984", + duration: Some(129), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(257), + by_va: false, + ), + TrackItem( + id: "Jq9_Roh-_qQ", + name: "Kapitel 21.8 - 1984", + duration: Some(138), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(258), + by_va: false, + ), + TrackItem( + id: "O-k4WTkVF_Y", + name: "Kapitel 21.9 - 1984", + duration: Some(125), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(259), + by_va: false, + ), + TrackItem( + id: "e0VydtqA7zA", + name: "Kapitel 21.10 - 1984", + duration: Some(129), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(260), + by_va: false, + ), + TrackItem( + id: "tYHQ1jqyY04", + name: "Kapitel 21.11 - 1984", + duration: Some(126), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(261), + by_va: false, + ), + TrackItem( + id: "uJdxfG7mtxg", + name: "Kapitel 21.12 - 1984", + duration: Some(130), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(262), + by_va: false, + ), + TrackItem( + id: "y9WgL5asujI", + name: "Kapitel 21.13 - 1984", + duration: Some(134), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(263), + by_va: false, + ), + TrackItem( + id: "M2_kYfPFD_o", + name: "Kapitel 21.14 - 1984", + duration: Some(148), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(264), + by_va: false, + ), + TrackItem( + id: "mMk8rWLu2kQ", + name: "Kapitel 21.15 - 1984", + duration: Some(144), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(265), + by_va: false, + ), + TrackItem( + id: "CdlO0Z_uhbM", + name: "Kapitel 21.16 - 1984", + duration: Some(129), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(266), + by_va: false, + ), + TrackItem( + id: "5loS8hlMQ7U", + name: "Kapitel 21.17 - 1984", + duration: Some(138), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(267), + by_va: false, + ), + TrackItem( + id: "2db5x8VGr8A", + name: "Kapitel 21.18 - 1984", + duration: Some(128), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(268), + by_va: false, + ), + TrackItem( + id: "cTRGKM8Jsgc", + name: "Kapitel 21.19 - 1984", + duration: Some(160), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(269), + by_va: false, + ), + TrackItem( + id: "nrfztfR0soo", + name: "Kapitel 21.20 - 1984", + duration: Some(127), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(270), + by_va: false, + ), + TrackItem( + id: "3om6N_pNGZA", + name: "Kapitel 21.21 - 1984", + duration: Some(181), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(271), + by_va: false, + ), + TrackItem( + id: "VN1KvIPeJ00", + name: "Kapitel 21.22 - 1984", + duration: Some(129), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(272), + by_va: false, + ), + TrackItem( + id: "LRuhIRN5d1U", + name: "Kapitel 21.23 - 1984", + duration: Some(134), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(273), + by_va: false, + ), + TrackItem( + id: "dE8U1hliRr4", + name: "Kapitel 21.24 - 1984", + duration: Some(134), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(274), + by_va: false, + ), + TrackItem( + id: "vjIb2Klunv0", + name: "Kapitel 21.25 - 1984", + duration: Some(134), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(275), + by_va: false, + ), + TrackItem( + id: "h8BydzKZOtI", + name: "Kapitel 21.26 & Kapitel 22.1 - 1984", + duration: Some(130), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(276), + by_va: false, + ), + TrackItem( + id: "ADwyhkSHBVM", + name: "Kapitel 22.2 - 1984", + duration: Some(135), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(277), + by_va: false, + ), + TrackItem( + id: "6cDrKGImmQk", + name: "Kapitel 22.3 - 1984", + duration: Some(130), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(278), + by_va: false, + ), + TrackItem( + id: "CdrnLzIJGdk", + name: "Kapitel 22.4 - 1984", + duration: Some(162), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(279), + by_va: false, + ), + TrackItem( + id: "N-ZzOlAX43w", + name: "Kapitel 22.5 - 1984", + duration: Some(134), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(280), + by_va: false, + ), + TrackItem( + id: "7MHmAXMX1F8", + name: "Kapitel 22.6 - 1984", + duration: Some(135), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(281), + by_va: false, + ), + TrackItem( + id: "vSlyuw3eyeU", + name: "Kapitel 22.7 - 1984", + duration: Some(127), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(282), + by_va: false, + ), + TrackItem( + id: "K8ez5KNbl-A", + name: "Kapitel 22.8 - 1984", + duration: Some(145), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(283), + by_va: false, + ), + TrackItem( + id: "J9y2_6f5Dqc", + name: "Kapitel 22.9 - 1984", + duration: Some(155), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(284), + by_va: false, + ), + TrackItem( + id: "d4Grp66WWsM", + name: "Kapitel 22.10 - 1984", + duration: Some(138), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(285), + by_va: false, + ), + TrackItem( + id: "gYCKh7_DAAw", + name: "Kapitel 22.11 - 1984", + duration: Some(127), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(286), + by_va: false, + ), + TrackItem( + id: "L59dwOH-nHQ", + name: "Kapitel 22.12 - 1984", + duration: Some(151), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(287), + by_va: false, + ), + TrackItem( + id: "KS4nFrdUDS8", + name: "Kapitel 22.13 - 1984", + duration: Some(132), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(288), + by_va: false, + ), + TrackItem( + id: "4bEhuh2DtBQ", + name: "Kapitel 22.14 - 1984", + duration: Some(128), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(289), + by_va: false, + ), + TrackItem( + id: "76nvjlkt2xY", + name: "Kapitel 22.15 - 1984", + duration: Some(147), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(290), + by_va: false, + ), + TrackItem( + id: "F7mUlqh-y04", + name: "Kapitel 22.16 - 1984", + duration: Some(145), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(291), + by_va: false, + ), + TrackItem( + id: "KivOUvqJ2n4", + name: "Kapitel 22.17 - 1984", + duration: Some(126), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(292), + by_va: false, + ), + TrackItem( + id: "EHzrgnOh5GA", + name: "Kapitel 22.18 & Kapitel 23.1 - 1984", + duration: Some(146), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(293), + by_va: false, + ), + TrackItem( + id: "10xak85mCso", + name: "Kapitel 23.2 - 1984", + duration: Some(147), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(294), + by_va: false, + ), + TrackItem( + id: "yDnNqeQnn3A", + name: "Kapitel 23.3 - 1984", + duration: Some(137), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(295), + by_va: false, + ), + TrackItem( + id: "l7n3auySj4A", + name: "Kapitel 23.4 - 1984", + duration: Some(141), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(296), + by_va: false, + ), + TrackItem( + id: "Ywtfz72Zywk", + name: "Kapitel 23.5 - 1984", + duration: Some(156), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(297), + by_va: false, + ), + TrackItem( + id: "FZpI_baOd_s", + name: "Kapitel 23.6 - 1984", + duration: Some(130), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(298), + by_va: false, + ), + TrackItem( + id: "8OXK57SjsL0", + name: "Kapitel 23.7 - 1984", + duration: Some(127), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(299), + by_va: false, + ), + TrackItem( + id: "5M-AVirsHzY", + name: "Kapitel 23.8 - 1984", + duration: Some(143), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(300), + by_va: false, + ), + TrackItem( + id: "4BQlY5tiXqY", + name: "Kapitel 23.9 & Kapitel 24.1 - 1984", + duration: Some(165), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(301), + by_va: false, + ), + TrackItem( + id: "1n-_LCwDMUg", + name: "Kapitel 24.2 - 1984", + duration: Some(134), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(302), + by_va: false, + ), + TrackItem( + id: "V-DyXyW8UI4", + name: "Kapitel 24.3 - 1984", + duration: Some(145), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(303), + by_va: false, + ), + TrackItem( + id: "GygcLOKL8B4", + name: "Kapitel 24.4 - 1984", + duration: Some(133), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(304), + by_va: false, + ), + TrackItem( + id: "S78K3PuQ-GM", + name: "Kapitel 24.5 - 1984", + duration: Some(130), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(305), + by_va: false, + ), + TrackItem( + id: "HcbO6kTLRZo", + name: "Kapitel 24.6 - 1984", + duration: Some(132), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(306), + by_va: false, + ), + TrackItem( + id: "-MCqkAaGfl0", + name: "Kapitel 24.7 & Kapitel 25.1 - 1984", + duration: Some(127), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(307), + by_va: false, + ), + TrackItem( + id: "G4edEm1rbeo", + name: "Kapitel 25.2 - 1984", + duration: Some(126), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(308), + by_va: false, + ), + TrackItem( + id: "KA26JvGwM28", + name: "Kapitel 25.3 - 1984", + duration: Some(133), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(309), + by_va: false, + ), + TrackItem( + id: "9GR32DB5RwY", + name: "Kapitel 25.4 - 1984", + duration: Some(131), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(310), + by_va: false, + ), + TrackItem( + id: "06rRLhqrcTk", + name: "Kapitel 25.5 - 1984", + duration: Some(133), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(311), + by_va: false, + ), + TrackItem( + id: "gw2h1uGGwak", + name: "Kapitel 25.6 - 1984", + duration: Some(137), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(312), + by_va: false, + ), + TrackItem( + id: "U1OnhVQHw4c", + name: "Kapitel 25.7 - 1984", + duration: Some(126), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(313), + by_va: false, + ), + TrackItem( + id: "C8UAKN2G0R8", + name: "Kapitel 25.8 - 1984", + duration: Some(133), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(314), + by_va: false, + ), + TrackItem( + id: "-q-TeXqQ9AA", + name: "Kapitel 25.9 - 1984", + duration: Some(128), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(315), + by_va: false, + ), + TrackItem( + id: "r77eoDVeFh0", + name: "Kapitel 25.10 - 1984", + duration: Some(128), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(316), + by_va: false, + ), + TrackItem( + id: "g8RfSPyjiXc", + name: "Kapitel 25.11 - 1984", + duration: Some(130), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(317), + by_va: false, + ), + TrackItem( + id: "au27GX2h7Zc", + name: "Kapitel 25.12 - 1984", + duration: Some(130), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(318), + by_va: false, + ), + TrackItem( + id: "hGHRyXDMR0M", + name: "Kapitel 25.13 - 1984", + duration: Some(138), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/wKdD-SHqfdz6FzU3vyq-je-yqJ2DrRqbwmLxbK0OjpP55RF0Uh1LvtkLiypabLL5oSUWW7YEWxmpw7s=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: None, + name: "George Orwell & Dirk Jacobs", + ), + ], + artist_id: Some("UCTlkMP4GiGuhOiBdcmI65kg"), + album: Some(AlbumId( + id: "MPREb_gaoNzsQHedo", + name: "1984", + )), + view_count: "[view_count]", + track_type: track, + track_nr: Some(319), + by_va: false, + ), ], variants: [], ) diff --git a/tests/snapshots/youtube__music_album_ep.snap b/tests/snapshots/youtube__music_album_ep.snap index 92e2f4d..0920a61 100644 --- a/tests/snapshots/youtube__music_album_ep.snap +++ b/tests/snapshots/youtube__music_album_ep.snap @@ -18,6 +18,7 @@ MusicAlbum( album_type: ep, year: Some(2016), by_va: false, + track_count: 5, tracks: [ TrackItem( id: "aGd3VKSOTxY", diff --git a/tests/snapshots/youtube__music_album_no_artist.snap b/tests/snapshots/youtube__music_album_no_artist.snap index c4831dd..36c65ca 100644 --- a/tests/snapshots/youtube__music_album_no_artist.snap +++ b/tests/snapshots/youtube__music_album_no_artist.snap @@ -13,6 +13,7 @@ MusicAlbum( album_type: album, year: Some(2024), by_va: true, + track_count: 14, tracks: [ TrackItem( id: "ilNEztApdjI", diff --git a/tests/snapshots/youtube__music_album_no_year.snap b/tests/snapshots/youtube__music_album_no_year.snap index 44c8290..dc9a815 100644 --- a/tests/snapshots/youtube__music_album_no_year.snap +++ b/tests/snapshots/youtube__music_album_no_year.snap @@ -26,6 +26,7 @@ MusicAlbum( album_type: single, year: None, by_va: false, + track_count: 1, tracks: [ TrackItem( id: "1Sz3lUVGBSM", diff --git a/tests/snapshots/youtube__music_album_one_artist.snap b/tests/snapshots/youtube__music_album_one_artist.snap index 20e8a9a..31f2166 100644 --- a/tests/snapshots/youtube__music_album_one_artist.snap +++ b/tests/snapshots/youtube__music_album_one_artist.snap @@ -36,6 +36,7 @@ MusicAlbum( album_type: album, year: Some(2011), by_va: false, + track_count: 15, tracks: [ TrackItem( id: "js0moD0CIRQ", diff --git a/tests/snapshots/youtube__music_album_show.snap b/tests/snapshots/youtube__music_album_show.snap index b91af31..87ad246 100644 --- a/tests/snapshots/youtube__music_album_show.snap +++ b/tests/snapshots/youtube__music_album_show.snap @@ -22,6 +22,7 @@ MusicAlbum( album_type: show, year: Some(2015), by_va: false, + track_count: 27, tracks: [ TrackItem( id: "ZIjGPc6vG0Y", diff --git a/tests/snapshots/youtube__music_album_single.snap b/tests/snapshots/youtube__music_album_single.snap index e650e4c..baa3162 100644 --- a/tests/snapshots/youtube__music_album_single.snap +++ b/tests/snapshots/youtube__music_album_single.snap @@ -22,6 +22,7 @@ MusicAlbum( album_type: single, year: Some(2020), by_va: false, + track_count: 1, tracks: [ TrackItem( id: "VU6lEv0PKAo", diff --git a/tests/snapshots/youtube__music_album_unavailable.snap b/tests/snapshots/youtube__music_album_unavailable.snap index 607c137..b3624c5 100644 --- a/tests/snapshots/youtube__music_album_unavailable.snap +++ b/tests/snapshots/youtube__music_album_unavailable.snap @@ -26,6 +26,7 @@ MusicAlbum( album_type: album, year: Some(2019), by_va: false, + track_count: 18, tracks: [ TrackItem( id: "R3VIKRtzAdE", diff --git a/tests/snapshots/youtube__music_album_various_artists.snap b/tests/snapshots/youtube__music_album_various_artists.snap index f3ab8f0..f7eb3d8 100644 --- a/tests/snapshots/youtube__music_album_various_artists.snap +++ b/tests/snapshots/youtube__music_album_various_artists.snap @@ -13,6 +13,7 @@ MusicAlbum( album_type: single, year: Some(2022), by_va: true, + track_count: 6, tracks: [ TrackItem( id: "Tzai7JXo45w", From 6737512f5f67c8cd05d4552dd0e0f24381035b35 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 26 Feb 2025 15:20:25 +0100 Subject: [PATCH 154/191] fix: A/B test 21: music album recommendations --- codegen/src/abtest.rs | 22 +- codegen/src/collect_album_versions_titles.rs | 130 + codegen/src/gen_dictionary.rs | 6 +- codegen/src/main.rs | 31 +- codegen/src/model.rs | 2 + notes/AB_Tests.md | 29 +- notes/_img/ab_21.png | Bin 0 -> 297321 bytes src/client/music_playlist.rs | 17 +- ...__map_music_album_20250225_recommends.snap | 151 + src/util/dictionary.rs | 81 + testfiles/dict/dictionary.json | 250 +- testfiles/dict/other_versions_titles.json | 85 + .../album_20250225_recommends.json | 7989 +++++++++++++++++ 13 files changed, 8680 insertions(+), 113 deletions(-) create mode 100644 codegen/src/collect_album_versions_titles.rs create mode 100644 notes/_img/ab_21.png create mode 100644 src/client/snapshots/rustypipe__client__music_playlist__tests__map_music_album_20250225_recommends.snap create mode 100644 testfiles/dict/other_versions_titles.json create mode 100644 testfiles/music_playlist/album_20250225_recommends.json diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index 91aaf5e..ac01788 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -40,13 +40,11 @@ pub enum ABTest { MusicPlaylistFacepile = 18, MusicAlbumGroupsReordered = 19, MusicContinuationItemRenderer = 20, + AlbumRecommends = 21, } /// List of active A/B tests that are run when none is manually specified -const TESTS_TO_RUN: &[ABTest] = &[ - ABTest::MusicAlbumGroupsReordered, - ABTest::MusicContinuationItemRenderer, -]; +const TESTS_TO_RUN: &[ABTest] = &[ABTest::MusicAlbumGroupsReordered, ABTest::AlbumRecommends]; #[derive(Debug, Serialize, Deserialize)] pub struct ABTestRes { @@ -121,6 +119,7 @@ pub async fn run_test( ABTest::MusicContinuationItemRenderer => { music_continuation_item_renderer(&query).await } + ABTest::AlbumRecommends => album_recommends(&query).await, } .unwrap(); pb.inc(1); @@ -443,3 +442,18 @@ pub async fn music_continuation_item_renderer(rp: &RustyPipeQuery) -> Result Result { + let id = "MPREb_u1I69lSAe5v"; + let res = rp + .raw( + ClientType::DesktopMusic, + "browse", + &QBrowse { + browse_id: id, + params: None, + }, + ) + .await?; + Ok(res.contains("\"musicCarouselShelfRenderer\"")) +} diff --git a/codegen/src/collect_album_versions_titles.rs b/codegen/src/collect_album_versions_titles.rs new file mode 100644 index 0000000..0cb513c --- /dev/null +++ b/codegen/src/collect_album_versions_titles.rs @@ -0,0 +1,130 @@ +use std::{collections::BTreeMap, fs::File, io::BufReader}; + +use path_macro::path; +use rustypipe::{ + client::{ClientType, RustyPipe}, + param::{Language, LANGUAGES}, +}; +use serde::Deserialize; +use serde_with::rust::deserialize_ignore_any; + +use crate::{ + model::{QBrowse, SectionList, TextRuns}, + util::{self, DICT_DIR}, +}; + +pub async fn collect_album_versions_titles() { + let json_path = path!(*DICT_DIR / "other_versions_titles.json"); + let mut res = BTreeMap::new(); + + let rp = RustyPipe::new(); + + for lang in LANGUAGES { + let query = QBrowse { + browse_id: "MPREb_nlBWQROfvjo", + params: None, + }; + let raw_resp = rp + .query() + .lang(lang) + .raw(ClientType::DesktopMusic, "browse", &query) + .await + .unwrap(); + let data = serde_json::from_str::(&raw_resp).unwrap(); + let title = data + .contents + .two_column_browse_results_renderer + .secondary_contents + .section_list_renderer + .contents + .into_iter() + .find_map(|x| match x { + ItemSection::MusicCarouselShelfRenderer(music_carousel_shelf) => { + Some(music_carousel_shelf) + } + ItemSection::None => None, + }) + .expect("other versions") + .header + .expect("header") + .music_carousel_shelf_basic_header_renderer + .title + .runs + .into_iter() + .next() + .unwrap() + .text; + println!("{lang}: {title}"); + res.insert(lang, title); + } + + let file = File::create(json_path).unwrap(); + serde_json::to_writer_pretty(file, &res).unwrap(); +} + +pub fn write_samples_to_dict() { + let json_path = path!(*DICT_DIR / "other_versions_titles.json"); + let json_file = File::open(json_path).unwrap(); + let collected: BTreeMap = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + let mut dict = util::read_dict(); + let langs = dict.keys().copied().collect::>(); + + for lang in langs { + let dict_entry = dict.entry(lang).or_default(); + + let e = collected.get(&lang).unwrap(); + assert_eq!(e, e.trim()); + dict_entry.album_versions_title = e.to_owned(); + + for lang in &dict_entry.equivalent { + let ee = collected.get(lang).unwrap(); + if ee != e { + panic!("equivalent lang conflict, lang: {lang}"); + } + } + } + + util::write_dict(dict); +} + +#[derive(Debug, Deserialize)] +struct AlbumData { + contents: AlbumDataContents, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +struct AlbumDataContents { + two_column_browse_results_renderer: X1, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +struct X1 { + secondary_contents: SectionList, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +enum ItemSection { + MusicCarouselShelfRenderer(MusicCarouselShelf), + #[serde(other, deserialize_with = "deserialize_ignore_any")] + None, +} + +#[derive(Debug, Deserialize)] +struct MusicCarouselShelf { + header: Option, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +struct MusicCarouselShelfHeader { + music_carousel_shelf_basic_header_renderer: MusicCarouselShelfHeaderRenderer, +} + +#[derive(Debug, Deserialize)] +struct MusicCarouselShelfHeaderRenderer { + title: TextRuns, +} diff --git a/codegen/src/gen_dictionary.rs b/codegen/src/gen_dictionary.rs index e5ce310..549fb83 100644 --- a/codegen/src/gen_dictionary.rs +++ b/codegen/src/gen_dictionary.rs @@ -90,6 +90,8 @@ pub(crate) struct Entry { pub chan_prefix: &'static str, /// Channel name suffix on playlist pages pub chan_suffix: &'static str, + /// "Other versions" title on album pages + pub album_versions_title: &'static str, } "#; @@ -178,8 +180,8 @@ pub(crate) fn entry(lang: Language) -> Entry { .to_string() .replace('\n', "\n "); - write!(code_timeago_tokens, "{} => Entry {{\n timeago_tokens: {},\n month_before_day: {:?},\n months: {},\n timeago_nd_tokens: {},\n comma_decimal: {:?},\n number_tokens: {},\n number_nd_tokens: {},\n album_types: {},\n chan_prefix: {:?},\n chan_suffix: {:?},\n }},\n ", - selector, code_ta_tokens, entry.month_before_day, code_months, code_ta_nd_tokens, entry.comma_decimal, code_number_tokens, code_number_nd_tokens, code_album_types, entry.chan_prefix, entry.chan_suffix).unwrap(); + write!(code_timeago_tokens, "{} => Entry {{\n timeago_tokens: {},\n month_before_day: {:?},\n months: {},\n timeago_nd_tokens: {},\n comma_decimal: {:?},\n number_tokens: {},\n number_nd_tokens: {},\n album_types: {},\n chan_prefix: {:?},\n chan_suffix: {:?},\n album_versions_title: {:?},\n }},\n ", + selector, code_ta_tokens, entry.month_before_day, code_months, code_ta_nd_tokens, entry.comma_decimal, code_number_tokens, code_number_nd_tokens, code_album_types, entry.chan_prefix, entry.chan_suffix, entry.album_versions_title).unwrap(); } code_timeago_tokens = code_timeago_tokens.trim_end().to_owned() + "\n }\n}\n"; diff --git a/codegen/src/main.rs b/codegen/src/main.rs index 87f484f..74b5d85 100644 --- a/codegen/src/main.rs +++ b/codegen/src/main.rs @@ -2,6 +2,7 @@ mod abtest; mod collect_album_types; +mod collect_album_versions_titles; mod collect_chan_prefixes; mod collect_history_dates; mod collect_large_numbers; @@ -34,12 +35,14 @@ enum Commands { CollectHistoryDates, CollectMusicHistoryDates, CollectChanPrefixes, + CollectAlbumVersionsTitles, ParsePlaylistDates, ParseHistoryDates, ParseLargeNumbers, ParseAlbumTypes, ParseVideoDurations, ParseChanPrefixes, + ParseAlbumVersionsTitles, GenLocales, GenDict, DownloadTestfiles, @@ -58,28 +61,25 @@ async fn main() { match cli.command { Commands::CollectPlaylistDates => { - collect_playlist_dates::collect_dates(cli.concurrency).await; + collect_playlist_dates::collect_dates(cli.concurrency).await } Commands::CollectLargeNumbers => { - collect_large_numbers::collect_large_numbers(cli.concurrency).await; + collect_large_numbers::collect_large_numbers(cli.concurrency).await } Commands::CollectAlbumTypes => { - collect_album_types::collect_album_types(cli.concurrency).await; + collect_album_types::collect_album_types(cli.concurrency).await } Commands::CollectVideoDurations => { - collect_video_durations::collect_video_durations(cli.concurrency).await; + collect_video_durations::collect_video_durations(cli.concurrency).await } Commands::CollectVideoDates => { - collect_video_dates::collect_video_dates(cli.concurrency).await; + collect_video_dates::collect_video_dates(cli.concurrency).await } - Commands::CollectHistoryDates => { - collect_history_dates::collect_dates().await; - } - Commands::CollectMusicHistoryDates => { - collect_history_dates::collect_dates_music().await; - } - Commands::CollectChanPrefixes => { - collect_chan_prefixes::collect_chan_prefixes().await; + Commands::CollectHistoryDates => collect_history_dates::collect_dates().await, + Commands::CollectMusicHistoryDates => collect_history_dates::collect_dates_music().await, + Commands::CollectChanPrefixes => collect_chan_prefixes::collect_chan_prefixes().await, + Commands::CollectAlbumVersionsTitles => { + collect_album_versions_titles::collect_album_versions_titles().await } Commands::ParsePlaylistDates => collect_playlist_dates::write_samples_to_dict(), Commands::ParseHistoryDates => collect_history_dates::write_samples_to_dict(), @@ -87,9 +87,10 @@ async fn main() { Commands::ParseAlbumTypes => collect_album_types::write_samples_to_dict(), Commands::ParseVideoDurations => collect_video_durations::parse_video_durations(), Commands::ParseChanPrefixes => collect_chan_prefixes::write_samples_to_dict(), - Commands::GenLocales => { - gen_locales::generate_locales().await; + Commands::ParseAlbumVersionsTitles => { + collect_album_versions_titles::write_samples_to_dict() } + Commands::GenLocales => gen_locales::generate_locales().await, Commands::GenDict => gen_dictionary::generate_dictionary(), Commands::DownloadTestfiles => download_testfiles::download_testfiles().await, Commands::AbTest { id, n } => { diff --git a/codegen/src/model.rs b/codegen/src/model.rs index 3002451..2d9929f 100644 --- a/codegen/src/model.rs +++ b/codegen/src/model.rs @@ -61,6 +61,8 @@ pub struct DictEntry { pub chan_prefix: String, /// Channel name suffix on playlist pages pub chan_suffix: String, + /// "Other versions" title on album pages + pub album_versions_title: String, } /// Parsed TimeAgo string, contains amount and time unit. diff --git a/notes/AB_Tests.md b/notes/AB_Tests.md index c85156a..1c18a85 100644 --- a/notes/AB_Tests.md +++ b/notes/AB_Tests.md @@ -3,13 +3,13 @@ When YouTube introduces a new feature, it does so gradually. When a user creates a new session, YouTube decided randomly which new features should be enabled. -YouTube sessions are identified by the visitor data ID. This cookie is sent with -every API request using the `context.client.visitor_data` JSON parameter. It is also -returned in the `responseContext.visitorData` response parameter and stored as the -`__SECURE-YEC` cookie. +YouTube sessions are identified by the visitor data ID. This cookie is sent with every +API request using the `context.client.visitor_data` JSON parameter. It is also returned +in the `responseContext.visitorData` response parameter and stored as the `__SECURE-YEC` +cookie. -By sending the same visitor data ID, A/B tests can be reproduced, which is important -for testing alternative YouTube clients. +By sending the same visitor data ID, A/B tests can be reproduced, which is important for +testing alternative YouTube clients. This page lists all A/B tests that were encountered while maintaining the RustyPipe client. @@ -1042,7 +1042,7 @@ omitted for albums in their group, while singles and EPs have a label with their - **Encountered on:** 25.01.2025 - **Impact:** 🟢 Low - **Endpoint:** browse (YTM) -- **Status:** Common (4%) +- **Status:** Stabilized YouTube Music now uses a `continuationItemRenderer` for music playlists instead of putting the continuations in a separate attribute of the MusicShelf. @@ -1052,3 +1052,18 @@ items. YouTube Music now also sends a random 16-character string as a `clientScreenNonce` in the request context. This is not mandatory though. + +## [21] Music album recommendations + +- **Encountered on:** 26.02.2025 +- **Impact:** 🟢 Low +- **Endpoint:** browse (YTM) +- **Status:** Common (15%) + +![A/B test 21 screenshot](./_img/ab_21.png) + +YouTube Music has added "Recommended" and "More from \" carousels to album +pages. The difficulty is distinguishing them reliably for parsing the album variants. + +The current solution is adding the "Other versions" title in all languages to the +dictionary and comparing it. diff --git a/notes/_img/ab_21.png b/notes/_img/ab_21.png new file mode 100644 index 0000000000000000000000000000000000000000..929f5d39d96dd0284fe803e23c14ff50937d4b9d GIT binary patch literal 297321 zcmb@tbySq$*EKvK>L4|QbeD9eG?GIPNTX8HEe#?FQbRg)$AHApgEZ38(hVZgEdtW- z&GW3^^F9B4f4nbiu~-B5TytONK4OuOLiq#)0^zBuD8N7<%(o!W0}C)F z@Ee6Mi9x^*Y*!T{4-g2y`~Djvi4&g+1fmD2D#+>iyxLpxO*K zK&AR2zABYog6)?mr8Xo!Cts`q{(4o1g8W_g(}z#{tQTEn&1JvQQ4&HR@xs_@^r7*g z?}Ab@RNsUW)3B#ED|KC3zj`!{j|Lu!7nkxdhJG+7|71=cgy)QV z|MSzay?Vb8ZWkZ?#sXS&|EE1NT>-ocH!+S>7TmO5k)FL->4FY-;(jZ3fRgECw=k|8sWYYH0U!CxX$@n{OF;k`IjRkAOKsTCMW;m0z~YZ#*fJ$4V-7<+-M!Nvz{tADtV$TbE)&f zb-LW>+4T0-maPik?PD|leRSqYYu}Xp>B7qG+3PbZ;H^u(z+34qzAGnln@mFjR>R1g z+i%W>GemWvo5LCB9R%-PJ3=0wV$Z5uPg=K-JHs;1)-E_eSdEi#Jy?@XoUP4 zkvLpLI~Z8rKfM(S1+X2wm1nTVYj2j{yfgIj=Su^#)1|}r1`blBd5HJ>4zHVkMRD%b z{9I3YE&b;^Q(wBw^(w*LG2NY8x$l@F*^<|SljX4A+snB7{E=~96n%Riflq!HH-|xY z5-S&)fvs2|hHkR9qc9VfRjTQda$9;5uTX}PiBH$2ilX}UE-=ERODE`Bs@CV-Y+}zxK zbV1h);ncsxG=Vg%GVe+kcF1S5S7`>Gq0Dil7F@WpaU=cp-Q|qu&7Jjfi*Fybhq{Rg z6@!(JkIzz*r^8IeOQ`Th>nGsTxy_p1{pyaCgOtB+e}B3&WtT3(I%U-2bF8CGGc`X? z*>{{R<)7_;&`2ZUCB#bc$($N&mFef__bw~v_HS_vMbLId^Firo&~Xo0U(jCOxP((;X^G^f>T%u|s|WVUFEx!n-(M z@?J3<8A#&9WX+h!dY&3g76Vrwc08ujgHAp6_xG3ilMpA=;#yfd^4wuCnftWgA6P&w=W?=` z+%kq2cyg;$cl+ckxn&X2vHb1U+{qs}1(2 zmX~k4iM51^rj1(tJe8G|Z`5|8f9y<^X-OV;=jG*9t7vIy1^#K%6k83gwnCi(MfBph z;kcJ-mv}^cGqbt^*y5by8IZ!X(TAM4UDMOk)pS>vET8$kPKHHip6%_fhSQB~o}5RE5VYwEa}Q(?V~$ zhK9zooPa-upCNy;&s%KD#h*X-TM0am5hhridw)5R4T0_4oX#+X?!YLQ033^90FYdC>R-0? zTYl9ZMP4&LE2EH-Hw=M;L(uaXr`de z2!JwYBBMb3E>HRF(wE;~?E^XQmKB3 zcHBE$jbMuXQd!yB+6q80fxPX(Vxw9L58CM}0l>U%WJ)g)z)kp}$4NthG8?tn%2FVLH%+=!oFj>;;b_OZtL5UbKD2mEm=-1>8@rCO`#VD z0C80J(Jm}p10Y-FzCHjH{l3#HpVhERacQU9o zwWN=N3E-Yt@5WUv`%a$`fM#9?-4F!*>uT)_lV8n`<}q&eataIqKtGtTjjHx)WOiuX z9WUY0ML-)v%^?9rB@ocPvjvxx=9^`vILUEs+rEmrKNr{R#hC)6?EvHTazH?EIQ*U& zEr-3^PO>cfuA27i7f87bUDuNgZnuTvfwE# z@nryVfaGXC|0kQ{6sTk8

j?qF-XPw6qm*Ef@rn zN3ww)yVI!C;c5+nw?nBqL7wga!$!6LjedP?QU0~Dv2m65FcpBg*Y5o+L8nS?9{~;h+8WJXen+@a}4bE_$K< zW^VMo*U82(aI4?^mrt^1IQjt&cc}o9+r4pdW#u)U?@c2I$Q7uQ8PTtfb2WFIXRnfA zrRK@duFqrDqCY-yliijkCnxtpK%m8dli@4<-1eP&=6Su>;Qiq8vbn~1_cGBpceMWN z*K@ew$d{ZHED#M1je(ix6u<`UM`65gT3!d?);q<$6aWF0vvgiB2XISZZAnQ$Wv>pb!1Qy;_>vvg>T=rR3TCRi_R9edf{d^@KF_X^Q3_y&6@SScrdN0aQ9m7SQd;$|U$P@BfQ+(?lR5(`oUBDrw7f4v=Yt@IHKMMi z4fO7v(>m4l2mJ(~8KC|%!`i&__D#nEw#%8Io0&90n|m>Es%3)l6VRHD{{l`*#Wo8H z3M_}~>+1u*UOS~WG#{34i#qPlqXBfh+89dnSn`~iy1TKeouhJTspc8GXCl#q#72vr zs86EjoPcBk=+nU`TLFBrW6KDB@R4i|%4uO#=Dy3gyV%&+sD5*!C3>T6KhVIWXceVz}_(58Od$omA`rHeT~ zJ&hR_T`mL2rwwS1jyEV*nuc2MZ)|-q1!y!5D+p)<|Bfls1-=U`>=+hZF>N2l1350# z?*m9Kb222@#|X|Vh<(2Er66{G;ri@ryHvg3YRtt{<@=X+tXBX)T(z8x_#bsVzPh?9 z*2wVccu1z6DR#V9I||6r6QB<7dT`*rVXyE zGwrvh!Vc2_LCw{hwR00*ufw;h(J24nG{Ma%AZY+L2EGn~k14Bc^K*QE2&^mOID7Q- zBSDd!-@IM1Mz&<*ZP?X8-`_{tP~PUf8oP-iKunhdIR)Twr5*>M6CD3#pR^xW_5dk) z+M1A9g1-F`F8vNrGW%u@4Kjehl?l98GjPoN*l`+ENV<|e21Muyus{%ie{qUCYJXml zuL0e`X~SBqe^#WR%WQ89)l7w1v+Y>^7 zER+(<%*MO-q!cgxFqE>%{T zvJfmlfArl;0RO|*^Ot0pN;>am%)IZ*IOl3{^Odl9rACGb4bT+>E%Qj0_wwA-RFAmJ z(7y#-eEe*HM(^8~!F6{_x^I`KyQ4t+aGx8MGGl*T+^+V&ieAGi{S3S+AH1sv_6RUb z*-BCID=n?jXMmm<4cHLGJHDq+GC=1<^R_h{cB!zh_W*(z0GD>4Q1Q$_e84?Vy)?*j z>!ql?G-<&|dHwz(%_h6?JfoAcsSv>l$SOdXzP|Yc0;Fg=A?1wwx0%Gj_4}M}^w|85 z2T*4>fy3JZ!IHDwc|UuV6c2)6b+oxmyO3KtZjU2zNVx!oqeFs+iz|7r5**sI{(-W% z z)wMfQ8FYKGx%>6hm-y+EFr-?_NGgAUHe0vb;?xwN%}axWgL@@``+e|p_`f}kcNBdg*c;)ar72{IJIpux`ER-wO3evpGdsOXju;^&hv zr5)cu<8g6G)z+cZ-C6s-+*3y?4^4y?5EJ04UPjeFM(yHESLL*Bxm4ss^0 zFc`GHUg#@&lQYSFpyPazzO={uXna7XqU}7nH(2mq%)iH4yJ`J#EkpNjRw6kl!Wga{ z1u>k=Pkj?AkR44(#E7P$GB1}S#=^3Tw!osFTDFgbU}_sfBZYk6I`SmbZCzC%VhO3* z0}z%v;~2DFwq+ySDu9aVH{T-_f4EVqeisCc&++uFP6&NeS5c8^qh4gE(3+1#eao-; za-{eRuzcubXM=E#hWImhQmHwk0?!&DE|lG#pU0}i)NWw2ZW=AN4&y9gLn4fmV2aFk z9(f>;TjC`}C8-_;Lnx$I#oo+zfJ~smp}?MeJ~kSHi85VyBs+mGm1sO&Verb4S{g7$ z*62lJ6E70f+J9Y8poA@xodi3?J3m066MF25V3cA4s9YE(|3*F(0(Ags%X9p2OYAKn zp)}|eTa|yH9mR$gqTiS`Ei^2HJ21h+AlY5xLK`LBq0DxSN#nWbX&s0*oR5Cgref`1 z1@F^y(;TAT;_7NbmK)vn+-(0UFv-iiN%Kuzzp+IXOmBoJva@|dOooVQurMTJg6)On zDK_&>D^##Uji=m^tteGSW<)(Xn%vI8p*oegkH2@;!)d07dssZ$q5_gfQl|})$CUrc zC*s-5ptbC+ymkcmALNf4-4;{1h0qpohzkfgqyPOLc{^F{-mAfHm05 z5S*s2zh=8yKSn|{!qmxGL+3Nq-Ws8tMO6MVcoZQ9gcpjwTbL()Ldyz^UbMwQ>O|MW z5J=kb$v=gaAI?qN{t$b2@2{DB6N9q$rh4!oyCdk;3z)6p zMp!IvxReeFO>m=0_Q&XX6$%ij@DY8sgJ6C^A+@3^iEbD%2D!tO`3%P*l;gs58qLiP zLl#bcfklTRl8oUXh99I1ZXB}ieQs;?e?g~bhZv#H>O`N({m2{?*L%cIM^4$liGwxS z9gEp3w4Q0-=yMA{D>CK&qKZU63QgPf19Qr^26w=;R^IsgQ(>erN9OdyNjcYH{T?(d z2)zM|SPcx5P@_q{r%DlT_GXiRCKd}o#b=(YV)dj3JCZ-Y&r|L< z)GWHHs$dKdRs?-0zrN`kOj6A9P=yAYhOIeG-I4UAxdTIek=+ebGWI<5Mrkb!8}c*t z8MTj=>Jr+W7<)}TT)pfsE?K%Dsa#tZgcWU!OKz#4kdFBwOnlRBo+Bzu_w1KP5jxHC| zC=kmhA%G)bJkPxA>*{|Cvn{xFvT0f#7~<9`kTPH)RJfwW@VQB9u$Vf;Sq(WN?5klM z8ukmyBXS># z=*iUWG6YI~8r3`Luwd1zWEPcRBCC@#FQj$9$^ORC2p@JQ)pEHQX4(}68m4;TLkjY< zKweF2kqjF4DdUVks??D}4^iS6sNbb131zkQ4);lfr%z`_K)XvJrNW=2{Us#ZQ&TLR z8n4=1`H^gX;eM8q1?(NxsF_xF3H3X(1Rry%hJfTD|xzwlx3vB9u*}~~A8;#WYF$MndC&4(t2pS+h}a=O*M9FV>G{|Ae0hE1! zi`|+etOO#*0q#LqMDsH+YlUs{;c`I7Ercr`R>S72DcB4z`b?<8NAGw2J!XyLGej|> zo-ImNHH^=CYTQ+g!GABLpPPb}1dJqM#Hv$_u+gF2rV>4ii7m7lbzx9HCo2$sfh_Hw z(ra;ed%_r+y)u0_qA2*<2f0w2mOS4pq;Vn3T`{SYUq7v*AQf!!!Zjr{vL9TEkUZ*9+s)@Os%kEMZ z_LNke{pXrnVo(gs@4m4ydPGXeVRDJk5-7WF35h&WRNZgYOj}umG0ZN^Npy`6Di(vm zz+)}F_5cfu$#G0b6NI&y@3sdpD*WS$7_?~D5b=h)!y}MUrxBLDm@VaX%fK<+qoT?6 zZ;JADZL`a2cdVEy9VHL1t(OwhZMTZ;VNKNfj%G!KQ+sQdYPj2s>-y|jrsijRh*#Z4 zSrVV-=a{Y+;xbGh>fZ|NMl<1#7cw?;PI;}^IrQshu&QSEH^S#HModYHQ#-ruCNfTL zPaI}=GsosdVWd$c4(7eqJS-K%rXhteo$?aJjiK~uK|cFAE=>y-hNt76X7IcMWR=aE zcQ&Ix3uEic^^q177*VC@T*Gk?wpK}x(m+y{gg3AF#!(kRMoRyBW4xK!0)M@6x{13{ zibd9-Rk@xD%4#4<0lM8={okr$jV%rAnh733{<09-c$m`SH1a!vq{7#J!tV3DF^(L! zO7;S=r0Dq4%h-CvKN+4qv6jXoEAKHydm81>G(=!F(upM**U<4CSVJr z>1*D~KL;H6q)tOHH!Q)`oIiT5{C_0`Ciqt!5v%X$cDaOryK{mLu;^~bFRT&^Ca;W7CItzWPR0P6@aFI5+v_91 z@9tK9pID?NeLA!^;uQsQkaV&zIdo+wg}NzHm%np76#pHpEW<66ewE{;$BCCWg4*B> z6Vd|D2!(HN?s&{>j62!ga^7!QT>q51oc?eY({6;tcHXQ+A^EQ)=|fd+(hpd@R`lg_ z(plr_E5h0tg8X06?LsV@(+&16qsk?ekuQ6zKQhnHiT+!(Bq-$*-wYwhbp2D^Gq#iU z^?Ku1G;hE*a#)AMy-mZZEV+=hAj=8W?04m~gPX#kI&}3YT8=w`Quh~gD> z&dSkN{nApl)8Wo8Q|hLq&Dw}F9NY4VP*-S?YRDIKarRL>SK@bb}=!PTwXrnFo;`1}7rKzV+l>tc;xaogaZ$2TRUlHK9?g1S2tT(v4 z|C7o2-p8R(xG>Wpgjxd1xWJHY$)Ccn(ERy*I3XN05{c?@XJ;eJFfqRTW~V>CZ-)5#`IwkCq>+@=G!pIia-MX)Uk#eHxC@cS-oMOuuKoAvDcVs zN?35qDK|qglS+TiQiT5#aibW14g_o29ZA&pu|Rbhy~d2{bsMP-VJpnNw6`xkWXxxO znL8o$%TUR;?|?TMM@;Z;+wVWK07&vL>zUVQ$o=8r;+%Jw1Os314&vJXo#)Vw&$U#S zRicna*uzMWHg}r3#*x24`@5k<@o0h^vkldt*LL13KmKBK%NJ#%Y(}!G_vcdBtY3}s;=2Z$0KFzZ03nM>!uos=GH$QoBIYX}9i3!gyF&iC`9sJe# z6taHV=CUj1W=5x4B5R0+jpW8eGOje1G1D&!K(E#cnT5Q#48)UTTEsy1I^3mp7Q~3t zRHPF{Z|jSxNCokFGxikxEK$)2`_>0H1yft2L4JRaEq$6oYtnDG!o_O zB@u=Gh7}n~4C-%*R}0skIS-95L8L!;JhuGHxO=|A|ELEQ*xG6>vsqDz#rvs~SS&6q zS_R@37m{obo302GrjircWp={?he0i<3XIvYp_5)=V1K`6ngveMaPR#^0f&RdJbTAu z*SV6urMn-3v|0lgGZBx>qatY@C;V=KGx8+iOeW+b<7+{2fArY$n2WKPLabA{Qm2EJ zUTH$*uXNYM6!kD_SvU8%<5na#;W+huje6a=58ZLP3QbT4i&|B^y?-+bW7`e5o&XL zZ|&Vafb9o1Bd1k6SyJY`3Rz#=1mZtcrfW9j{JZs;pm|O`J)$D3+0W}V%V(BQgV=b$ zUkS2W0uiRYYKvnhhBE!o?8WZ<65k)IBxz|LiJgKymWy_+dNea!b~Li!Y@6osJJj-R z4cw$0OFC=}<=`Lv;KYrjtlXuxd*BgK%f|Ese$LZgosrSPC*ha`hm;A)!qq+Fvs?mz zGw*{#*+*M@c(H}VXM9@X^;q?#96gfN`Kg@7kqy*Bi(WQF&)B?*OU-isUp=d>2miAE zQ-`bktNJ+U>Sk&zx4d{xA#0{zj>JDUuG%2{-$`d4c0A@pmLC$yk~3gYGIg`5A-Q_< z4rfDhD>OzYI?Q}Wcj>k$*bSaPmtfUOt+HG=(>sE1BBBeN+p0XZd`E4k&L!Dd-in+^ z29rSGY1|OQ*nI*0&)B{5kL0nFp|&Wl&_<`vt0~PQj(=&c;DVYtOHsw@S&PZ1Un`rM z+nb-sY;MiEJWVZ}EuC8qQAIHfE{jl$UQqPaE87#XWlS!I%92<%Zp3{R!p{LbHMe-G zzL#%f9Plwcq$4ft##RlbbM$@eKd#pqUUmfUOmy{QsWED^U>Jp?9jdBIS)zh_jgjf| z$!813Fm0_Ko#3$^ny}m8u{JTg8bcCg!xPi#K1$1B2W(}8{g0k6JM@b?*5i82Zngw_ z*WE01G?9r86|EZ=Hu`NxdlQ2xt=HON3s+Jcct`xS&kGVH{P%wuuUo8~7L%Qrd1rpEwVj+-~O46R~E0I^u3t_%yOi zS)DTET1hp))ig6+Ux}MoNd!Lo>sd(jGPtL09B%kw@+l0_)&eQ-BDdBsAh~v}l}sE= zsPv>%bsow$9cpi9E)@4A4PTQ_-RnEOGSMXAcS^!l6^`m@!`*lf?3&kK%p@@s>Jo9y zalcR|pNO2XI}ck^&vcM9CnGT&XYlh=9g?c0@Sm?r?rKLj5}Txx(YmRSut-UGpAz7i z%lrHJ14oKBCi+^3-x8u@ZFl!l1uO?#5pca1!AUPD7{s8&jz*?nB|eN{^gAwl-7-r3 zFd~us#AihPxrj`!0k@N9npMU)C$ZAb=M_@OJlesL4FQd_glDt51do5rpE-?265{dy zNqfo^AIeNUN1{xL*+aHYQ}RRbd~sGR;J+%}nc5%?y8FQan`4Sihw-J~qZfkIE?S*5 z^iegDdFs{ySgawx5(@VOB_5Yjhq|%ikj{yl7RK(ocQo>7TN7eIhjwkzkf_A&X%)Nf z1TSvRry|p(=y;rvAJygbv1xz@xQuWHF`f_~!1`du^Jk+_% zKG+r{kehw}4tB*Eh-RIU!%~E)U{OT->GjD&;ktQfeb@sg(q6`7_8#VqqXQPf)3Oq*|RserL#G$2jJRPmo~Po9iQrNR`k+W3#We z*6ro(ZKwge5%4d#dXG0~L(%k!m_{J>0%?|?f_lFelS($Nl&UQ3USh($b}-pAINTOB zQS~9O*DRRf*tuTzc96(v*pqPkDCP%_OpLPj>>d>lhZxA+@?LTj2=!mYc71VTC`_=a zUA0&3!+ZbtIN)g*LkaMCDbCz0r@hK?oUb zzD_zlJ9^{ciZvEt2p6s?n*vv8q*HSV3Bp*OA-=PQoN_;Bd6}g6diy2k<4=zwdkP`o z)q`xa;>>EefWsTxcfT^jIA@$yVTJsB(SAdO^7QIrDI`pvAU$F)sfn%3;qmnXw^woL zB4alD6A}~j(#PEeE1uIe0m@g$%Dl#P|Bjp_F7bhJg**Qqnea%;=}DzYcc-Y5eC8hJ z7jD_rktDHirmaZCs|y)xLbm!>mVf+DZnK>H#gX0@V3u>h5hnbj%@T`L6tW+gH7^bK zsna=PkRu@_H|hGo8Q}x>s{fr{qp94x#@}ark=g|3=zmB?I=$a!DcA|=eKKG!2`fj~ zo0AutXBr}2a!&C<>prnzhe6~@-3&9gbdY0BXx_hnPZ{9}(_nL!&$qXEMF9uLF%q9# zA3rivV_a}^+|XOo<_Ie!GF4%bvnve#AP+SP#Z^2O@1veSu$Rb?%MIaM=GUID@$gF)4SHim|H16f;-+7$(DA_d|<;?cJ7 zV-<0P>X2e5+Xs2QooV<|vKx#+snmSvC6ee!=%u_XJD36Sb8JjUo(-v|%C1lfjuf}~ zmaou|2DfPjn}e{(?N|uE#bz%pd~K<5y?6|%RSH+@&VLfG2V*W-6Ek(~Wg{~M@4;SRG3(gg*;Gk9&NR3kcmf)m15c+d=F9k3pkM)861UnV1V7iiaFt4Rh zqmlc8nK{F)Ayh0iwT~WYW5f+#4}_rk^}~VD7 zZN>g*g}?R2Z~T&O+v;+*gZI8Prvi(EGoQl46oeU{)O%`N}bqCK=`V8uB+KB9Vxbz3@wK<_8Os z;PLn)AyxJ~`6xy$rixB_*<3Su$d=H01Y3-d%0rkh++4j>?mHKhkHereq>l;l7ysq6 z(agr*p=+;~>)LGIkO&qDKgx|S`k=Eig34+Zu`Z&^?oPn`Eg%86V8H4Gt3g!Wz_~&> zOa8VFxrJ+JS;rq=vxe}8kVO2r{P8s_l|$(HWP5W^mH4jCfJocF#qZx~3m;Y{?VAQa ziK2+)noRffke{O7;VUA<@607(p;$Q``s91h#fpFr^@^3r2d0{&sLh$1AcWt*Os_nc zl&G(unqdL-_bMgKv5ZLO4rWyti+F9MGDQa{QH>itZCb_*Ce9{Oms3GKwdB&!g;(og zvyy|vwD?2Bq8tY?p%W3rF#{#k+XqJP7Tt2(1cR=ZTNE-EM+F^6 z@m_%n9B7a%6P%5qT0K(!gByQjZDZ%dVrr3+VM|%GdWjPrz5!NzeSOiv(n6fr#Sr$y zCcv);~)5H_@r-!yfr*gF#az_lbwc4pjod2Orzia)RD24US5_Z|XD`$S4lJLV+M?-_Mft5R9SN7%yWB3T(8b?5450Rdkadx>1H=r`T5+4%@Vf3qA`=Sgx@vTS0V@ z2mh2Sxo(ztfAU+(dtH*M#dIOz8G}8GDSs&cIGV2>#J}*;7(4VuSgD(ZiCB&s?d32p z<$o;n0;}w^u~9wUrMI6sv`Q1mp^6&4q?in0r1Bnlg;?DDFkGg>!emoURZtxX%#}rK zoDz|k$T>o2i$#xA|J9wZ2Q7ITfnX}Zu!F}F5jn&pStYZCF{dh~epOF}&DX#0>uTps zj^=HzDRJnF9fMUjqSt^a!QD(gr~M`}qzW)IBfG|?nYfg}s-CJn)~&>*T3{bfE8^7I zOgfs3$OgkgJV5cle~Kt6aB3Sfft0=^ zKe791H$XlCWxxarf#_u^^R%H0=Y(BhjyRRL<##u{h$uo9H^aFqxBX8sy9bS%-oO;j z`@Wi5nUlHEyPcIFV{QYwhD~oM^xFz~4z-&FptuEu#TH?|#p-GIGmeXtRiA zIG4n75q4942_>Dy&l~FT=gmb53BLUgMysMZIQk1dc3JloN$++iTk2*6YY9S`hcKDL z!XlDk4q4EC7KDRbBV{)>0kN|VM`0aThBl_Lj(V!K-49r)m?|665Zi(fm>3OKN`;{? z%)1-4p-j-1)rTciZ5hc*eB)4vg^dsroWO=#@3_Knd$cgfd-rP`sYZ7(kwZ*lKJ!?E zHsEL6M6pwPtvC`1EgXZRj7a!XQ>D5 z82+(GYB^4}C)a-+I=SUZ$xpUtL_!LgkeiKGtzOmdkvC z?UeAro%>5qNpkud#HrJYXS`CXELWi{a|}~y;eHc;N&&_p75fuea@T57l{~N#VyAr5 z?#Sh8J7wH>Zs6@oS~41TBO6xKOivHo^D! zemqQEAojkxxZU*0vWT~Q@LUqqQ(0KOA#*PMM9OCe92 z7X(hU1w3h*(%iwm_R!pM4Bk_&x2^Zx;+q7H<~J6ykodQ<>2JP$kKx*ETX3dbUJi@z z7EnMu$u4EfCGCl@z`-amyfSO{X3_>jO{RFB2y*D zm=8b2G>9>f9L2yKFsIvmYgybgos&s%N>0Z00)p%QQJ*YgR{DPAv}vRTbxfg=e1cli zgSJUyhO8%8Ab&b5eapH3Z?l5rJW9E*DI)c~4kI5$;YU;)9FVS@JC%t&pEvy;j%F?Q z%UPM9F#diHcYI4?Z94N-Kl2ZtW+H+~y#WDZS1(uBU9Lr2OVC^tNp(r6F(HGqmw0M% z_V*FbOMZ#JC05dnj9xc$pljTmd)jWE76Oi@#{y037%?G*9xxL!M9d>*hmJp5w8uUG zVdwgye!s;@YzUOr7pC7(`eCO&wRJZtCUzJ8ILiNE}H$;Mg(wANVZ#DYkcKpyvo zfI4xSN~m^GBYV`Zyyb%yW#Q_wf*1W2D2aNPh)0)+eBXU|hBr=7C`}JRjz|1kFmygA z)9Mz)Q&5sejRgdf#birTP_acmbf-ae)NrZOwEHp=aM(GK^plq`bKvRD7@dC40h<1P z{^+=JMd1*(E?m2KW3>c<5aoO}4dRf9H7n6_|J70NMTCQWy60BHsLX}!-3FdAkMF|o z$gIiEk0#UHl52rcmr>eUxf(i>rseuXjr1>4)SX{YDh=pNKj`xe{e}19{;Gd^Ktg(TnCrdI1?|-mpgXqZm($Y3 zd-Fr#e)UOEJCZPTsfq)_4{V9crXi+?4jz+JQe`zDr`{s|ASL>lyG}1e&%{W=!2yqv zBTopyI1U9>3#H_a*A;!)T(2E2M_M*`D@)E7$UXpPW2sUH?4KB9p4^$aE{DtLVPl39 zX<#Rf=NU49Lm7wEe*KONKUn#@SGp0Y8^1DsdFHKIs*sT#*rJCo;<8K~ccx|Jm%ncH zh?8jwidmr>>l2BSP^$BrMTZC{Ng=O~O%7k%Bk6vS^}o(Mz^l#WGRavY2UV_&+UGx9 zWBGBT`q<^cg?h&9a)@{^1Ck_9-Ht{3Nw!SODRPXA4#&SKKR20EC_E9$^VEWQLh}o< z5X9ry$39aUmQ32cCe^wWyGH03KIIM$(N<&PYG8E!WJvr@FRz6)5lr&9hp=9#nuy)A zZO)w>WUCGS08smx8F2V#x9y!L<;i*W`FlGZd2aQHAJ7Nclgr27i8&3V&TI&a zm9zb(KYCyL_w9uRE;PSmoso3%I-EZ3YOZG+^n6Qw^Q-C9v_wHiJCUet0=*()30?Md zEUdB|o5rkV>!I9rgO}c?dlh+Kh6D!Z#&uvVE5;bb!u*6pW+)m4F@~9AeZWA#U>_J^ z_Mv`E4H$b{Cd--~i`kS3!GAc8DSy zBi_s1?CguImGt6+Qrgd&;X};K3~c<^^a2r>A@tvSAAF%2J>Ek#oJM@vns=6qrCOpQ z8KW1ldi>N%MgGGO!#2MZ!Ar9f34&3dxT_Zh@^q4em$R+eE5_(j{lF4`GrHv<>uyyw_C@2m8W6c}=i#q}}#YV9>RTTkV!PEoE{dSemkVU5^; zvC2b{yeKoCl)-hLAd`lh&7SjH1Td`B`4E4CIp*{J!ds#!w%WySp41CoTngCqp%5i< ziP(>PwPp?%tD`8IYY~fB{@yd3UV3%Nz#|>8zZ^`b$Ltzk*8GX=EM4=Y-==U3kRx&3 z%_^TKDi9Jp2E!qXAQAG9{BJ|T2*chFX4mn-Gzmq%IS5sieW)$^5tVyGT z^%!;HbJek91D>hDK1B+`p4u^vlTZveQo-dOS;E6eLXG7*WLU63O5eabc9hZTWP=aa z*;ZIr8=1D1#z>&fc|U#DRl*oGxJHrA9U!^c*&$YB4Y&P`CNT&;cGQ~L@(<7Kx`X^z z%m`e4q)ya8WAbV_B4*4OB@I;dwZIGsnz4$N0_alVs|!9I?%_% zvq0}mbVl@S>FW7tZ(iNI#1BOu@Vefx^~bw$b520ndVTee*-}iq$E(dyatu=N2{zR= zAG3V}SR;i}Ia zU*C;OWbcS9><&&IBN3^_AK!;Yx;tup_(s z6U+a*I3A@pH?Td`nAQ9$;0k3P^vych1`{IkAv6)IO3g4Uaaim#(MvOBhb|<0g9vLX zCv6Y59J4FxTXjtTsPzW$4>eD1ITNrII6kYY6zV}KSehsvhq84HdDe1Gk#iyuus3iF zm4fcGtd2i(4qii}cjH%g8*$P@jU{7?)F3)^!ExZl1j1Rm=r zH&#Rab}rJ+L3ZP{jrpAn#BItUQJ}kp;0$OGJ~E2eW*Py zHkl%uxjaIz*EXT@zxI=4i<1x;uk^^#sw&|IF8W!I;v)j{!?)TnbqJ<>1O_gY6UAQ- zS0Rg&4m#~L%@er1^lrPt$@$j+p{R9AU`-WRaBt9l)SRmeN>H7eHDn0I?5I}%m}RX_ zAx9}R^JfK@;Q=TDQ(kgVo$}*lhhPHuqfRPj0T=W)pDMOB!Z1cN$juII%B37>XzE-q zBASuGDdA-%)f|}Z;XDVYcSJl|ff;|~PbK>1!}EnL)KQ5a2_{4eb?Q;+_NoL=Q^EzR z5sz+L2fG@9s%nNiu6AW{#y~7^b)hV*2_)ai3-BJ<;Z7J*$XCDM>jmpr@bz{>o*+OkzRS;=CyzRYUoX5E zUI)_5+5yMx?b}o>LaVpjnwp*qiWWHBgqZ9wAtid@|I7kd2|aqUm9wcCQ$#*B*wIKf zV$MV}qo{N)(MmI8>c2v@{4Z%V;Q52DFFnAtA}(A&>Ee~!LVaU_GCpHe%=nP`%@hk# z+t-;4Y`zftdzApbarGu7Nk82ty$^K6>mLFFF_pvT>jQ(;XmGM!hlTCYO-9r+%E|`Q zq9P)qc(M+bQg-$FqdDpVNz7>)$L^xWbnYxQWA>4-WaeXc32L@fwnta?EbTCep?!&N z1(=n@QYmtrL%oJgU2^53Z4B5Z020+<-!th>pH!d-CnsRl>%DgNi3mz^3W^8FDt*Nq zjLy_I3pI6!9``hb-MC0DRmQ$rjbwLjm)2cn_MV`-nV@Yy9@`PhdiIIRkc zK!SMzdmb=$Z~Q?10|{mUQjfH{WK&F1y(wn;-_Txf7)!R*NB7eagX@3a|8;*1I*#;m zKNP)8yZfY;Q;qjxNr|LwS<}^u(~xk4Kjh2gb9t zo4j{h1X}H`-ELAy5|CJIiuIGKFznWU0c4=>?{)tLzbqLa>j$k0Q5K?vf28_79Q2Yc zvzjF{dYg##eyhT`03%l$<>miiux3p!w2N)HhW>~Ro&SZb@4>KOrD1i|!w6ETc{N;l z9@wIVI@J#)MD+h*?=9n^?7qJ5Q4oiclyK`+OswGBd{uLly;GPzZkHbi-SGt7)|60OkN}+#xdO$BrYcNc z%OW-7gh?*-+I)TdqEow8l!NS~{>PVD(NhOMwn4>9hdTdh>EVK(bhB9U{SP6*WAC^J zSyMi8K1+Vcm?&8@GxO^Yb5mOTto;F}zJW;4ZY77zgte;)mK##Li=plJ0go}eL$-$U z0%Af~2&eI9a*Nr8FyJeY8g;oCUhR6)URmac!CWYzo8s#M|JIHUtX(2uMwS)d+u)j) zgOXV%6Uq_tmj0`M`Y+1QbA`_47mn6$uMAJW5sKIC7Yj%12OiSiJ=GbxoC^zV3M1O~ z@-6bsCaP_zX=!a0;}Jbh6u*)7=ip$(aQ;g^2IzZK3- zN%IhvTGkMMSVJe1$Yj@qkb=tUWLZq9I&WQA5h_t4g64-81OCLj|746|xLNove3ul5 ztfh-K$RL2~r}7cwM6ok3X2EOT;rq6eEZsV!oN$^XmO;w*qdJZ*9`ys|@m)iqgnt6_ zwh=pB=r>HpJV|kN%kA+9g+GRw94!o+?;Bab4r0hOE|WZP1H)`#c0D&qpDS18Au<1r zr*L+LdjQ9(NUZ5-P5G27eptu?(7(CDUL)4TRyg^5y%EOQ7R(T;P_jP72{wo7K@+(3 zTLZ1bAtDPdbetr2gpfjv3N$~OzafY+2Fj(XVK-&kK;r3VlR*<&Hf38rp(E&aIdiN; z5wNz|e>hghK}Nz$syL>Vo|p7MDpa}Pc~Ks!%Ude67noT(RY~53y51`s*S0L`GutNe zyxgntWfrqHbn?q-ILnVDJ?bw*X#4MzWwJ4Pe7cK?iFr)_OTJF8{Xdguv9TTlpI^x& z&`o+ic#xK4TJcKOUKSGVy)n)5t#@#Jlx=5LtxB^swNI?bTSd)<=yJX!M} zX?eVGJp-H>DJU@pRg!}a5w(=FP2oEn6bu4danAp&B2J^TQY_dqmtYKmpX!zqesq># z?v0SngUJ;>XCi->t};NhiVgel70T#hszz7W47WwEw7_lY*!K=YXDyc@3rUi*Qlu?_ z;2?)8o7a!4g5Pft9Q95iHj8 zXpV@j3Mq!M>@sf+yLK9Rb<$g@{%jJ;d~fu-h<{~)E6Dh4_}5eih2z|6ub=q0Ejp1F zMQSlC4AUT?Au|}q@PWsTymGM*LdWtDkp^hE& zDC$hcOFg7oJWjVjWkwohzj%Xh>RNxzQ7~|Cd{52LZrll3-_XPttsHk44 z|I*vUgGty{sUmkV@#Ogs(8|X=;8bS8PvEqzsIqqWqFUNMCVPRV`K9KI``U(NMG_xu z%ih*1X$gQCfKi#3RlutKN-hEK`t5dN*=kJb^%|dx?zs zEMJCE_d==d>x&!Rj>2B}Ikium&Rd!lh;a)EKBst9^9suF4mSbSBnhPw!W*pe<6*jf z(EO>e*Y3?%LNTXLm{4jM^AvcBOn*xOCt&G)t4UKHnz94$YNzidnF!; zmt&D7hp07x>xg*xd-$lxJ%LSbpBmkDRVygUd$buqX4>t}uNKb5AbbShK6FQ71`_}**5D^~{-c$uW>--+$5y|({9Yd-XNR45PPXyCiO zKt)Vk=dHv3%~0;$o3V`9xDRhzC`OT`jJu3sY`xeFvNEHm8NatabfGGhnoe!Ijg)Qc3*wg>uahJPT*%%U zUCqI%k#n#AFrxNGGa70e*mdq%aNMr(yynlGr-CNXNkJE`d7O08jEG1{XWgb2QWsp- z!IUY+&KpGMO(%u-l7sk_X62uN^Y-N&zy0*|oL0-l=ZoGO`FBTpowK``A5BjF78qSb z=Faz|Z?|}+G3X2kuB#*{BN|c9$b>u0X;uHJ3#gv<;5TH!s%--QCTu2*@0ZsLHyn-j z;oO5%<`9!;>Oq>EXr^RBMj@O5IxSdrb%iFZFBJBM@^4tMTj27KZr&}f!OLIkx6h&y z?vA!8f5f=RYLsi&L?s`y4ps;3+TGoDcP@4~?4<^6rv7pM%esHJ>earT9ganQ`;GB# z`FQCRNZZ;TZF2i@7io`DA;l-J{_9VgNIe*2@HH@mD>O6Pvn-purYF&yXDQ$_(%5Nz3k&(-Dxm{%$^kk8mO zac1nveQX#^GI*88Kft7w7FO(*W}(0PE`6*E5l{+@cPPQiW+vdtWf)Ii&bIqpnzpQS zC}+`(bqFLz^=O%10EL%m(4(sTqA_w)Cn^~GC_9`|=yE7gdT_qY6CC2Eyxi_=xr+~{ zsAYSNnqR~#s|IUW+KwI01*gkLvjydtZz>lrhp!9|2k`pdS3BB&aX$G$*m>|hu|)B9 zF6g!)#tMw*x+*DVuxq#kr>5O5hgu54pNL)j!6TX|;2;xqSw=QSC%rimcDxu^8SU8A z@Dg`9`PQ0VnoK-UpA^Em@7*U%5%~8vhyU+mG!^Po z9wpI^&t|_dtAl#h#m>9d)-tvql^6+#*jLyuUeV-ZntiLamt`vYc0MnK-JEjM@K`KB z=JcO9Z@D^OqlXAot>`q42t2aq!s0rPtrnfJw%47cfizlhNl6gX7LN5o9>z3G$Ead( za*GYK!Clzeu-Vwz$^EyuXj{1Ej*%eV{SHkwND-x>hD|>-Yj6KhqG|pj`MmS4 z>rIGFf_68wnD01BQ~6?NG4Sl~p&6KNLkJ-gaz8*fy1oWOpzv~U5LZTbiPi8qI++aA zN5Sg2?Y~dOU5-vlkxHIr>FBoY)AL&gBb++&5q1wCW(44xuqeFu&QgB~@d>#e%A>Cn zOF^lrVoYNwZ`SyQv(M({xFLo{I--8dEj^<_Z4-vXl%*+A;0)<&+bP}39UndmI@zEZ zjhFxW977J&+&JS|jL{`ZCZOH5%-M34EPlFRbi-a*zZ8%1O^^_r0#4G@wF|}mnueaA zz6OJH7zdNl}*=w%Z(DBw9@oL88CQYX}FuwPOXp3 zu1kW>#FMz-hF3I@C7V#x=R_t05D8KN=L2j|v8_Mu216to&cCb&82!B_+-o_1s)A2k z2^p$vTJ-6`H2wWZ^3m!AyKW4hL|R#7q)dj@#s3%NyHsY zFrW$Lgh`>9VLYS?wFZMYTJCN~-P;@x==OaKM32L^etrAvKF_bO`Yt44wJpVr3nOnB zt8gc$KmwR2fPla=8KBMFp3%~iJgv&{Jdq4@1 zXwWTBwuKxVzQ5b74q8Gox+&r4JS~0dzdC7WrnA&-ETAj+qhxao!wvI71bc~-=tIg@3HvZaZfl_Wkm&%ng3#LS{ekxNhQ!k<}{i!4-&>5 zky&vAj+C+G%~ADDFDBe*UEAEm#NGBwFO&yrq2J53k9GWv=Rbwd3>RYWBn)O)^LcFM z6Wk8^;}Z6oVQiS+aMb?l>&5ZB;bXPp*k0p%E%0Fuk^x39ItKR5@|1vC4eO(PTB#54 z`X?NY-Qe?ww7EeCl#k~}!UOlu#cvnI&mL3W{yZKfCwlVOSi<^d!YS~0Wzk3E)0FsW zYAzf87xC)@%3pq?V3f|x3hN;2s%$#;^?+9A<*$qHdCFiGTjrTjos+3;*_h4U?f%We zF#r5X2K)=m<#4t0E?oWx$K8rJB)Dv{x^=UWRxZ=Ydy}1GHt1UXW-G`SG1{^EJG|3n z=>mzAlvHj#HH9FR;%2((%+TZX*G`3cnV8TRRya%C!tL?C@6l!n;b^YcTkcWr%G$dt z{=of9y}gK!CSSv*b5a|I-IRNSQyB3XVvbYxFOTT-OZ_jkol0 zSQ!iN3oeS=f@+?lJ>POCAM*IgLkRoRmOq9?M>XOXGe}1MOI4IU zvkUEh?I9gUb zOY4zo$GzbTxTms3Bz<`tES4<;8X$zK6j85fL7Jf9ArqrK}AZ zOrmDhm*k{>g+t%%bpc}U99hh5*-w;UcV_H9rGC?KFjr@yPd2tk*Z9|(T{T6g z-0O{y>RweXu8I5j({fsQ@bIv7;&rZ2;0f^>iY##`7lf%Fl|Ij$Pg-^=9`t)dk-FSQ z#R|qFIBDo})8-Z&?E}x=aI{~59EceGV&mv})>XG?pd-Rhc0%d5EIe4w`oWUWYf+j$ z9wuvo$?z#DS(V77z(a&+t}z=ezu7tZ5xWHeW3Q<(1_Lto!$r#wd7N|A;&peV_Fi<(!9jjlQAyq*kpz-Yhbs39o_0;2c;8@u=s?e11pC%pWrh=l zBfB#5N5eUA5`YEN!&X;PG%SWW*(>#teB9`0qc9F zmCj53eIEn&hsBTAvi-cw-l|pF=}gc3g7%oC(GlcJL~Mgrfu)TQkKmMT6YF=?1cqZo zF zN2MV>FSk)=PaOy|{yieBm?dxq1|_b>r7q0cKkqS_**|A3pdHq1(`GUBLNpMjqzbOP zB*aW^7o6e@nu6OObXK#d1)(jf#eK;0SkJMSXY~9vYnT8|>h!(BbxrML*SB!qw_Bu% zWyY74A=680t)hJ@e!D}vc)1mVjK}^|3Qd9%RW1r<$*C5 z{F(Wd#>x4d2PC;OUWHsRk;k=#yTzdjzEA1*Tbd+%o0L?y-?S#L!8}GNj{NNLzHcAc zCz0tlzio)H=7no&ErP*(KodS4-g8@S=y?_YV)X9UX!}j0o+Gd7m#t*+z@xu4dXB9&=L@1M zD|oQY#hah|rXivDG6~n=xk2#!7va@@W6_45@WE;D>6a-@Szvrw`@YZUAs*v2A7A0P zSI5a7!q9UOPf1jm=Q(NwwmcEFO@`R*)Tohe$G?8m8t6w=2MxA8l}K=AE?jR72^?j* zC{hZdBWX;QZ%{$uHRjC2dH6Pdza`~+@J~`Bf5g|3Y$gBo%$_x&;&0XgE4xjj_D0@E zW3NYZ#KpzLem}l#0^dK!99`JU3DM|46#n`NMMiG+m^7n}F7)AGBb%j0`4o`F?9bR8 zGP6DGUq|e01zbJT*Y4OVD;LUE#70ht?p<3OI&m*S3=41&L=O)STNZ$Mk8$MaN@6$K z%B2g@?Rga@ssne+CnhGqOg<_a@5SfvFUN%9&VgndbJNmA&9${$7~nW=()g&@^-|F) zuqW`m#}PgLLe0r9Ro#-PxN!wa|JB60jY87)r%j9lqI<=$MfagZm7U;ZEh;NvRL8zw z*zzr@W7Nvd&Y{_%v2n~Z&8TsSO4ZDa4Ex56@Fx^`X*<6f)L4lzAD1Xma6Cn8_mqpo zcvHi^HpfTw0`>P>@uT6_iaA0!-%ScyE+!|GdS$+}HeUWZUNl(L7I$81IgG6FENQQ8 ztQ`Z*=U>(hBt5^Cp)MOgkLA`!t{!1QxfBooq=$Zu=Yst;z@xJ!(L=hpVt zHJkM3x2;oQ>HZqqsneOJ&IGUY`v)jRvr^_AYb8O?WL^=4neeL1az*p$IdFW^_n5l% zGrCbT=_Gx9)14>EB~*l5fwmyM2Z zw&=hBx zQg~8=P6o;&O0$TMpC=r(2A)=`cY8W z2DU2n{QiKQb%;-kA^kpf`fZmJA4%K_@~ci^GUb;Jq$MtV&jqPp{<7yIs}|_=%bnz= zfUT<9_}kO1l;R%MREs*>T>R4^>4>jqxx9(HhJ+?vQK@pzUougJjy0#~L;Q9#7YRK` zgYLQ*6C}%pc;YS7_jS^&zg_eGZd_5fE1G)s2+GrEhCiwlndjdkZ4v1)NYb80z!7gJ(q zx7{Nt5JLmgsnm6|_p=3;Iqo77rIB%3=&pwIxagyuO5&^Y_9KlHi)_)O9qab3);H7K zymO{QmMJSjVEBn_QbI`g2NgapF6yw)WTOxw6VArsb%y9?NLp5ks0slpZnMQHa3*o$>OhW5`g(^#N5x>h$&PIT)df?b3%q3P;NJ2`!iRITLsavgN zP0tR4ZB2Q$sj(AaOMkAMzj8E~@o6y1l79)a_bXI)#PZdZ>QzJ6gHkCb$l2ZJn3lms z0tQQ`pefSG@3m~J`qH!xeFL@MOzI~b9=~zok?+=S)T=~pKNEs^`&u%{nuS3vJr?lw9%-EY&qyoN*UAD;ndKUsK%rJ$+9lpBGO97CPUd)iX@sKJ_;?}Z?B5lzI*xJAiYu9b(72~66J_+e++@Vt_ zF1B*I8_U&gz9b1{wut-wiwfGD5VvA&Hn-cz#e$Z&y4pai6nHa!^iN@OH-$api84hL z=h&Tsr;BJ2OqjBR7rO}hQT-^EH=`|2!dOzv<1BnSf|5I(T#Dl9n5Ql6%})x)LOG>2 zoCQvZAB4iTXnF7w({y%EF_Eo3JyD3WEr?;#va^m&IA3ithzt7qdWpU#k#tXJmjCvV zY!@5f=9ApsOyA@kZk=~bv5=FKGnP-F8>+pL>aKO@7PPjQbrc|b*gG5>+h4jVRa5v} zI}WjZ8USx(8-(ngwicO=)mo<%#jRNB&=?3SE<0A2H_SD<{eH!9bJ%im6Kgrao>HhP zRr(peu8PKtCTU`8N`_PKZc?dQZK&J!zaQGT;J=Yd)-{l|P?3T#Nj+LT59q|fWUF4f zYShe^e;n53z&95<*CW84*7(Ej&;QyBzzHvHQw-W=gLslP8B)%61a!b>va-_jb#=DR zxy^o3#fiX01Gea-ynTI1i0@}$=LW9XDBBk5PU|wbM38B+v=V*T76h|KtF{{u3JCOf zCKls zX^r|o?a;Xhq88h--B4U%qJMUtpH087u28*dXuqSE<2~kMQP?bJ3|rsFm?(MQoVtz$ z%*Q=c&N$zv##(W=#^?U6{C#a<-uQ}`nIMXwA(eo`y0qAe!66E+NA7?@AI#~%kLY_Z z))%qiIRUGyThQiEu;=jVekpS7`fj_Xzp1 zRKz+K8HJwyOX%zn8d;Mz2IK=5NZ0n9L}=+CFyznMowt&vtd5RyShIKKUH*tjFm-iB zrk$R#w+R;L_g{RGH?BTe)uQz6MlLiVSJ!Z-=0ZZ(yg4fYm)0Aq}L&P75e%A z_&iOWJ_`?QLj7sO~^mwyp4v4TnDGIOc3OZJZ3I~eH zR)l^qz13+#JV#;Z>&>X_{i{9iAxf<}(&BJs$2$1^Bjqa_+>$oWXV$2_8(n=poU(Nl zv-T=|6R>cTKeL`q@a=Pyi2}7`SuRv&iyP2)qfg?N`jq5rY5TRdl3dt}=Uv#E4hsfN zj{t^RWKFgUwV+jKagq$d>=uodv2`k_B9^s6{ z67#Zm^z^m2pTrW0FI6njDb+}`IK678i(`{zgZZ`_Qi&kVVLdEO-kqshM|rcPPlMm2 z%Wf89K_AMAXl!feWb(!*wl^ECHm-R7flf`b6#w<+w{OTb(W(Q(u~W?xv)XRGu-C0R zgpg$cW&*p$6?;eCx29c0cqCJd4C!_p*}~$g*}pb;2a`=xj_4dT%IIO*S%q;coP)Mr zZQo79l!XVETXqpI$&CKDyMH!2tI}%6!J#Q4kUd9H>GeoB6i{g3GQri0Q=`mGpRZZ; ztf*U$6F-WrPLf-lYG`OETAjVP@NI8&zjZhBsMM|6`{L`x%w%81CrYTrYEh(KK1(2V z(ZRzb>Zmv4kp;&5S0!OfLY1-c!KNMChB9zm$ZYg@oVO?9rAu0&N=9K8dXCG>lU_?T z*$=X=ID}D;MzNOFQS*ILp86XR<1xAv@%i3f+hTjm^de$Cn|Sg<8-*Q4&)H!P2%G16 zV6bYPy_Kz_UyEv_+QOczEh1etgi|DFPpaL}%|H$ee~O!ar}{PRJJiJ?Q$?0DVNT?F z=_WOW<6jlk!v1nCyV^f-I)n2qr!}OK_hBr~a(W|CX%hNx&Ih#meWqzSf`MH%*7?R$ zeI=HS>}0-Y{coLyopQAxh;=V>n*p{=DnUW6;-s96tY2c{i`(af9Bj||gdt!a^hF?c zZ{+@^PD)FT9`uW6dE2awb>-s_Yk?h@36uyB3bs!S`Yd7~Z*AN6uHr1>HR~w*$f(uX z2>ivR>o9P3S{2Ku{Qs02rDtU?ww#x(x~(U$ZJ!Cj4Vs*MZGSapDVDc?Hna3~{ix1j zxp{D%&J(t!-bATco?MjtJbzfaQnxaN*-fM`KeRcHwFqJgrPpPxRLB1wVzPc%eOoOz z_@5mA3*>lF_#PGta@zI`L41Bpz+&XbZyzhv4<_i`L{g2vg>5y$AE3j%462=ve$86{ z+^r`;o@|`m&DqBi%CyPYnQOP(+(GX%6!00o-Ik@N>{6GzO;pOlEO6ha_}x0P@z-2{ zOmi?<-dX&hEkrpuD;;6P@;L65X6nev)jV&a-F7CaotUS2I|m+fc!Z9rCanZOhOvz)0VW1i413`%A}1K`XeJ*9X21oGsl%IYqNy<&Vb*F zRqXH=HUvH$tCxlWg{Fn^`b06z)Ok<~ z9wg|hMaxvC4Ue-u4<@Duo&2ao`M62Tk!;a%M+fhmpg%wIO}oLPC(i>QDMo+ zr))9_yaonFcD#DAu%7ew*_Mma{>aVJv6``rZNZ_BX`jR}i6J-ywA z!!vaVRAp74k;YoK=+5$WI+#|Ze6t}t3>4SbLl~#LN*Cqk9v}icR#Gek3C6ewLo+h7 zk%IdVxlAYf@%l;_dJPa1q@*iZN=gcPDLr8nnK{`AmrSF~5sU^VK4^=fjGViPLo!$S zAA$s40@?32XfWZFFwO*7!ML6@%uvyzB7f8SzI7F^-Uc^mC1yeVIzgeTzI3TV5D_zT z0T_&tydP|qGTlDh+&FKUAn*MsB-DVFf)VPNt@M zHR>6}l)G51jEWTN>1pY+D$uBTPePnFeN>Eu-p`IrTBT3P2lq~BMtkb&5F>0=*Mne0>Q~~5^{Qr5 zWs^d~0v6xS_36X*5xVP2^6U2x%dOE3)-?F%bxNn%5dFxhvaTaIR0R#+*@_x8GjM2L zzQeYytPa>(p-j?0ZLQRFOXL=6;-q{M?m{G_*zNMR9sY|UnHU_ccdYzd)#h}^eg(Fe z8xdz4%#b$+HX$(37B08KV%!E@QF;P9;mm{sm1ig)-ae!nVj*}vkX#e#a2!}u+tG0` zVDdC!~Z{VACE)d>%nV$Sgt>75I~ z_p0@U>v65*ZMCrFjU(S`?QG5peR2d+N(tsy-l=qIs~sNVa9hx?WNI%A2*Zs_k$@v1zxpVQkl|$9YK;wr*7K zVA>ZQP2s?+g__^ggkMfuB7enpg|Cvi`>Os`0Rpkm@~ z8R(SoV{G#xKHfK_Fq3qbssD3v}e~0beS5fFogOI z<;F3~yg^r#?A`A?;SJ2>B-LoC(myS6d?dt$A5>t3Z>bbiP2|0ZxaHA05({NYQm18K z$#Po24zKksK@ZX34QPj{Bovl15eAe#eUCTl`A%h7mrsgnMO`|*keEo8v!7crL^sWn z6H5HOV_Qkn$(dQm=lbAsU~A^jvr^RJlxcxDGv-1I!PPPjL4ARM>#yT2CPads&Zi9= zB-wMP1Mq#5NkW?JmdjoP;WOE=!fzEzcn%+4UAag>(~ZXD)hh$sg;wWhJRhIRVQ@2 zbdJ{5RpbeE^P9k2E;-ihVluOb!J*)+b`I*G>oU`%w2CFMgmh+lqzb$jT5H&Z^RE4H z*1@x8@3Do$kTDVQPgNFqB1vRgjZaFJDyD5GYi)}^SP~m|8-#A?o(57AWv1<67Vthr z0aGfhmt=*iqA_G~JDQt$xdg$Z-pMBgF>cHa4@^lz+2P5MB30%Un*_@S+wUGb@|%)i zBvFGdrU`Cuz6EF~_Sx9igY7`vDeJ;~a?4OCL7vqb0Tcb0vo;HI^!kXrLQL#rS(2@k zaz<&_DRU2sGCm`;X9Yy&|5CtCu(Zm2O;!%f561aOM2Hr~6xB@>OSO`K%TV|YUnal# z!?z!^o6HD{oNdrzJEQ9OJ))Hwoh;Cw!mp=I%UtJLlx8j>$L;s=3GxG}K!-26M|96? zr1`brZ6WTirjv2wN#&~8kn!C>TZnMncSw=W)+5Qfsoy%&`yRtsBi=H2&pp7ax47?-QE9Ex$uy@Lne~OaoZG7 z{HW^ifjde$#j?~w?_CKrE6Tp7ghejWCBI$ zGqvdrSZu%T-A*2|hwq;Gnys9^-IgBa$q|gxV!|gM#q9aKxIG*9!i6{(5tkWB-JN8W zt}fEg9j+5fT@=P^`!jaggekP_{WO|XgzeAvW|RhRNq@B zN}M_azG#!%@d?|Im6&v-0N|UeRv!CH1|%V}C(CpNP;?{Nt||wfOy)}BA{cR4jH(bB z7!^?9k!C)a$nUTr0FE2)hh&)!+?ck~o89o@YNVsTem z=o)!u5}AMlo?{}>Kv6_+x}9?#E=Mvgmz7ZEZBU0tL3*t8D0`D+!S%_4>4Em3(fuS$%NL9i%8$8Xe(&{%h)^iJz2i~V*HbmHF|2e%CF)xld7rf2o`yNwMNOal2D}l3{7=aSL3_x$w}S; zZyldsoRy&_*l6Pq@d~jCtVkfMS?lDYmf9aHM0$zj(wwRIIfxEQkgpFz^L==GKba6o zNYkkjprJ5Z71J~2*Mw5PL8Df^4#ZCB^{J>B!c8eYHtxbw{WdrlEhj5VkvqEn=!1<- zsaTMNuH{D&O^WyFE+NW4e*BP@Q8;`g<~EaHZ@lCRv!- zr_)5590pHLCJER{Q(()lkD}Ve40SbO!Su_k@wK1UPLVjP`$$>e`vu${HUB<#K`G{Z zRPZYy!LR;EJL|1^R&Xf5hA~HHe8o>lezo!dD^yY=!OX8tG!ux$;ie1b6XO~gAebpE#i;r z)y2*5>A1oo`c@=}APNeHR)s~nxUvJLUpZTP(|YmVmGZ0|Uzr|y2dYTc7tRo3U>k2X zNIl3EPl-Uc$-rHH_xpUqMU4R5@W`}u&RXtq9@`=Yi~?TV$fRC@bNp0%AJLqo`uc=% zZX2%Z#r4xI$y`O|=p=%`A#(4zzyToYp_jbJMnEV z`wYNt5NE(AxdZc(#d7xna8186@J5N17QCXo4EQSat z`ujg>mq{NE_-aDCW#s9Z{7xN!6qbOecD}zD1b`y_a}^a8!uwz9K7HB%AgD@%Ha>{^ z#?Nlv;d_k8&-@qs^X`dN+knX99~c;DV)7ecyq3?erlJ63@b+ksBRV=-{O?kTF((wV zxw#3ZT!{FdY`j5w3}#+XK$`y~$jMItG7)2w*@N+u)(+{p*a}{i=8;!uB1@CqIcjZ06;Q*8nV$s#r)v@DZ4dBtxAWTK=zNfwb zG6s835diM~B7pWmINjEU201#f0hcR-%d8iGS7u7p7#m94_B*b?<>qi($SNw{Qw`Nz z`XG>lE+njb{?!Tq=5U)!gGGDygd7bL`k`&FbsG@t0PMsF+?~l@fSKz&-Ccd26Jqum1%g>27bXf&jtD>z7O4d-2=9 zr*NZk7FiqcDQ94PH-6?z({XzrECGh8+uiLAgcB?d0OLLA0?e~Rz-aPdf5vZ z=xm+UD6j)02-xT3H1_e8rsniLVF|qWd@<&quQa0snCkBfRJ4@-$P> ztr)(op&=FFEO32&JPK%KB4kgHBwVjG=?SRmgoTAKPA7?ZEI)yrjzPEn9<&ti{X}wj zMg))`h5(6kxYCCdJi1@|g`C;%=Z7CJUf);Qr1RyvEYd(9|p*&>%tz zw#l$f7V_BIS!maLNTz#s5>s*V3KL?$@IQY12ppwGCXt~U@YH~L zl$3Gv@Bpk9Cot!|`8Ix=ar22{1#zRNg-PL9lvP^QIl5l}X!9oU4va)$ALLe;SU5WP z-2>rtS$;W%gB)zlTjpAi_WC`AsQ=#sK#uxI5QYsg*3qQHz0eU3{`E_Lsty^Foa&q~ zrP0#*284_E6?5y{54r$Ia>2X6YkvViy3|&xWMyU1);;H>zy@u75{#5=|SU^iG` z+nLerQ7U+kML@&Q81z!Tn7l6*MASU<~D%Yv$3$q-g*L9*eI{U zF^CD5vuNV*&Y(MBJogB{cP0YcWs_}QPS2}LY%*TGdIfH_3+5Ufv55Bp*sAb{?G?D< zz5`a+8elpuvppgb^*z~{t?Rtn6K){FKw(tKI5}p}NEZ*f1=uE?71kL{N-=%W&%k1X z{{9Z1YB$~iaVtDN5?H17RP>PJe5=F47eNk=eZYZYV`f%??{O)(ftXU(-5v56Fv=R8 ze}4t>+0xuRt#}r&o&RhR6BEPr-C}RbguvASc$LBaLVF@TAOmy^o`O9AZqd>6s*b7cOUv(5W(8JNEB;qrG7${q&;n4aUzXKLI?e*k2&^#})W zGd7*tKT}#p*&;r!00E_u34WzYujv_XWQAVS-nbmcqhK6bSW-&L6G}0E5TzbtQCtHw z90ml03%l9cRbaM%LHt3I$mDZKd1j!iu71*kC5}PDyRm*A0vy2W6G?n}d^}gs?RB=W zm*?KE3*b-vv-zx~AOip=dyof09@rc%oni!VpfOxmMf-dXbG%j~S%COx)NfaS)CHhw zP-{Tc(L>;j-CzZW_BktZ2)dkOC>>jg-(+jp3xusAXwz^EDp z3H9P=6%b@|>+0%^z$^ZsBz`fhhHpDeSImNFoSU0_2S}@Yj=#J|vIGHJZ3kSDj7)!) zpxdN}OMqBzvCVv&*CM!pLYYJ;HNXi*_pN|vk2mg>!%(-C#XNGr`LU_F@5|H25V*7qEo6dYi;wUqM2I7z3Yw4Za{qEMeHp%*-G) zJPGf)xVY%Igd6}6Zy9Nd1qg34P!)CcNq`9h?+>Gi2btCnFqVNil?{WNs4(FV-2a{j zIy5vCaCNo|z9+COun+>jhw|<*aGN>zp0}q?%RN7iU$*oX{W>tn*4FlDyxDHLLWN(q(Ow6{@ULH` z1jLlAJUts}xxrVsxTm23_8$1&s%qW@PoEk9!X1dmgWxC;c&1#HS!hY`c5R?Bgb@WS z>AZ{tsm}I^+;baxYC0W9A{aL(KpZEoCMPE)6_%7}<>1)&#t`4*)xh^lqzCfp*th*2 zRfvv;29%Z>#Cs){AB6w=L>d!=@fw@OmZbIxxlqedT9vv}AgYHv#wzOte9%Rp$n>1rE$-H~0KD($=;$8y2`<)aF~Dly;$iTX z{xj{*66|N&a1I_GH^3VN`eLRtC}=fZ0PrI3cg#21!S}#XoO@0pXb-c8I@hbP4Uzz^ zCSVsX7QB9c&(a2K1}@|h5E>@6e9D`-@97n!Pr|_l@;ysS<@{>= z<2l9q*YMM^hf)U;|7$Nm!E1io$qnE#&sbPo8_UPRcJ6!R`AeD_$9W;Ec^6O~fy)Mx zD+qiSpeK;5o`bw~(z(RP@t~`=0u_$|gG}H61P~BYO>)Ho$U3QAXh~wvHpU8oOO2pq z*4Nj=4gDN|32pIG-@i0S@)X7LU(TzrJ^4@a zP1^_X7zZ#@H3MFOX_Hc&W>d|*_TwPxE&|^MSaL~&fu$fOU>2b85V_i^!|c%pw={;B zXEN*&aN_)ls=0Rg-Wh;%gg`(HbDO@oTRrs!DkeKKQ`r2+hdv5FHf*TK*^Jo;?Ea?N zsO}oBfh981)@}v}NszU&4_uLfV~~P~1&qEC=rfz~!mnSyf`9VZ9Jly;@Eh_I*a#zl zG6J2jJzg{jCM8`Bgy`AM=BY0roQgWk)m!tFz%FkqJ1j z4kVlP#^`_$0TTQ}1>u*^pPfMnywAD3 z(D0skX>;(=-@ktc<&n)|M?38`*<`5cV&D}!S?+}^NNHeSa84Wu7F$3)0P#NucCwmN zL;l_b_N`t;uXdx^|vw z>DQR_pgecK=x5CR5~!Y6k@z;GR5J%1@!-8=z)E+dtS0D9c9yc(Y# z0g-TVIRso@5F2g)C!QYtK_2KdjqPKENwI{0(Dt58@FN;{7ofSLnt)E%Ukj)m(6`U4+S zW8cgIRr#7GUJS^35k~;_jO*ucb90**A6HdVL!}1WjIS@ZtBaCAIvyAqc@id7_H*G@ zoz3uz0NIoK%J{c)GjJ(zE^-M}rTq3Y5XfLE$39p_;1$<_cfk*krmGC}1lgWG|6bp> zQfkzB3se-y$#+PJqXb|7CAFO)6M_`Gv;gtOnKmCf7aK9^}tlE%aHCL_f04L?l(IB z?}FvOmoNYKZ~u>a?*HD9|G(XkY%U=xn=>i`4*% zj4;9gNu;vw`{sSsb|reYGdnT+kUCVc9K5)nvlj#qJwT%Nfm0Mqe&AlO@}K5 zT^A}rrG7b4KRG$6%=G8b+ufif2@RCPFGVOg0Q30SGd_$LvYYzH?!uVyE#N)r(g6AbI+L z$`F(bpzM={_74vmw79MUVHeb~B{Nm2cMdukLn9+2qhJ(sc{PxlRp9JAcnhKJiaJnK zN=kNvQnn2U&oWBeVNWwvkXeO1ceH_CwB~KSZ$p=BYTUe~4Xp>Y2WUf9Ym`rq6})Z& z_T{;&YgLdqI5hNSr}n-I**WzEiU7>^{Nj6RJ6M~wYY(iox_LPYBxPJFa1cBEKRW8? zER@<^m#g*z*_uMR|2Hf-&&=KTPn5aofas|mhRo^wz?NKlAz$QERGb=l0AO$FW z{@}dtTd@{*-%$3es~Zsl{TYk1gqJjjK-+>|D^TY&B(Zblg-M_bX*XA2YL>Z+XliP@ z?<^XD%KIga35R~YwTb{)$M1KfK!rMSq^ddsu?Q4voCAY~9ly|RD-arNg1SLqfVkNTynG~Y;{X1^%Z8QriyS+DmU2m@s z{53Q*?BA{uBmMpQoVel7wwV1R?WrDUC%pz4gSmL z>XJnOs$#58%{k>Z!FM|6lL1Rpr5d7Jr&?QG1+DGb=9y49qt5c>3bfV#`dt6J{<0yOmkQlXq|Iq<~}r z;_h$O2kyHwSx+5}0fAgw;ITIkmb(LR->9vE8ggtuXKVhqo~U{XYDR5;OaN@bttqRU zViOjg*88hiTU%SCl)lO>E}VJ1Jz0GJy|lL(p-27;a>;aBVOvc==k2jp>NkLMkotS9 z!W$43fX{URta29l6L8gi{tLYSo0YfqPZxNzR=m>C>v<@nM2;$wDzZ1zy{h*WKfG{k ziy000R2lfUkr6V)BT<(gy{-9pW;rwrU|!+p##$>vZ@?(QgKHp@0phtk82_P4hEOS} z@M7f7fn0R}82M&UN_T?`d#g!U1LPz*dS5pnN1c{e2*3H^1il-*QwnCww78m~5Fk={ z-m!py$i3q%62JrZJM4Y9;{oKHP(qqh4ZDEV)m8B9+fV21V(PL#gPH=sYzN*_pnMJ| z`rKDSQbo(s1_SO31cB!K?_gqb|J<7|@+_-O{ZUa-fcy|{)~#E5Cjer0@@;2k=A+A1 zK*0eDvCSO(4gj9-6u12@oBpIQg>CNbT*GcGIsx=F@;So|4bH$cVLP6$Qol zx>Pf$a~GCxo`8B`-GlNq5aue{t^vEdGh1CbuBeDkR9&# z>3VtH9bBtwFQ5n|E>wJVFi*aD2H)rk#s?(qDCO|LK-%-SRc$*UAP(B&U}Btn;;n>fyJwd`uT0bed1htJXLLZz?wgB1`wQw`!_Cc2?VlCh;LY!qgX+4|*n5yQ z^@rW@@v$leCx{*DE|nlR_CK|7XxT0@uVn7d_Pf|NPi7VXuN~BRwI1NcoX!K_!e0I; z_81%kCGBa`r?p7`C2%kIxb6a&F;}6I#OR$eY3%o3Cq_SeE}$Pre|FNP#}pp`ny0a{ zpYrt`YhUXDPD`27U;=An@;XqU_sY#JEz7F>No3g&#VV8aP9lbNu5rm)Z|x*oTmZ*J_pimcT!vYI6Ej8hIuQsp&kYO)Mn`c1*pxGV z;BS5VpyOHh0MIO-cmb!^+1>=0l69xYcMK$mY5m%_iQr>pb$m!pzOlJE&k6Wn!oh_Y zdUrH}@iK2IhW7by=Je+tziYH^-h7DRH@|#hS3?7)>%U3Aj{FbAQ^3xAnts20p!4+6 z+Q?nRRi3O*^#KI->B}$RdH#4vD;SqnoXt1O`Q%^&~8oBiv&SHmX4jB?z%9%osuw96)J1l(4j z^IjEwaHvfM7#cWZVr*s)=p{r6H4z_!>he{_%5N}3&O#{5hlab z=miP5zC2rasCqiA-X9S|&pq!?`|BSuik!X8uJv0%#$Mmh(eW`Y>tIeM=U_+IVXf`GN)CrNGFr~l!7g|XN2{_&{5|hrt^6<$SxCxFY zMRgYs_L6!i&<3BL?oYp|ENh;#1W?GrVPDa?^_e(btS>R7?46G0A!B{5x#jcy@xyP- zBIB>6pjk|PX|EyM<^aIo3+w~{JCj_}Dx>ITJQ%o)qyt$qnM;T5HcImLd<<}awI0I-9ZdhFwiAVr?-FC{i4m$pZ~7O4lv zZ#EeUuGZzM20EZ>X| zF`iQaufxC%?KZ$*&tz-Lo8*9drerwlxgr;CX!lpsKM(I;f$bJ6H>q?jRXV=gp9**k z8b`9lFF{;y2MMd}*CrcDIH$z7*-o375kO{xM7#jvexyDN8sskgR3ne{wr?Q&d~dWj za0m3=d~k3upv6vcz)$`3HsF!!NY2gQV)cAkQ7`$7qPc$3)BU9nU?j9BKsFC~jWa8N zfY*GjsRtl6bMoy$`Bw)q@|b0Jw}YSJlmzpkYCv;+U4EMm=$Ic5LFEG)$Q*wt{wG7^ z4oG0DOlMh_yMK9fr~G^ZlEOnnCutXAfG#!t*t6BZ8M!WguN8;7d1b;kXkp3)LMM=R z0C&C6>{?v6-(-v3NK@=;Ffqx$8v|uS*@8sQ7=Q2<5YYBF zwT}FegdS_9APT>~woz78^uE|GPCP(^ko6DHyNWZ2qo@sh7-M3` zO5~on(<7!&4aJ*m=Kuf(3d(O*@b6LAGE*NM+imE%I<|{G+*uj`peLde`*+w+Zvvhj z(0Kp^I0xb`%K{Ke#fHQx}*&l2G zLU;MiF6HYOe1RXgouG^uKGYcC6rr;P(g6{@#P2tng8&pDa@AZwr0^P^TV4P2HXWMP z0w(d9TupnEY_)=1p=H9=d2m)-T>M;7_0Ak*+g@4*_`97hd|nU@MG@Qd` z`?0C%-AEe$X#xlv(^W>#oBx3$sq*2;HvnQm9jRn|{Q!c8kMDi5a{{E6`3w&Vm5gXxhIo1Fj7@HFT=)hcl2tvF)P$5>m&dqxc&>XL zxFA<+^tZa79kS~F$^?D=cwO+b^iqq76aowq8vtsvK75fIcO6ucVgcA^-@6KREs}8v zU|;Z3Jph6b!E^z@09^O4;9Pojy*N%a@$&@a@V87+LA_UcGk|`@A)u_W7^X1j#sd{Q z5S=eSkv6=^tzaJp=^2 z`>*dnImSIb3JMB(Y}BHZBe8TC-2_ZrmLq8P-#3yNd@P7m#dX`xA3=I>3_$=e{wbn(el6>dn&`%1_^{jr8?fz!NCz zo?sLgzfMqmY%^1lzI?z7htC0H21tD%u5G@tN(6KRP<(I*seiTHfO>)3pt0iP$IiQ2 z{2729lR~Q3wZHGEAd#*8OHXv1Y&3Opa&p%1;`Ql-`l|B72dFinI?EDg%Kz5770K6FQCEcf9alQn&>-1v5GmXtz&?@vj6O?7DJgyfgGR#0+}J}O!X+TNl8vV_mL1D%8+L%`%#oJ+yaOeKxP08cP@O9is$#50uXEp z#0bjQwiVNSfFn|x)I9t@+G|os`C6#gH+6~-Svs}_h?c+SKI7JR9?#_D(tia>J1zTX zm+!xtGQh%mUx5$elWs+Xxwt!JI^fj((jz$jm$Gwj1Fl&My>OYl9pnGtOla$jl#C2& zyx=L_Pc3ftO!2^iT3A>Ja(0MWW?zZK|GupOa%WyFO11uZD9IU7j{C8vyH4qe=WYkIxuf@uMsW^n$Pwqx2C;a*C%82F+eBBv*PPPV5TK=k^4tt<*d#9DI4%)iMsIHRP3gu3EJtvN7uy zKUnhl|5B3~`m2I50hSj#WBd%buO#R|aoJj$QKaGEc@m(rWvY)R0cLl!plo41m;q@{ zBG&S_P%E2{I}*5;Q78xliUczur~r*Zh_Ipqk`f?hWI}jRBuwGk<`A$li2ZGu=JJF=DDHfDC zBr3I+)WWiLF-m5w2u?UD5KOKbmWErD6pq%S`}`_}Ba#aH{M^K^`B%q*vg>|>?aty^ z6~5OZtSmV<+vH@&B8t_-rOfafL9T;F*-tf8TVo=x5i-n1FM$LJg(~2F8q<}ApuPOr zo+?7+6*z|qz;S`fBjGSyse(92g5ZPxWh4p=XV1pT&1QsPYEDGR85~M7$^?-ipo5gj zSTW070cw@zy~E^F<bJ(NvGQIZrqm4RvvD*#r*9SLIs7Ea17$VZRRBor%l{zyIdM@{ir5*BO(I!Ou( zyTn@CSy$VimKm-7DyT*&_W?TuORDU(=Fz`<5Rk52H(SM5Oh~6!ZPcUTMIVIhCO67< zk<98g8Gxn|h{D>+M5(|<>C%(<`zWoVP)Mr$D0NWqMY-Z75o;mgT5pwbbICYku1>$R zLZonsQ@p%5jVC|GOp!mug(0*=Nb_P|{+Z;$fv`X@)T)@e71bDr^XJt4kqybgn$kl|xSxVkQw-$wXM$@Zy z6JW9ZcIh~Un(}6PLC$PwK4nsxQ1UA(~uSMky7M7Dqta_w4k=4 z1KlOo64h0%nei(QuMa`Q~{fl-zt{eOp-EB|OT z+Au)^bu^gfK6g>Rsh-dIQ>h3kNQx3*WK|C}g2-2KvC5xR-G?Yhk;IWfSqY%>m{M9Q zYHWc}X$~;!8!376q~xCz0Yrub86aQUMOnZC_6k68rJ(m@IhfISx%=8nfp{)Vf%2G$ zvW}ntED&*}roP~JvY@?N3FkArq1VpCArX?*7j#}6Rs+{(*jIk=!lVRP911g_%8oAf zF*kmIF6c^e>H{{qA{(bsUt?Z*7^+NuQe2|SnUNL32d0HWbDgW4t0Zc}*1k;FqN{9* z%wP;j0w)+@>NrwLlX*#AZu=*{sI7oDhE-yP*GYm25u=MW%P4EZ;!{$@v~CHliHN=2 z`H9OKB?$Q#Rr>xJi1%gQZpe~nBpHZzLPWDoUKbpNzyQ_8*>mU@ynNuee1kx4?@XJ} zFIyFtQOA2KY}r9yr&!dBw$7j%lw3ah})41-y%lwPuJMLG8g zk5c9Ce0u@UNAs241kQ6waXrXFA>$Hi*MimJ4ahjIlD;RQ$|Sa~lZ+soyto()SYa0f z#m423kG7mY6VNb)u=$d*1Tdfoml<95uoZO}9{-3}U6Dmk6i2i)aicTv^&q!E3J}2k~AV#cZHlLlF8AcG0 z6fP6QUu37>c@UYL>>7O^Gw?{)P##)<7E0RNptlb&C&+iaK& zmpRuaqsqp(+Cd+a1uN)gN(~A@X`m?Aa6#IGGGuCuistt4DVLqnLM$Ey@SS*?fGZf6 z;Hok$$Rd4`2*vm)#eqGXfT*|r`L|cca_-jSY~S|^+jN9)BrhoF8PzvTKhBRFWF<6z z>fW_Z(QrS+?I3?D{!BT|GV`H^qXu%K&DcRf@%6LUJzFQxNV#EBTn#7#1Px=vmXAw` zLm-jiqosXRAU0+4$A<1wpS=@`?elpyEqZLdnD3gUE{ki07DU3wDNk&p_>mmBQ7%BF z%e0MpS-@?X;7m8JE80UDo)Lme<*qSlr-!TI!ZY$7XIzQN4cWAREKn^=g^k-qmJ*@# zg0jdWjRJ$Sa7Q1eh?*q9L_-wPSf*H{0zTExM{9HYPBtGH?uuU>(B+u4K?{@m-z(kx zZBA1|OqD0e!-F*)>8Ec?-ff2KKLly2!J*gA@Pw2rh7{qx8(hPpi%LU*KM1H|#sm^N zS<4N_N;B2ZTdW^aei8H%UdSK{Db{RTDugMubxRAtOR?e-pwa~_C>R`9o)cgym;%SA z0&uP5;j9>6OIT1SPAY5_Ty_xJKQ_uwk1GOs*Qur?NoFYO;zWlx<95=xyeRzEj}h2N zH19ze3#d<@yMa-nFPckjY*Jv<7At@CQ-E7$gMy4~2IvXYJj3FdT)|V~bcoWpbteZ0 z8N?ry@vbbw>lE>HR(mDi?2j=pHR0zA=Z$dy0f#V-pBzF zrR?hWl|^Q`qZo3E3!j@2Cma|F4_6&GF+s4>@QAnz3v(tF7jG&gi62oqyDRDTuLcHa z!MhFufQeaGv9YmBbIH2-rjAwN!UW7`f8xtcJ9SZQ zC21fj3o|vM)uYvkER2W5l00Kle?{#?*9N0h!fP zWKv`;Q$QA;i&k?-i{3bZXEA+NFGpQ!{lSo>jGVa>0*x=LW#XOAh$>5_%*{l}aOE+8uy^5+gu;lfm{#Ray)62@``s23acMsdcqc_FlEr zHYb6^%Xj~(cR0n{*SPPOH$8WH-G9EZv$xfQliHO_anyJMT}Swl+39@gf=4GA?qjOi zeUvBXKGmbyg2yM#HrsHG;*P`EEw*T%i)LOO|87xw!JB0;*bdIY?e%-`6EH^=VYSkY zZE??g7LVRTl>lc zEtKGJd0}!YJIM^Af`T(YTqJ?x*}pbE4_yIXZI7OaenP>NxD@ktC+(f!Z(TZ>>Au?U z$^7F!uwmyJS3%GQxaDG&pm4Zr-wdc%nv62Qos|EjL}GMy*_Ipdbp819+RIiAA4jMo z6}wGreX=!kH`67y$hk=CkrQE@L|kdYI=(zKkvMFZPW>rYH~n9FuE(kYn}?UB|7oJS zxZymCx+$;}I2s-dFNAd^q%an+B=L3Oj$<)q3Lu(4f(=D(Sk9{Wu@ z^538uNL&bO5;0Qivm$bo5(8qUfRl9eZc&Kfy+9eMEQS;wk^=)bL5)!h$&W0s&oXMS{x(`62t5M!_;;B|qqEe+iJaRE(DIh*mDC+o%}uIWYj&uw$7M-Ckel}yIqyhnzqiBs}dV0*GKHjoH?UnyGGm=j@$l@4{` zDp8<+>O1mRAeXpQaC<}Gn9R5j5|^G1kA3^NFe#&IV}tg~#>~QVlkq)O|CW{RUix6c zZcpss*L^Xd34n{v>(`2^gdXVh1U+bz*E@6v++I&92{3^V*m=QZ|JVFp*~#wHi))EV zA$Ox&huNy1z798&Cv8YY<{hd;lt7<}ue(?3W1R=>l5&&oxC{jhNsCUebI$R9mgZ!M zd;G4O{rgK4INd-q4sb>QUwFrExt2+BQNcUki<^7*FV5(HRC>quMn0S^OJ)qN=Z=pj zzPXAd*YWsbyZ3Y%>%H_OpLmNEU~AgEm#>Od^RanNMOt{&LY6tc zqGDd|IF?v80Qh~>O#4+)C|RnlC`{%-X&nT7nsOt_I%<4<>xF4l5EfIR5YKQu`ekQc zkUWB$5h`CJVnq?p0M&)`V5+^}XAmt3WYZv=Hb5Z1vS28rlVO#_eY}Wrx=V1Ui8Vp34TTrlWc>XnO2>FtIg}xioRCuPfzpo-5=e$vKozUc#Y$$_;Gh^; z6kUC=f*s)a#Nj!RS;dJ6;ZJ*L@40I8`gb^3%5JYrSmadG-E_8v#;kYTjvw{!-*TM`g-%0xn`f29}2~Vu|}9f*>%=Of}po zKJ0N33>Zm?*RH%YRdE!mzXsuMUKGsRR`a%=<6?sy`_n6t6h7PO2zlZ}pK2XNL4|O3 z$_N8iI+8MS+l2Iqcm9XO!?(eGwUh7OhsE*GSh-hh)iL$^7#nj5PhBnI=zs5UvHMxJ z=jmL<|GgxcLnRH8!GhKcav3hSqw8Wx#;lN^T07~HW+#EpvgjJCK+p6woiG^!)P`%& zYy~z7|1n^jJv(&bwd%r(e|VIX{Lt}!Aqikk79KOtph(Ro@L zA|(%Tzlkq#76sWP0g9U>kccNZUXmi|Fwp(7kV4+*HT6nQEjo!pI5-ZiW~LBL8a?0s&Q45geME$uFCps@Tydc<%}oDK^ET~yh%EVT4jh<* zVz>LwB*uJC#Xq0UHOyA&A6Cwf^vEnuO_~R!zx*x43==w$=xG!8^Tvf7$-7Y+e9`Ud zOKYkc97(b0z0dTZZ0&csl%?f=O(`VrVFNwQhK+{hpT=Lj_nk95 zHL1EDs`fj&cI(>R9kEm1cB^fx#O9fG&I)Y*$r1IV_UOE^@O@i#lj(I&_H~$um{=Op zD~0v`#TTPl9J0o>0uo~ro#!y$>puFM-C{|fL+mZyk#9LZLmMA$EFI|5k~KTu3`mLf z#;^XB<`&;9T5RAaA%>~TGX_5)&XbaQB_+eiQX>UPIdc5$71eZEMNdS)Q#ylpc_waV zdz#@oDlXJM>rtzso|u!^xXhmA%&1hDTdtN&TNU4$b~IIVLvMterFw7d4SjVy&Nq3MBb(r_hz3phB9d~Q%-Xk? zjcxf01_FCH%u8Vm&`o?l&dHyW_10!yqgWF1R3X&%jc>XUkdF`Gc!VDY5EGr|TrnbL zq5tV}lp{EwpawdBwUF8Wn%n$O%xwDWDn9mGZqv%ObSZ1t>J_1YV7#;`MIN!{><+xD;^vAVl?9S<1wVDS7j+>mFfs-WikkC1lUHaA$)aV zTzn9y^B^%ArmSHB4bzQ~w|jyUXVh<_%5ovtoO}8=MH=oNR zIe0K6d)HEcN>=^Mw~*|Wp@jKxEnaXJ5aJKNIr>@I+U}$n_&IOy8v6tFI0;$U*f?`M z=D+=(=voVYl9+Q-7eHUdLP}zT*uh z7emckS=R}vt>%ZTFM;ZN`u=WB(VwNW#qDQ5fx&6C%LjuvJuJPDtPr&wFe+&Fk*FNU>FK%S#SSbn?{aa&gao*pTI?9f|#%7 zn=ad^Qa(PBxNnwJP~ukx!5oD$tY|Dab{DI^fyeuQZ%M!cFK$)_m&$xH^qU}|YeMiQQei$RbFBY^Zo$$T1&D*kuK zC_zsw+D`H6(eu7QOP>Ha^M7Z>5c=k5%a0)wD5W>`7+9+!sayp;BBhZNoD`9>tp`K* zF3)^_Pl6AyAqScViQ_4J;yC9#9V&s1nd9qm{QPkT!L^j$DX+urwZ@0W)-xkV6M+7p zLJYdb0xUIcnw*K@1n2FJaJ!>FQ<`QD8%Guz`JsE}N2+IHeBy$)Es-X<4LD38MWj+P z=nAzw7y}mHCo>l1fUp4wN}f^c4NE)}Bb};HDv2N= zo|L<$YnD%2zI_|2{_gUaJU&y@vuO=IlWu>!;#odVLdJ=hc`r0?K{DVy=GiHraH<1=MBauxY}?*){! z^VZBYsr}wk;h^ZSjgqozV?zUr`3DnRuIQap-{%kA-=_BA!Tt-k(^ie8n>vZGZ^ksI z#ARgRv#kstkdY0=A&BsT4kaM@r(Trh{??>m^2AWKdyQ}X_TkAZrxNwjHZ`aIAWLan z{>_?xWP14OApy0x+4PHJ|Lk{-YNhQPe>Jr0-6dR|-V?`ZjM`~G*bpp@zTao*>)%2> zeZ?`sW{N@&*=Ep~hbwV>C*cSdB9NI+CXuFQK-kXkVm~QTH=)PGT_IqsXUznqG>oAw+Tnn#d7!4F%)5ny?x@)**aeHsZ7yvN7HS-6QG z%z+nP(pD)vF`g~{CC7W;Q>OJ_LS)&r3#BY_a1$2-u5LS6uV8!fj6cL|U*-0?((XaqW1C(c9~jI}5hhJBCw%o6V0xw;{T!Pl!GUNcZSY z_w3yUir^&bRZT$($B8ikYKVeiGH5S{VHQFHp{Qphv^c#eXfBx|uCol5)0BCip&B2K zI=;|6gaJ=lmXZWYttQAH05c_Ez$6x=k&-o!BOz2^u-+38{ZLqHg0ElM$SBbZr(qw(t} zdkG1KzG*%f0!#X1(uBTX9gu?RXOM8qm~?4~DK5qc`p{llDJtm4zJ}`q7=%=DLl=tv zRhS?Xl5YQ0uY9`Wa>+5Pc0be6|F(ESveGZ0udQ4vxaFQ%8(1sy=_AeJG)grajLR>jtyDu9Gcq!+XNVm9CU<$) z*&qZxEN8Ht+H6$S$zWuO#7K{u1HDlVqayR1<@cxaAjsy-&{nw{?sU&afwth znwr)rzf6&NB0W+2=8OGg?$G?#Cu8}pDWARZFQ1MS>2RAUK3k+gUmh$R@9Qj78_jyG z9Td^c8I7=H?N>-xy}UUTuj_@@KHp-;Cmb2bpl@ijlzr>qW!mojE&Lvl16PAZs}>mP zLW|E{<>|@!wGZoL6~pYyT!9Wf5o>t(z55SO+)vLoyQ%c(=uc94Y-$+At-Q~_r-mUD zVh8^7L|ojfc9d|)GgSB%I~(mVCc{H5CNnC+s0q{~ z>!T!6n~on)R0>z%HNyaVq5>~JDviC~wTj774j0Z!SvKX)mJUN*GHP9i@Mw8I(c-ym zf62L8kO1$?)U6&Z!x6Aq2*?396AOG;n#JpG#%TiQ zWS@+5Dsk{ls8b5pi8R_z?_v-Ox(dX9e-=>*eJb4e?_{r|`TA)`xK_*z7NqlIL;TRZ zzv=DC?Cpa8&DN}K!#rps?$~a&@^?G_M&EQ{D|6>=^8fRG78q%;bqo(vY#T1J&-@sY zN3%V41_#j^Wty=r+^cH(xPKnWLHPxrTj`bk{L^ui%qwy6Ywh#mQRIC(9|#0E{JwPj zIp_Nyuq)1&SRt4x7B7WGxpixi+U)(E<5gD8~9@Z$c zRW>et>L<$h(E%_k8A_O_@fS=f%2Xgs34l@k41$c9n3zHjp9nx8eGSMW5eyb6WQ~u8 zGJrC0wI9m6iQ79HxxrkBzI7DBW#}1q!@B1>A{R0CEFyo&(lR`+xcvC-+v}B~w?;+G zw_r(3leq$Y9^SRJrB}xLo!Iv4X~n9hvbyr_lLTpy*C=?XaY(%y$Gy;R#isHru^J2X)QeRg2 z%}!m!0Mhe@mFwcbJLn;=sCv3SOAQaJ-RYmA?wepPO$m!Z^UJTL6DHa7Z@(2V7zL^UD$p4BYXgq)WAvpwBDunr%HiM{+b%p63zcrh3Ujz0%N}eQC2Evkr zJFS#1Bt*W}vv-2k?y}`fseOw z@0OR5$mF44i%QH9qedPGv)tCVE&^G~Z58(C8s1%#%>WG7)XR zvv_Pe&u{{?le++7I{ZnaGzm99F3)X9`O5={_3Qt_2s=eA1|RLd4a9_@O|cl!QY_K3 zLeb>7f%>o>JEsrLvQerOA#1$YSmB)nDxAc@>XpW^yix%IkG*>l1@E#j)6$#~)M?>* zPznZ-2WA5h{?~$DW>{>R43ue9(Ppn?Elv4GIHatln51MO6ai=!Sj-e>49%f#tO8gN z2PCsqKK$g`S1$`18s8}93CRpR`Y_$(ES8pG($AolM1j<4JLXwv-1ixq&e3mq_p#&i z7v|;C>xjy@urhr7;nW8=m+m=W>0Zmr`|;mf*q4ntd7EMsWdg%@@TFB%$4Fzv8!RS| zmuP7LNYiTE1IshKy5A-Y@?J0aD?iF^x{1tT3D6YK%gVak(UG{Frs=pn95Y;4UU)7l z_{HZOSH^AKLk$_p!Db8Chd}?~8YXK26jYJ(SwdZeFOA45DIdd4*0z`gfHay=5ux_# zN&p?Gm#_XZB7O~>pn z|8FfCj{ZeqNXkg^dyo;Wpy}cVwV26nkE zx!QD}1xBLVN z#DE51=RvB3s1frr{9Nw|_~UJa5M0S*5G4o!W~cNt)Tza=0e!JoWKSGAyzs^L#JXME zz*2wzokO|V)vxB_j#qR4Ip!>R?AMaswtD95hNp7VX>&Xn8}lCWc5_<~G`fE=U#BH@*X`=1uN>G)Sy2ZUaazkvlm3)1ICxK5I6|;GR(QFS?%&6$ zx*d8bd6gS$a(#2gN)pb27o9uXe%kQ)>S~4$O3W9J6zELt@G1M`Rsm(L1Of%FBa zK}Y|~J4gHo&GNsH?d{Tc*M)48Ge7+%-?qQKy(YRkSqXKx>U-MF(Yg|H+wvz*ku!NH zwd3l5NX&_siD@-v?>Tj}m!m3?X{*Eim>mU(8gf2m!_$~EnIP!n_@7%0rkflPfZzos zT3omS`Fv{Plkn&@SZ0xa z$yP$P$?H4q`OxHF#QEG@YRBJ2o%Wq%=}PJuuG!YJtf5*8JPniURd%jmq_}l`!)N>l z4sGXOm?Ct))B9i7=@&)~q{}ef9;F)p8A^S+!-#hg%X_2vNtZi`qIT{LTVjDI0a~m*ww48FY!rDSPZY?Eb)2!)dfQ-j`E{ zbXsct?6FuOTRrp3|GpBhG=1@KoCq{sp;0$`YQn1{9Hqu5kfe7zB41PGzy5opd)xf9 z>f14X1B|DX+kL-mF|X$;wcX!pr$LAffntYU}MeHb3^z<2>h%zwQ|qCcmKbuOH3FF8)%%2C{wuQhl)WjOqRD;K$- zjlc(X?BYewRW# zJ8sySnJXndT6*8?W;efJkoMNz?qHEEmvQY~h&+!MC(LA_Gp?iZn!n?y?FF4@BgR>R5SiHTO#x{aRe zH4K6pkC*B^?Yu%$U9vR0ntxYJ()fK3`)g|T7G^W%QfwP7*ZAfz6H7oQUY3l28^+Tg z%mD#j2T0TTabD+0SQlkmjhfG|YJV^%jF%++to>{UXt+9@$!=`EdkrQ{J7s4-!BB&1 z-=&7ce|d^6G1>#9?@>_7J}0 zAc35HPmpo}>Tng1__b7`@+myvfz-4CoDdpDrgyWaRoy4wy54-@B9p zSP2gzO$m|8B(0jJc69{<? z?VDc8kcHs3(vWh&bC+=TY%i}#4X{^z0$)Y9w&%EYuIqOth{p@J+sELof2eNTq@@NU zx=^2*tk%DO?S7qce&ss0?_h_E@OWdl{{7vvZA(Ea8K*Y~ow>NIFP~(UO)mR+Hxnf>%QZa7hZa~**+t7TXAMF- z_2oYn2z_KG+hz`Hyx@?G+sBAvJ zx#l&{7JKVH#%_|GW7lcuT!lK4lWX+7efa5pgH(nt1gC8s5K_ zQyO3TPHEqH4StXCnfUj$;+3eMX)B-J_C6J*q{tVw>ipon^O+L$oV1(|)S_;uwGGMX zc*Gaf@~9zUGurDG`e}qY%aM9$gC2P>%cKkg6Zf=lSxWuN5@-1QKeOvIzl&F^_}71` z9^&n%b+SFchrpy^buvkqb2T!nB0{FxB!)Kh97&^czme=jqsiP!x%>lNh&brL@B8lk zu3uVv0`)%F*Zo55S+K@Mhx!)D{UzpO;Y&Y#(aE4=A z)RPZ#4~*T025HmXI*A3>>ul`ZTG!`fWt3f8rZVI|xBN`mc2bhl8rEmstlT)3(5bTnWm>p)WU1Te1E=$Gi@0 zd!PDqeD-!9pMMXnI`7W%fA=?D&fjDBTZ8R4N&(ro?wg>kIg*r=6tq)+UcM>!kuZVl zsEB&n%e8am98_qPk*=+wCrs{eHe&F#VMHS0Z~ zZYQaVov%xF9PEI$^MeY(v3mOtKgjTUXHrtkyX*%yAPfq$$)op!nn)O& zsWPelkq(}z>1(LM!Ls1dq{;OK=vN=vNmNn!fqM21;k}zGd0TCj<1%I-aX77^!`t!h zn(A!v>^m67`CZCn$n}Z%hJ&&C zvH&xNd^`-Z^1BAuMM*_M{2Zk_!59(L+4IE}2`}7(L^R=;<-uS9@|=oLizqW3 z!V!J^IBwz}VQlx0{&g!2&+rUB8Lq6~Y*9Qe)c37=>Wf&K3iVQ%c=eNr{aC!4Cwk+- z*(mv`C5b)v(2&vAtZaoFXS(+s{ppx^lijdsIWzXZlbr!`>tf zHxX(!rHf0U5i~^)@Ps$noE;W!T%0*eB2H(r^?A~5NmUH4a|t{4M$Z%m#9IynpSB%N zSRMFUs<(8gRqJ+Xggttho)Yzd%dB@mv*gVj$4fRL;qTJDZw;fkqiiE&SW9eIWZ9zI zjl%Ih=EulK$=0gn;G1wXy~ZHDCjfR+7Qmn^Sa?!_0Y2!ekbs_)q_tpFuD-$CoS&(K zbbz!%lymm|B+b+cz48A6nL%d0)tWgxRopi@6$+73&RIi?TGDpPQg?6Js|oIWX6uC~ zFMt25&f9e0;FJ4C2?ZEl+1JyP%CzTl|GjaO5n$W){>iz>L@PS;fgh1Ej7H0$s;uMjIsnOGhFQ6U8GL z889v^0U;YEO^9)sm$@m1<3>E|jWJ*N!skBt!E3s@x-ywesZ<1ry9w25t*x!)y6dj} z*vCFPH8tV5PSEgw_`@IU-+!P|E~irIM#EQ1)oS%93Uj&K>eZ{aY}wLiH2V7c?!Nmj zr7VFkJv}ovK1PN*J3HU~?ssOhSt62B*6WRqj*j2|{*FV34)^!>8LfwhhY|_zHLtmN z)yh@ZT=RiNi-zj;y5}ay%oFi1ZvA;zS68)KZ8BgHloH?l-c0~7I5^PO+VYkw-fY_r z0NirRPlOOs%8t(bU3cA?$)wub+iSJTm%eoEyWjoJAPBmh36R!Wl$J0qGG@>Py+w|QbNAhUdh=V} zHa9mH=S#6k7$b;%To5P#m;?hGLdy+HW98i&J01ll zAEM?SK=GgP6x6^`o05WkBU&8QAP|f#j+_jltStes5=42+oi<_8V8CI7pb;ZO zS_=}Ojnoal*3&n$`Xs4COW4Rv!T_L-G&4zIVN8i&Mj;3R8JL+7rIfW=ZS|7D*Sz9o zL8A^J;$%1?Dsc=$_XSAWJ$~b$MWVAE}7?f=vC?&$wzD%YkM`>*iY1JnMTTH38_C#u- zJaPysMoFiC@sj$iN~cqYCJ!h9)v|rkN$b)HIeD1I$BGkMOD;LmakZ~Q)*NUHRjE3W zZcW*V5L_#$nsP1RMij|NwMoAo1r;q@L%*bgz>sUgC=4K^pv|YYz#k3j)8Ux&Lctvi z;(ajzK}d`_3=%;wN=5`^0F0Lk2~J4a(AMUIV=q}c_|Wdrsxg9_Rcnc8*lZmgpPDaA ziOQB1h(;J>lX&Km;UC`j=uEkq^X$WO#h={w~vkTjJXsDu7OIqT(4GE5A{E`eLFA;X2k%;Fd#A#GXS`j zjj=BXK!yY&Dg`JBz_O$el=TvTSSVE_$0U73@BH=q_w8q96hZ(ZqJelf9EkVcm&6FDQ6K;r<5<{{k&DhdM>z4HOrMkMx?ZcKZ0@zVfvlYh0P$7WhL@XjB#j^m8e;OQJLlTcFU_gda zHJA-`7#Lt8W)#fLEe@E-NGapM8HEI+9qEmYP2K;{BY*$334ja;jcf}}u@H`xV77&9 z=%721@>wSV#}N{?bfpAiGD`G&wyR{>=3$itHmbMir0=s(!UNUtY9A8-t=QgcL#$>6ifz5b_ZSA%v7n%uGTGfx6NN zhXW0oB4bd1L|`Cb(UkgeVc*!6gy)7cEeUXviELXoU9EV5nVby{bo8&Vl>Pkndo2Ne z!|_@i$nsE+#xh?1TCPYB4g&^JR(%k;hElZq~9{^Nv z@l zAXor0ONmml1W5=;(f}bDft*nG^P^*@F77{dQQzIqZ3hGfwn4^bWv1pA8@?@+XFJGb z7#`YjU}b;b%Kq-DZF|4~Frcs=-+OTHMB#1gPd#y62y^hi(LmN zUVX+|rEvS`SVIRwC`6JVB#<^i089o#t+S5h2t)=1qkvso0b;0qKtKQ`gk^~^FmaBF zi7hDu(rXs=&lU@FrFqY>5h4JLE0+v_Ab?3S87U;7(If;iG&d_hZp0=N0E{t2gmG4h z8Je8IIEqEfvYDY?t67%iICi7a2!gPsHD?R~fRs{eolK@YFHx;lT3cI%5JCt5NG4PD zdZV?qHQr$*m&=w)rFy-dOePT#5zFPWF(#MG&CJYh+rDdIp}ctUl7}CD;*^uumCFlZ z7lH(rnLuF+^5y&WM$6h$#R(z2`| z2%Abnh$xD}FpN*ZX4apD5c0_WbpI$EgUPJd>TT`q$fUzi0FpK&S+EFC#jZZ!Eg@1Yf|Gjnkz6YOp`=zf+cxeK*RRRD?rOH_+ zpT^8WCQzh4`;lwjd(9`l#pZRdJcl$pj`hbsJ<#3N@$kb>E?c(r&OhFB$^6XXp}{}h z``7C~`w=!%j%DrMF>%XJe>r^pGU2+3MAA{JhRDD|2tqh<)k@N#k|Or$1jX+n5CF`` zF%w8KvcQ13za_iv!9Qng@9^aKdFxKUX#M)J$;oYd_Y|V~`j@Yd0C(&@@ciLJeT!FS z9j{mqEz2WT#Dqj3;(;rWnSftRF*AP5@i8J=mW2S0QVG{dI2Ilu1OXx<7(>h|_MwPK z3PEIL)7kA)lW8f^Zi0a$qNGI6b*eh(RbC?qGM+DH_=7EKrpm3#ulbmzsA|YW zpd;;C$|T*kdc7t>N@hT76ao>56fgq-$3M*RB#Ea}Jk4Tv-gO;;D5L~H=BBjyZ$#T; zM!nYX?13n9cI+vSO>IH#)r*BnQ0W~MscfP+T`5eJ&?*R(q-x*j!8c^<+A^DQRJ$i9%JlSsQXOpv*=Q93 z5(!`(n6hR{N@&zGqYFeqefiQ>&jUXwQCMp%j7DK2W9Mf^%cda&$VPEaNH(GLmQ<6i zS-;}UO_h>XC&ZI>vFlAN~QAo_Eaim zjB(xO+d|^2NGS`2LL!l<*J=k39vmJXs@43lvBTrz6H+2G6pO`$g$3KT>-G9kGx_&@ z6G9MCI-Q=Lo{kfl@g2bt%lG#pI(pss;OLzmZ7+m4+P$M~=*9UZFTgQ8u(_Gpa=C0< zwju3@jYwYulu(fHgDhc$kUspmpt>V zvn(YS77Cl6eLAfB3eokv(n3jVy>jKsFbFIuP+)V%Y$4)tD+HhbL=b`ySxDIk!?{v< z?}3q5tbe)d*jHToy31bkI?qc#vT@^=Z~E4K8=mYN?pc58=^dHm=;Smz83RHhOCf}a zw~>!yClpf1=EOK2#KYz2K+(oDCl>+$0-%u69N`YcV>$COQQS@gy8Wm7*T-}+qhO>T`7qp~dcA-=@rOAcrzKI3P z)KY?XO;+~IH1^Gh5Z0>^OxL3MMi@rA)03@iC^U|;GZyF5*wgBDWRpWFC#+STz3)k9 z!&CX~d!D=ViJ3+%nM^3r#&&{)Gc{H%&o_iJmS>!d)7IZPusp3C8@R17D>KPf1O;H% zs%rn?iF|j?$veBN2UU&}X=Mo{A!{6p1bay<)#Zc(e)41ohb)_}g;1Tr!!gR;$%&)pgze{{Cb##moQY+}!l^bS{_kJTG3H9d{LuxC^mD5QsfJ zJ>%o!zVFK;G>*9QN82Fc-yi(_oyMQU|BV~O2XTYA@jnVO?%DqaC#+nnb=2O{Dx~nW zjtrp?LZTp1H)iFk6=$qEaq7^>6Hjm2wQcJ{rJQixtKa*cHLFetq9B*aUViBXhet;5 ze{kc@ojU`+F*w-&u6MlERyaRbZ1@X<1HJittF)Z;XP^G)<4>$S@r2ErpMA|Gmt<4P zL@Eg=x;s0@#>O)(t^f3nH`hxG3*}O^UI*ZOTl=D+q2l~(CYx((X?GGHG4I>Eclq)Y zEz2TfV$T-fZ&Hg3{=kU92=O1N8CRar|A$}SKHT4zYR&H0x${@Q|NZoQA(u*T-?QV1 zjT<9FmZ-Pb*2>{Uplg+SJ(8}F2uuQj5i#b`10cXNkNn~2<&Fs-`@mI42Sl8Uw=HYW z*yLon>N<`J|M0F#UWIaht=yoNYz>w!963JAkY&VrgFJVxi zv}|ShVU)B**(V{$2R4ii9TH+dnw2AiC>UB4b@WOT0SbU-305?F4^7b>xr?}g5F#?B zE1NuFurD+k;yfP+03xFQI^MTTpZcm-c$suM+ciEuF*CK$+R?!dxz6D1#J*B>B$@Q0 zz(*+(>E2AXJBliio=fHwI7t~6+j!ddX|SWKS}Poy*ch-iS4|reR(zVNRO?k<(7F-n zfYFv*4`A<1eb3>_|mlwwLa9}UnrNth94R;(3zhuEELM+ z`Es$pt#wInZ(qK%J(W5zF;Og6YmNHsLh;1m;emWde@EwFXV>#1`*t6iNLW@!E|W?m zIpbk7lbLsWYwcBC zRoy+^Ju{dc%gg`+a7GdY*n~;Z!4Nl44wDYb3dyoUUKoxrC6NmMktzRhNDSE&gA^UI z!lD@@L!=>&M1mk`0-6D)G5gm0Ui+)J-Yu7N{Nq*^o1p)656+Jp`R>bi<7M7F=R0|} zw6@i1Ei5cF;B@}m-?r9Xym&E+%*UU3y4UNKW!*#-ZES22y9bB;m9-!K@{hLDR7a-UZq4=kEMYvEw6e@Omu8*6`8R&z-UoW` z0bqV%?!WlSp9BEr5WHJiJMoWx?xz9N&-@Sn{bZb1wQB;w$wYtWZ~v|7WD;2Z$`Agh z)_FyA{rb(>vy>?yJN~v&^1j3*I0D%EOkw}wFFMStRnO^p^_%P6aneMHOFT0HEpF7AU1YarIb>tF=00GW(WjIlu{uu-K`TO z9)duT=goT+5I`zJSXEKURg1L7*afa7bWCi0m{ZBjRUNG@2M4YlC2U1BwNg~jXCOI{&*))7meQRO;p}oP* z)|K}i`Ltu^Pd%0xQIYZaC^r6Lp-%~u(dZC-7+d) zSzWNfl$BIodGM~bmBj#*AtJEzs04qXH?cH00<<7Zw&y{1P zL_3kqvrC;!zyIMSXTxx`(@m3GJ6o+ZIosLTe|t2zeHd0cG3oJans$w!%?{pteR4R) z6wAY$f*1qCThr+_xYF+Z-n8Iy^SSCfC+>boA1QJufe=ot^7DyAdEI@u(e{xG3(OY0h-rFsVkI-r zX0!2l9LMqI#^(0UZkDEsC~c*O!^0#_S5{W$=H_OzS!36&>$=@;*L6LaOgf!Tvxx+N zD2kkO^YimXQ5+l`F!TKUe6uH}yROZq=kWlWYeUWb=BwuZG0-0W@ViC#0h!iG62o*d z>9*RcQAq%8a0ZO`F4o4C_0apgsEk&V>1;Ha_PU*3yJbvBA`?Pre80yJY(%Gs9IG2j zX=a|Ao2#9l&I%SGLSiB!;4m7GMOXq)Cllv91MDB{pE>mqbI=I0>7&`kt zl*Y&hAVk8#D1aaUfKBxc6cQ9b7Nw<@Z0+nLzy2?N@q7Q1?|bp3m(IWQE)glE0cu71 zo!7tK>CgS(-~ONe)&Kf)JHPVJfB1)g?Ab?8ZtotvGh~cY@D_m(k38_lW4vEd>gY7{ zD2kXFL_ma)h)9tVkVXw8BJV9C5Ge$LyW$BAh^t+mD*#1ewDyjBNmK%-ta9R2rDswv zNj&ASn5fE2s#S{0vQHyJ3@TE_aMzIaej({BMm)BDHEZ>=c+ZB7x%oWNrP50$Pwx%( z)47EhXf!zJE}xk0Z1=LXt}0bnB20(^NXmeQoN&;9)<;A~$$EE}0TBg}#;~moH7fxD ziJ&RcK%|H?k%FcUG2E34avw|gJLs*~Uv77n7nav1?t>?udi>h8^RIpN&1YWNTv$J4 zUA=wh-G#OF;rJScT^#@BT6S8ckLI%-NGhE!rpdzY@SQ(?FH$V*$zhU=>F3M z$8{~Ww-o7)c5#~Q=e{UCQ}oEZ`s|Wf--v2giqNzuhDDL7aZ$0_& z+UGv@(64;umHCDF=)-GIo_h!tDvJ7xSv|9R`=eGGtv}Q$b?!p4cYB+?$P*7mNdBU^=YkE|Vzuf|C~3NA%Gs)~#6U!;Ug4F|<2>cwoOochC^k+;s~6}Bav zgTrf8z2yiHHI>%sOs;*S_|A#DA5zc&q97tEr4%V7qm&_5NGO7h_-pu4L`2AFw!xU> z?c001(^3l=ae_!p%uJ{Ppoj-XMa03SQ8q5!*WP;Tq2=YJR(n#{tvGHfgR=;c7LdRk zn@Cu!wIWQ2q@o}q-eyT6%uxuzxrwbKqa&jmri)D~h_!dtJA)D_5)n#bVR6<9p+*A; zK=McDzqK{kCsOSwVuXk^04PL-C?J5Kb?id`5{kp_lIMAvrco5_?d@4>&z(D$B=O$fu7HqIsFXrHckW!0B+b@{h>|2h#Hy+m z78VW<51l(IHIrpomS%Nb0YDtbS(Y6h9%`+dDg@0RYlH^>Id5q5WIl>d{!?|~xEp>n zf&Ay`KID#$Oq!Z3)&2SYbZ4)wDg_K8+Nd;%eO)sd-9RHV1Cr878j8vxOr@13X`+-u zfO|o|87C2nfCxAjtgT5=6h~2{S+Vyb(8LT7Db38n3<4FRXFl`LLkbWDeF$0`$BfKM zz(kP?41`TEdk74|jV(w3Ap}MgL}-k%0SM6`Sh1bevoC!9FaL$lf8P19w7AU7Rb`X3 zg(%a5gW1+4x$)Xh|Mj2PzjOUyd+Wxf58k`6d-D13i(O=@|p9Vf<5YdqObYw;teRu>n>7~*WMH@`4&u6=S71$=4axy4Wx zoF%4!ahRo1yg!=;z}h)YQB@aOQ35C+B>^4He4{NQB4~XS)&$Tn8Ug|d0-#1xM2Zxm zYBY01LIe?Dd2ml#Yi`L<;>!YcT$cMwtMdyR8%dT%b{r!=b@rJLF8tB*#v;0QJ=i(* z=yn9rh3mDAL9buYQ>+K=8}uH{mBXu?!HK* zdCdw@BN8b^Xb?4_MxvuS&j@(5rUk$tL5#HzF(hSG8{*g~7E~mFAS}Q^DU7sY7EO`! zP9dYf^}V4sm}&(A!CI}!m{65&(>q`t1F92aO-fOq6ifz0Y=nXJLU*Ah=3*z zEW&}AIT#KBMNlAkLmF5>DNJGjAwZ)|aQ2#`;(pnFP!|8N7KflnJtQyo& zN;NubyWMW~rsMH=JRUduLTl~v^76*U#&kNJ&1RFyWH1=C+wESjx4XNml-k|hOOiB7 zs_AU%L+G_TTIss3l~Pd@0YDtbBErnx`^Ck@$z;+%U{Mr@hl9r12>?W7j2RAxX__`- ztr^|DVA)6vx$DQpyF2WAug9G~ia`GJbRUp8KQ~{@4(qzsh{PPMD}oQ80EhyqjPj}w zkffC$B7zvL>beF1l!yQTm5G$nN*doUHjy3NjE9+>XYYMkR+V*18+}v<2LPcg%e=BK zu(g(1BBg~;E7NLa-utqshzJ1#Gm~QWS`di52op#Z(#UuOTYC}5!i0z*KnS9R1Caw( zT4~R8V&kkk_p!slXk}^bQ=fR|2Y0{ptvB8nO~zi3iO#Gp_c_1x;qB`;uAYDE&1in( z*)RR)X>Y-o1vQ4kkFL>3U}glxAVf%b6pX8sCQ>2{5E>Jg(h(vG2r5F5CYryNu-@v- zce4E*L18bDk;=VGwa$a@L|A#z2p)V($EAc0QWct`jeQX5B}ouRq}l{EsK|#%n;OBO zw#Hag6vaM?BuPLkGq+q6h0-=jve~Vh?f#sdZZBn>-RZEcBkM|ykh4vZYEmkIG75=M z5hx8Jjpj>40NAj)h!81g^h81g03sl0@-RgRL4pKoyq_N-Ecsx2-xyL67S*XoKK8|1 zd;j4t{m@UXESx&_ma#MyLv&^-Nc7uu?TRvpTvmgy&Udq2dHYDH$Dqq6C&lSKf?){oc?2DJj7_gKt^7ryn5 z$_E^UrEX;H>8bUnUX(6I>t_kzW^W54x zj^nDTZr{EQfJu_1X{xmb5a*oMxS!d2>{-EB5EGn1Q6Z0absa& zq4`Qgnx9lv)#-Ga-yRRGc|wC4_l~jos%bR+kKwcV;dhJfgDa9W%V*=m$s|44LqKa? zlEigoBVD^VsVZ>VBce`BD@l#fRaJW*k|YJCykJ>Ybp>$}$8iKA3`a#Un5C?2QI^aM zfFZCCGM-I}var^2U?M^Q$Dy{aEX%sCy>-@mW=YfZ)TvXwZa;)jRF%=%GYbfFAO;Np zq(|G=_U_#1uAP`$Tyjc#6SEf(1rk&U01!}vQB*ot4V@pa%*`+K=6ANX+ez!kfAFt< z@iQ;HfBDh}cecL%$~XSxo3Fm|+H1Q9hjXi^AOFHnJpReg3WTaGNfWb>fDj!kdJjf| z2n?QmgCzh*=fDvnAu=ElsUz>EzPmm^7zh-AXs4t_^NaI*>8cRufYy16fCYuI4%k;} z0&W@2EZ9zyCFfllrzl=WS}6sBMrbig%HR{NR%3Heh1FKP80)>FTsyHj)@Z$7c=+M1 zt?k9tHJi^S+uOaRg~_!`-F7-14N_DA7_~t_bl#Y_^p1&YohU>>Lc~V5z`N@05ePQh zj=NlO1dYws9T5Q)A|N&uu#}4KnYR0*+5R}`q^(|ie|Se-d22i#$L*>Nhqw0b>|Oiz zt$uHD<@wU?Tzvi7iPM|1c51N0RNshu-D-bvd;4H(_lEU;eQl$crqiO{+u2@TiCbA% z&En0)`M2M@=uDUTOYIhi8m2Wmkkt6MZ~5y}tiUQW(xpYft@qy>=7;+uj^8|gLalex zUSEwaAM9e(_oHcVBf~*;aL4Odmw7@If(<0LD$AWqGwpLqb*gVbZT!JTe zFbDx@tq}pxH|9+Y0Rm`492^1~g#g@~3K$z>eGour?dHnL=JLv{tl~HZ07EJ;ps*%V zN;M~M000m`5RF=hgFvFAqa~`2yhw(Sgg_B%ixe$&Aiipa&5LoKEblx|NM5MGfD8j*$V z4uI&95J5pXu{&4iS{eoQ{Ni*r@LmwGyR6F>Vi|Ksoe?(cl!xxe^d z{=J_u-335ZPe*}C5qb7Vhyu*g7?~fKj7dZA!d{q}5dno65dn`}rHTj81dGxpDua)VLZHBsYGu9a7{ei0vE4XQ zkvj0@LuuC6yygAr%#`BA>b2$WXfjMUHmN^1IvC8apD3pV1z(&FRGK4@)atNX^rg_!J8pgd#ziAK=5n%(JfQXF)8U;A;g9oQ*Mb26> zY)EZgf8}s{wz~Yp;rMnjJzRVI^W@!Zc<0g^udF}u_`;)~57wpTs!8eUg~GVY{iWq% zJe^xid{Lw6BrUzQdn<`En5cAhZLrJJ>3+KG&-Al>+xe60o&gDiMiIizPRz7h*uppy z$9{TnqbiGWX)o^k{)zS{H@lZ^-@Z{5OOD6fogV3^-CiKBG*&yKgM3JG_VH(K>?4sm#@~@}1>m`^J!U&@I-$kv5i`M<1^+M!KWAwfjiE%tR{$JYoiB>l}!H z(Ih}h3m+Z4tN+K?nuK1E4|3(j*r~ts*d_2aU<|ZPBz~1}D604MoV-%6b_{q%17;B3-j(_`izA~LopL_0Et+fwa z*KT34v!8Vd&Jy?5~J#DW#M) zahw3sWHJK|-A*SuN7XE6-AgptY{68WCedq*U#E?SgfoDk~otI4DId zz#=ZVAl|vUs%mRp2tg~Y6|z7SH5nzcwRPw6<;xF0`sl|$@kti~Npn7l078V2t*kx! z(ihqbYX`Npmp**>^r?vSVNqk&RVr4b5ZUeSlhg;h!==sjr86g2;0z1aF0|X7tdrHX z3r_y--~I2VdHv*P{_@=N$;16Uz(%qQiXfpdG+YNP01y72lrlubHZ)I>CWy3w69EDA zh#EjOfkps`NQC|FoYCp-=ASBEpJo*FLoNe z`!;AG^6WjZLI{LTf&}asQ%k5(cf`+J5@|Mu%gX9b5}ZY6fdHL{U?YIwocNGv99DA01xjj-oWC;I~3_HAOQjb9qlU`U9#cl1|W~|viTP2$c+mCfWX26f=Gl%2h=&#^u_{6SuEcCl`}zSHEiXe6N@A=t`M~t=m_-{l&SC-kdkfb0;rdxDw6f)1C3n zYrE9y^cPO&(}ScR#*?9NSF3dUV34)C5cOdG;koef zrP=kdt8*~{1_vXbyKdSFuDZEB(%#=0?Y?36iw{GQSNin5eyn5m4Y*1V8_wEe3>Du^k;6lCnM4P%Ywo_NR z!H3o2!lOGoS8E={EyLCa3MNkLU~5275O9N6O=w-n(zMrZS!eUQE{md*rVC4RhXXk{95L#( zl@&lJt7>;|x7Y10_4-9s?hf_?3x^QLaVw6?sw|6~yzg{+lj)?_?{(62dvC`W(@L{e zE4z8)#`3~)r`@@|yA_;0v9Z}m_B-2KM0o1N`tIItRaZ#Rq+KckL}j9gnSF2s?7b&p z5e5+iCV{}L5e0yKEv{w`1Q?SNX66vwgS+G#YJj0Zhb`Ik?fI<>xjB8pV-pq@<*XyNOwy>~x>C&Y% zP0zpft(RYZ`TPIM_phHg(d~AB?&tpDi!Z+T=*K>G_RJX~_3iWDe(w3_nko|_r)>hwt|AV3|R##Vp4~@8J#??&1@%6aTjJ;_z_rEK2ACOsA)%^0BPO|AN_cdfu zs*DOGDvpy@r`2keMSgqhrU=coyGp4l*f>s17PmQ6WhET6qDpJ6wK2LVYCzUVh!n>O z2dOGs)^%Og1cHiK&|B|(jffx!2qIh-WnI=@yoi7hA~YLzM0)-8^F>kor7wIjpXR~4 zCU6efmu3FMbD!S)_@}F)eDx2%`tEzb`ZP$*pCteO|Nhmd zU;K|B`Q)d42wAJ8h-S0dXf%qWn8EfI`_DY{Y{9OoW{N}*IUpi~Afgfy7LlfU?MEm~ z!=YjpV9`p0hzkJ-L>K@GFo>M)CI^MDMF5D95im-!$Yj%Ue7YAc$I*USojLcg0;t%d zXJsPmok1XvIn;AH8FJmxs%9UNBoIpHI&o^*brfYv6NqIo$^@ zpJv3q%B$4Grye<@VtM21zq!14qBEaXlYBNBCrN+%)A*zliL;Nt{l>dfH#o5xpKL>c{Wx?J@#hwbsvgH;P&7wo@0|v{L&(eD4j$k#P;^N-!Za2$>9Wi-pi=u3|v*286%y>ME;waH(Jezge?Zs}_ zxqyJ3cKeC5XG`l2_IHKb*ceZPR{$6SaLC%pV02*1T#0Cc`EJJtuTX4Nl(Xq{Ix&P8 zg0Mvn3P}+Xdso-OK8P0<0^p{+Ga@21ilFzNgGKSWv6hfx4BiFRR3v*)5|LxHX!z*3 z(Lf^+g>V$5&itnwM?}3|&nOBk!{KOtaqi01tN+_S`=zgb^=s?vC%*W_|LB!hUP;qT zMEd>yjT<++-S#{0zSryZKKr>BzWBv2^t!#Os)BdF^w0nI#l?lPtX_NVTQ_drxpwV( z)@q&HT>tSO|Iv><`iS>_etuy(o!-8)^{sEc_On0x4_|uer97W#6TS7;JDZy)cXs!g z@s(H4f9((dU#<1S4?i47W-uIn=}X@mf*TA58ylMCGEAS3dQ0aHX|Xq_Y0}T&Lehk%Pftba)^r-a{wu zltq<7L|Hm3XYE9fCo`j!F&dGwEJY$8*n1n85tX(7F*=L?UJHM1pd`~kibgx{xVxm?t+~3~biKB?UXO`h`*zI+V(aem(pZ%T} zKHQpm>p&4OV3VTKKpMi`{n4LV8Xth13y2WMu`oO50g*^4r4S_`E+^&(&Md#Woxip> zNt!A^MBUCjQWzK0Pjt=cZv6F~V$@$Sn!x!ujvNaCEUIXVzJrP>7{*A@6U54h51l9$ z>-tfI61=x*oDkujv**&Jjeg(bxo&z`)v-~_bMw>vgYL#!et2N(Vrg!Ea^-5z7&{t5 zk!xqYtr3Et5TF+c0$wB#aNv0LL_U{c>6D^o4d1)Cn`^_&a1R5hyJ<)b#vYrgMFNKh z=Y+JCe(bqNGG+F6hU=$$5~SPS94ze2Mte8julh@!&;7+0_x3Lt>|A;O-PQTcezN%1 zJC}#MH_x11o0fF|2_rpnrEB4OE9Q{pMWO093?_Tq#bmG_ylpM5z+}JG>a;thiu-L9 z0UZwWI^`~#21V ztWea`*^e$R4;e55=n+i<83#H+=&@@HGH1dpOFt zU=jch!X5ycY^>&WYehszq_By}0|X)tK_O~w0<%JhA|ot(RB5mz2{Dl^3d&LgARMwJ zZl}q?U|*w%vsx(vFbb<;dU|ssHpW>ynv6F$Po8VFuin0C6lw$lF#-xip%4n87$WiB zXbeFh_*s!BX{;n*V1*bfZ2XiOSddW!MQmLvB&8s@qx#Y;42UQKhyu`L!NpoRI`YI5 z1p*dgaNh;P>@h1f^V!IshKZVMvv(Jfrf>lOXswk}KJaifD$45BZ+`3NfBt{De*I=+ zBi-5AdHCUn<2bo<=S~Q$wO(3U1(2$$f8iJY*{}YK|KlJ0gTMFEi!V+llPt?dqp{X% zVPWwPzV^pymLg(RRe7G5W!3NZr_W!Ydbh+_i+3kwU^u3Z}p2K`>| zu2=xMXS;bUK$?%u*pDaYyG8c_nJfW4@9*wZ_KCF9rKy`=-sto@hl9QG;ebF0*)bTC zojSGF?IkMGz}QNn(crMGeb#PeSsF)CUKFHEUHh^sl|n+A<+FZ&PHA0?Mp>F#@25o( zoDG$=HZVYQ=s@sNl%;o;5f~&0Tj#tF)>><=)}&4J+WGUhZrzGB?H>$4GZQG9q0MEUUs^tOAuG%%BfSU>zl*dHwnOVNVO>>bd_ch1q=!` zYVg(v50Op~5UCK~Hac*qL+EOi5ab~!!Zoe73ft907){Eu)oK-o1Bl{;&{o^pTG2$~ z3E4`@LQ9yrP+LE>4w#Sw1|Xqeoj1Ul zvLNG8M$dy#qP3o4ZbEymfBW+A^x0FBgW=+Ge`Trt$!FW+z3Df8|K&%{KK|IbM`DQH zc<-&b_DVNC@ue?4^2noW7cTDXY!9~&_Lmo1u>sFj;cju+@Ni!EiUDnKNITRQ0o#gn3RlYDH8 zeyg*x7GJq|!&Y&u7djaY?gTf>ZjEpII`*oX9=K4GiWrex8MKaq)U_U6z4a&Y0wf}C zTwrC~tSE1iigX(H@LuJm9;zwR0J1wdkAzJ>7SG>Ir-EdmHi0OV)~fY=;qD@u_f5)cv$qLEOM0uVq5)&fA0=lx!%D5lPq z>>VK!2(m>H_LU}GOeVw(!7~K*$iZopG}7lzKSW3$Ub)=rbQZdO6ba4-S3`)zSws_D z4Uy4Eim;U?RXNp!1R~-!C8~iwVM0OhAy|SVtFm{NLTC~kjaGM;H6Q>W5UC*Gg%K!L zswQ*{$V@(nNE5a2XJ+mG>4-b-vdJ++0YJk_h)ATES!*4~aTAHt@AvDvzH#%$+wZ*l zjc>g2d%ySlQ53)Q()WzV;|muqjK^bUo=&HA?En}64i5I8dFB~J`0NYcGa3#5=YRC` z=gyvOx7$ar81U4oQ(75ktwbK`e&d0WL1?!)NZ$< zI4a7*`zAW_&&yp^K*`b*v15v(bH*;0)*rMBI~X5MQM$OD2f1Z|KK1=Bgek>J})Y3 zy|>oaby3uw1A`C}3LrqEY)X)Z-$HQSyAVQMR?N9JX7|pH^)*O191hQ&T2G?bI)5-4 ze*VQ5Zd|+e>;L8}ODijt!=PHt5O3l2&_gFm_KrKHq8IneN7M-A%H4!2zWqk17$zm5C zYMY#4H$?5IrHwX8D^bbB&N`uZYCh^muv76)QLps-k393_AKtiO00=N386+o?8C^R! z7pG%z^Exirri>GDeH|NuI`|k>0Q4*oA%oaJC0k)*4EZ3oEE0vzR^5JowzmgLrCF9A z3|oZx;jl$|zpjjT6Y-u@@Qw*tkq0nZPfnlY%0XROK?Fd;I7u3RWW(@HqnU)pBntot zpp{mL%;BgLFaQ!ZjQW7Idug<^wpbRkU_52KduK1fG?Fx%&u)Eqm@KO2zyDOeH@mj~ zey6|k)T2+|*n2;Uqqcrz|CYXeb9njchoofp_TH&S&L!!1e&K|;+2(3AIZ#PryS=Q+ zb=F3gyO_tz@ls6j&i19OZEIUW0kK!(?OQD^~_-MyHo>;0c7F9 z&VW{z;<@blm7T3iLf}CL14L!CEz0GS$c{YGQ+STB*p;_O038bp^_u zc%psi^L&ycgy0yQVhF}$gS}fWI02Ql~CNFxWl>MGsc(S8Tk>}S$nQIuPHBTf++4d9gGAil*DR=pkRH2Ao3?{{bd#` zN1z(~yY?_{tC1mxYf~HQ_BC_nS}?31!DQcKFYmUlPS=Kq4C5g0T}Def)K2RYYv5r= zShqom3SUwgz1n9!aT@H}-+rsM78==zyEM^&9$za*;T>Vx!0-!|o`Rmz8?1^dM*?P4 zn*@g!HLwS;3nFqP1B0#jlv39Rii-p(cjPN9C3&X`lR~qGuFTwo#_hWVpu3Y3i2I9s zKc2Le&n@dY^<1v@J_}k+7t~e*Hk^46ZayLOmkMuYkhu=bw#C!S>-8_@izvf_tp}Ok zQ)5-r-b^pq$1*@veENz1ZGaN!-5hU<+YINYpk%13d0yCP4YBL{;_50;;w5$&Nt>S=jsXi>>5$w|Uj{WTGaXLA67fuDDAv9udA znFk5!G3aDM^*Z^aM#sim)5f>V4 z(BGSrqquLB*k_RF?2z+{yL6ypy_n*2J2Mg_sZ4+$8_U!<;Rix(f$qsmM0^Lq!W26?f8lcR zkU1b+R6u*UuSWYlLW^%Ahu7O zO#P=-`mbVB*$oMTg1A8)PIUVI9i+HffeGW!iC|~ye|-P89JsX&_44fZ#4_!ycr`Wg z{u73>*Er;*DoB*mo}J~_J1jWl3Tk;41bUVT0am7i3!E9Ds)()Dgn4%}QogIm5)z9~ zCGPeU+3Pl1X!$j5yv)+gDt^ZJI-rX))hH1XVI5H7O`1wahp5wrr z!Obm{7$r6s62gOeSCPm2=fgfTkY*G`RBXh-tWb%w;rcDwhl&u2iTw^KB0PzJn~?m| zC+6K|Ir}uV@dXWJGAV&t+(AFRObbFA`AvJC{9{L_k2b!S!`I9T_3K?6B&WA449=pv zj%^xvAHjZlZOx@wivO({mZwjZr7l}Tw3jr92$N!$k(U{fkwcP#B~d7_i;CDn0rEZ2 ze+>ee&`LU(V&S=&XexWk6ZEK?U?9Ip&rsZ?Lbu%sQHzLU~ zA_rPpu6g0!TVr&EO)xk=5Z?IGb*rKCK?;Fl{ZhE_F`4}SdwGFx)!MYD7v?AZ_Pe9r zm!mx+!B_I0^J~L;zm3fy^5=_0eITNT*?S|y>VNYVI{)<4)dI`179vA1R#iXiy1coZ z5h*OI1*VR!r;FZPrE-w-#dam|vKO<^*dPEl^(7gA8t+y2E*4In|S^mLDDK`j^*#E#ZLC+gr1`Ns@L z0-b-J_gIt61-u<@7W`%*2kzgZT8S3FLJkZ5v#|Sl zMURR~l1k`88WM`MuX5GsXf2if{_7F;%ojD0aVbn6xJAicZt|HNFD0dMo9H z&v#o^WdFII=rVEe@Kw{RjoXc9$yFDra6+1ktRVm~kvmc|k8e+*lyHo134P9UyI$+s z5;sv;Mx{;ThhV{tp3CP^GidB^$KYlj=5%}*>sy1Qyya9><~Z!CSwLAbH$kxc`aud= z*6TMr7e5^sBnooYk`QVg!N&T%Hi(T7@xBT074&+u>1G|#HX`rI-(JcEY;ON|YSK2> z3@y|vZn6}~>priYzzo=&ANhQ3t!m`dG8svZmnhtgC2{tw_4&`fgZqyAk9I!#Pey*v zn}%(EH)C!db>sq5tyyuHOs%O0)^*6gP}~Il@ZWxFiVzU_;(paJGHu+jbt2eP1&)lY zdH?}1>M}ov*Uf|DUV)Z7w8y!lOSX|&?%4^l;?_W~r-#kx>;4-Ia5yAQk~XH*X$nSe z=zjr?EWZvRGT~N*&eSRcmqI$*y>;)iYURL9sri?+%lfifDZPwkS6o62oX#$H*9NaC zOaH<3|RAE7GtbCX(}@zR8x_56RI#XdxS8`xG!qa|jj%Jrx#@95YFkX_cIX zTupoeu3^ueVfk8R49fRTm*<96c@#0G^hAu7?}i!CQQnJkU(ZhL+Y_lORUypYPIiUX z?^oJQi$mm+(GZrXWlKL$p|K&LBE7r znJ0MA2{^gFk2wf&3BQ@tRaB-z=bYktQ%(Fr5GwZ$eHd|hY1lY4SvBLM0;7gncU2}3 zwG}WqyWi?z>|C>hi8I!7`*mN}KAr}wci!f8&b*xXk5Xd4QSYwOW&_D{O)oPd@!^(! z@I%BCout{YTxu^yC1Z^1qV#jTbK3XKZof5@kB$N=SkK4PPxAAT$l7160v`Yl`r7JQ zyPM5{?sfXwnt|O({~M&wSKou44c4#oO$aP?Vxk`LZn}4R{Cc0?toy$Fj4*l{GJ2RV z|LnFio^BSInCEw&ZuGde{$sj#PdG8$geKg$jIXZS_w*+~DE7QL&i+cL{M=6-cm*7W zX=-q{8KC{hZ3e$E=p{4oK;)C5&&k!n+`vY|;!yxlj^ul;z`E|W-YuD$`N^OlFHb1o z0oKF}@H>V0`CpiNFREdFL0+mdEc_MsyKBV>`Nlu8w5HPiMsB zOPZvU)qgn?Xw%U7yJB${lf+zka6i1Q?y52s8>MmX!0812$mK^6BbOmypO>bd7sgQx z4~c=b3EDUwy(eG9wlgT$+Ycye`8chRt9N!eo0URHBY#uJxNZWv$jkk6-`&LWE5rquMWH(t|DMq@Ga72s4F z=aAKvK$aP6$%Bxvh}er_r!QJZV#YSk=lo_IIf68Gp0H&!4yU|$1W^=qH8#!@79?D7 zDF~0AMl%5Y2JVqA88Zq-qza}On;hL%RaX^z2O7a;qzpGU{(x-0Eh?~=hAWQBfXL2~ zDtfj31EbbWk{NMSMM_s!OXg`n&93;OX58L?;u zV*CnopZ2b5AP z<-*S$J&oCA9cdqkTm*H{|y z|I%yU00)Py8{i&F#M2{PcOwF2p zy#v#nX|t2B)@D%suVt#gV)Ry-w;Pn3@X+zLQWrWkS2L=>kcEYe@WB>)IGBNj-3N?d zUh9>C`W3sm<t=`4%^=eEp#1geK! z)BQ32OV3(?|B=KQ*_Bs3gNiliUteDz`lLH&l8zjbY4A~3T^a${h+r^7{H=A=IETly zzl*tWvLr6O8B|4=;n#t+TBO$z7yH4_#WfM$OPRH)DS8YcH;Qn#A42lCL(!Bg_CIpUUt}yZ;Ht?c zt++A-tIEy<`w6ywR}aBW8RgV7othM<3LD9dQuBYQ_pCE$JvK45HFXFub9@j@IMAo+ zED5x-QB|Z96qG;*NYPuhwG&}1I1sqU?*6HDN$Sl=u8ChOpN0q%)Znb12OC%>HFo!C z2omHAyG>-{+}0)f&h%c*PhM?L;PcS31NbRdVj5Rtld=qYl#;;3H0Jl@M|igjM^?Cv zVLfF?h6l{`?|TGqBg#+y%gWe(6x0)(fLr(&=JI!mkb8uyPG_jZJcK(=k1*S-)MwY) z-(Dmzy$$JYeOm5-jkR?>6HASLYa2=An)q}z_6@gF(WZO-(2(EdMy$0{!Dyw7KQ)di zqsQICn;!0E_s8fge!Q!Qu_8lHKw70k09yqUbJZ-aNeyvh5WquKaW%e z3VDX?>QyW@G*B9l5=9PyQiy}VDX5~z!H0Np;ZYS;kw~KDDil;^8V2LR0MUF>-GV-5 zHVr!pB^*(DD;O$iDN1WT#+z(lq{tsxJIj#GvromQ5UN&bgfY9>s{a&G-uCDLP{a!>85K(N=Rb)snJGeA@nr(qD zbae15zl?91HZR+^=?(sjiHN=b^&j=2?UIODFj?H_eB>E znM)-}+yzgho7u_=6N#?bewjAR9mK_4x2$C^pSP@$GEnJl4{VGQnbn%H*lX_k(1J$Y zRJY0cbew9X5HAuSB&wRbecQ`~b`q7*Ivi*WO+s(pu~-yIP=mE_qYC={IJynJOiVmq zU!GxUVh{=-M1mAxXHPKHR@iaUNEP4)+C0rk(McxT(lHSNIuow2L1I4x)zBP zKf_xNX}26G;<8lFktVSxwq@+i;A}8r{o|g-yz4_^sxaQtloh>+g>2lBhGEA+kaMA% zjYMHi;nlRUep(9az<1!u9i-l?FN?5xD)0ZN%;PIKyteQK&O3LS^!!KnwII7Oy6rQ% zROOGGzJxqU21ta8XgE0fBa=l`sTVyB8&;!ch{rob1?W~lPNb8JpkltT!5H>19^gWccYe{-6~G zI9K=R4z+cs$Jdms)+_Rci>~PHbm>ggR?dV2{QBAKrhDC-4=y+qm7VpoJr5ZL^+Imi4&E$dUGMvpfLD0!SFZ1850(z4f2D zt*Nh#lV+g0d3^TloSIDc%IsLN{l)3lwkqth8J>37k977rg&A~*2E2mc`u%jjv5H26 zxlSuU)BW+o{pIOix;t>yp$#5zyH>80FFwdTkp;vvfDu8dJh#kd=Tk!QsNZYfo7=?r zM4)0YvFmPAVY(w0pA|4<7zsH44OTk@YG1FmCH-DQo?*-9H(7L4#qyLD@ATr+LXxo< zdj?pk_ZO24k<58?S&nLogR$I;($!(QGc=(1%Q&*|^)+~$U3~OS``q}5JPija`mJJo zBi@mno!;8ZUDn~XpFl#l$EXScM_C$K4Lj5eLqD5HOZVu#Iw2c2%CawOvMLDe(?pz{ zfEEWoz+TOtj}qUfpBFR4h+|MS$=I`U>h0F7W;r|6HcQbps47}UefN9{ov65s0ZaYyLiq-j=E@P2WVkW-_!(mQEn z?Y`TzTYPDIB=_DE#{9gg4fZxOP{l19-BIkKqeLtgrL20T1fg$i5J>U=mlcLL&Z&{B zv}ve@jyhBT)qJpjbA$BnsnxGZf)TVc_ekdZ?;z-IH9m8CD1N22%|lc11A2`Eg|`z2 zhL!1meD3d~s}HO>P>;m%;2*`yVP6=p?~2-#k&Ys4zO)|d8cfAdiyJX`kEBU5mu4mX zfK);!c_6RfQ!#3tWL@^OIb5&iDR3+VZuY(KQd3>$Gv!g0<3+KHBpAeke?UJX*1qNW zA-aogZ2gwXcQ3O0J7|8T%*Q6D@z!um6j|{&7>nS5wlx?zUAXCWfA>lWe-Bj0e_9 zus?Zeo&qNHc&Ju=_ z;~%rS37)){2X9P%3Dqr#-w!*w{!Se|Hm$jrC14l3t;XKjDxS*O3k?;d1!aXdBzwQ2_Ue-)xW!6s(T|Ma7DxKv4(iZD0*9IbY1 zF1Om|Zw#*DtA+@;oB(F&&ovjdAdAPF{z5$}I#dioo&AQPax<)Ai}LPu}d zYsC!vd)SdF@?1H?ReVQ!7PxqK{DT{~Pd=h@5Q4NRia@v(1UeLQX|N7@X#=^YY$~Gu0zg{$vw!+ig{{YNL+2UUl>_dI_{kT>tX+h3 zGmRCR#`w!Nz+pk}=nGC3)ZVP5F%@HMSs}9?^+P&LoI!V*$gC6>E}*50yPw6O)pQHj zRZd6_SxT{jRHV(OET?9QM}{crn{+YcH8S_~**I5(bI(tgcM2S|IWAldi_~lPbTcM;={|%!`*l$S}W|sDd!x8jV0A` zmqjRw;Iy;}4I~><{0~m1iyRXAJ51D_BRl5joJ%Xa+RW~c)JGa~pohJ3p%ajq$bEK# z-Ut5&UjQc&FiW0G^TbIymrf6xQE`E17L3`a%B5|)Xd(Q#u5_#zk}Zv*yGfWVJ%3nS zAt$n*;lw)$JZz`RI%#Fn8opLDXaU?-m zL!7%R_lOZfFN2$-QKdwY#VEunTbno24VrVmChxV-$ZduT`5fh)M~TbQjAY1*eq(g? z$4OXjEJBzjAu`(kuzX5k$D^lM8#!cp^v}B+@AxxZjQ_L)xp|{iHCHd2;iSk2`vcR2 z;Bfqq+|)nMjDZlnP`kZkq57JeQlczUBfFnh^FKubH!kD79nZ&SA6)wz+#iLJ24s_L zzg5v5dlu|^p%0o!P;ZR1s9|CIfVnSM`2Eg({$Xnb)SN^%qn(gwcGmy7D0?Q(uO8m` z-YgT@L3DhBANpoWS2xZ=fc9-nayfnqbO?>}F{kC+e*HU-(*$8OYjD`JhaV z!^RG7s@VK9$_#=0%Hc>TUKpAnzmH!pAa!CP5p;eXz(hk8)#v?GjZ}>hl@6f!sZy}B zQK2+`7jU$Hed@w_0GsevM$o+#V8?Rs@ol=!Kw9VE>0KvefO8bXVA`AGw2QvbXl>scUbJjp<0fphg)w4J6K-wEEBNi>bK}htRG~h;Mfc3- z>NgO^wD9usasl*FCarLYOajS$*=;xA!kW+!hIPvfaw(RVm3~76k#Vl^CcS($6Vt(VZel zrHQ_Mx!6&V6k=!po~8znwdtV{aR5cj1BbVGC2}$rB3tUMA#&5RNv1zT z8o`cD3Em0N16NZQmJ~0_hK1vIRNFGl=G`=$woR}ks0?FZ0F$ycFvK&(d%(i1jL}HA z4-u)z%ZAgpQ9z`eO^k{_au4PkRuL`=)gTBz(H!t&Emd;=+m%js$*d6~1vbKidJIye zqYgM{IdZ2^pdUuKV7n*dLmOeff){FxwPB@jBIy14(?U7I^2$%W69sIw7CKti0>781 z*cos0jf=5^d(5ZN-nJcLr`(@$A22DXP!alwr0NmHvFHy_N(T>}XcS_Z-=0>#4UwyV zpF~wF&Xmvco;IZQ_<~C?@Zzdu{edOu`9L{%Pj+;Qxf8lT5(y?f6VxVFkPh}4L>tO>`q1Kz-emtiv`TX?9ls*`d;KPDlJ;{1oZ*#{Z>?@~oZ)=w@ z+4P!Qg^5x|{`7tRT4VM=Y^H#`%<0t0E9zs22ETlaIobLQzou3I6$_pSE~Zq@gnv=~_d zRg}Tv+dDaAa7_`N=vk$3yQ{5f&*b<2Q? z%Npa+H~h!M`Nq#FJw*ehsb!jw8jA)pM>dKgw#^q8HiVYRQ(wmwX1sNAn0bXyc9(HW zW#mLYLlzCKns==(HKx7kaRnnZh?fa})WyLwuXNoEwYs9YkGBg{iGSlrFlE%rS8eA9 z6b4d2f4~wF6Ul{uRWOj(K=5`mGXv%b@ThLB=l-wn_xFUL8hiOJ$6Qp(S*}{5t3en2 z41ipsYX?eG^AyOBgumRZKTWOQ0h2{PAZT2$IQguutc;fcweP^ctOOd`CGk-%vUOba zR{OF&$K~e#l!z)@2`3>3T&ZDgN+{&++UT`43<(neUR&w}0_jbqa<{|z%AK8sOZ-n{ z!hzx0ST{EaZdNv6fn$EFq(@I{+DLE6UB>|^cUS8I`0Ed)Ts7gh@o}B`1H1hTr z$l!3A1Z|s~lwpHMM#XP?kh6_ED5_+M-zsL-CsA@(cZ3Xth-z0Oqb|?kw^ifvjwJp9 zo#v1RTYgW+*5EspLB?Bt=Y-(p<&-Wl+{wu_KUztf{NM5jR6r1)&Bv5Jwz#=-ij3eR zr?)AgwOy^6z?3{D65DmJ*SNV?! zQY0U#-Z|4WtPz{{J_o(}**RJgI=3L!y~YG<1ShJ7LfX9&5Ok0kXy&ZbyyO+sct=TX zBb~@{y)Es^?R4b&k!iNOF@=y*UjJ<+roXk-?Cg*;Ut+i9tMI+aW8zqAh`YOJi5r zu*=i-_4pu?e9X!3D~*s$MfeSz)45rd^Eiwx32}HeWGs@bQ`j$XPL=_OQaGgskpaxf zSh>$M?<|RES#^ctPg?V+@dM|?Q>H8smku+YMR%x7I# zio?ZpT}*j%pS0W(&laaPqWPAL+nklv@Yi=kg2L*9168`@AJaa*)`22^i|d3}JaGby zMDhQXmJ%LNebdGE{aOUKd}6e2nKCA=VbGzG=N`cwUE zsgUR9(rim+w~EVGH1m>uVz}?jdf@JDEQg@m@u+i&;0nRJ&!3+5|NXw#_2W{N$@S!r zb$535aIjl{VgI`}tS&U#B+wrm3>Lz{uH$?2*Dhf0jI? zj2PdUrXl`~mV^;<6D4COd_kcI@ljR;fvW;Rh{fcT?0m*E+p>JYxttv5|GA}PJN50s zeI&P8kJ6*)!?g_zPOg0;G09J_eb*dkQfHcKnl5vucCESMwjiL~salw%BCJCl=z0e83U%!=4NAL8=#nc~1M zMR;*i@(}rG!aiA4jxyyQ=+Bg|7R%V>qlNI5l}6@L<{E|HO42Ra+Iv$s3NB_oBZED+ zJsr}g&xJi#EBRh)*YRi1WgO}|)&!Ee)ewSTAu1f4J3vbO24`e~$|4O~o*(Gt63~2H z#(|6y55uAWiKa{DT1iPOX;>f@hpMHi30z>Wx4(Dat@E`NU9?ysoh~3!o_Ci0?`wM) z9bQl1#@~rTzpBpPxdKhEgD>UFw=)<%h>);gHny=lteNp)?Zl*XzF|@EzmL`z_GzqG+?+tw z4}>6zkT5x1MN}&je!Y+RI%Oq7t{kHxgBp-?(sPuIIg}NLCpd?MIgvxIPt>aSUCyS4 zOi3v&dFdbQ6^=|Pj@UC^Mt)Rp8K=(+6 zDnAi%o=C2S61Tm%YnM-cg~+ql_wePO=9dAIR1F9#1S=mj0t!}gPFESghSUwYb4k=1%`7_>P$a*}Os&8-#Fcn-oQ;je>PoTOYTb|#2Q@6Q`M`*#LT)!#)5DtB zi^>H{i^PLb3^;QAqx2;8U9BCRKe9WorXOddxz9*BDX1w+j6rp+_Mjq=f5N2fU(&{N zQSa1rp$}?-ADzV`$oz#}ak9V=rjU*i9H0rcB{S#uS$T^W7HV*|6XacaTo-vuAxT(pz` z%7hP(EBs^20|jxJ4q=Q zNI))y#&tVgQZxfRM*MX*9K6)=r`$)=Tt{bD60U0%PuWWGwz^Ni%FQg^>TF5y0yui3 zgOd?d>67RoqKGEj!t5y+KNuA7)Sb9IikcVFH|R;B76fnQNE8^NWo1Z- ze9j1c2j)`<3UhS2T>G_og}JxvEgi%qhXomM*;N+w2!#>YDBzN8&Ay!r@*vPVV_I6) zx9TxC)D+0HrpD0kwzH#O`1zt$FhjFph^3v8)(yCc7DJ<{s@G)&Iqe^Yj+LJP)Z-EF z?9k5G!E%Idhi2NarJPDGO3LJ8*+R^Qt&_WDO>2flBOaOym+PrDi|ckK>MXslj&342 zH&)M#Bsb^i6Nw@D?%Bg%!B?QUc9#70+{s|I`?BYe?C$jJXA>mVttlg_b`fA(VjLOz z9@!TSZUj8`VWE;DxqOu!A_!iJ>MWUML#7c`p-4&&@$bfpRT+{Sq)5*D6_efJYOS8~ z_xM+I@#LE&Iq3?kHFnkB(v8%Foo`3WZ>sL zz_)kNs>hLxrt{0G2%F1}|4ee{PLhDLH!X`6=SXa|!ko-mUCX!DNv}5Ph{$CWzrUkB zwbLS$3*$AC_>1MoP_070Rl)VWyS7YeAE8RCy@efvLIVa_hQbbddG)RM88#3_T3_6k zMV;*IQV?bu6_aQk%_k6;x_N|ARSJZLFGc`My>@getn=~$ntmV7sbw%1#q)Ov!40>d z4tI!etIJllc3$|>cpPW=fKsieb7C>#6;Xai-2w|m?9I*H zt#`BOdT^m3a2A4!97Aw+FjV4wQKVliSR3|DRq{sBBO2r`SGp72&b> zByUyZznM@#AyIHWvpBbe>{LF&o5xr!JRl90y$lqFw!splsX=`1`$=gW=mW*{utnZk zuKc{bn&6D=68e>;rMrJl&r0>YB;-y2Pp-T$5JuqjudmNi2!;t_kOpXkp28sto{whL{pqy3k9-(U?+1a#(>b&4;Z70#_PgQJ{B&8 zWJ%SEbT`jmCyb=ZN=k!rYT8VqzDUgGIyqD`kIx~Z;*uBP;NWeSi9MT~4uC{5v3z+8P$T*{H$lq=+IFh_PLo*k-QyT{P=L{%6oA;gvo1svPbG;?LYISM%VP-)ECYS9q8Bfs2+}iWS5Rb5Oauf< zhW@s=wmcTIkm$jbXu`)~_zK3l-$e9S=elcS=DOd-Wa7&&!0Ef4Dsmb0a@g7P`l$5B zPte|dawCE&D(zCPWJ*<-cep6me*Ua|rxg4}W`GR?x(WP@s)=(sr_McV*(Y0DX7S=g zf2n!9zO58(GWLY~(K0kPVOFJUMhEjs6AR;qcpudBCKPJ(c{9bhs?P-;dOP?rtoExC zR9`D-9Zl69ylu%yq#$c4$E692WfkV1%W;~_|8l9`xdi3nbom>jB(O#adKW@PyJh3x z#$+ow;41pJM0-p->=L3vtw!X};qH*Cck%I6CNd>V}Sf@(4(zpVvBJ>$mbOxa(Q{Omj3w!M=rf)U9vPl(|gh{@E?{aw`%e zLFD>pM}0wO5YKm3!mMbBHX8?93NDAS6Ns?{Ga2Yn4JOQD?tp|7rx!j=Zk5EJe2pZg za}vJ3h!_IcE_YW?ciGKt`GJ=xQ1t^eV2q@uqUaQg34_|L20fh5)H-3@aNChT&#y1! zw4A&+H{sP7cK`SK?}tig{y)i3!m$!jv?7Gae6gU_Z9&0DB}MN!vn^E+1+}`Ygk(X4 ztT?pH#-pXn+a=IopKZUT6s)X*v=ahx}-}K$i8^vx3S(nVL3U5FfAu_l! ziNZJ9e)h+wopAq$D;q?vVf4rWKtj-zYaY&8SkQo~H!sI+Eou4LqkT_%7(EO4pK&}V zFOOM4kefRqYHzyx0j>8RIVS0Y^4#3l4q)(hSB{hC!Sgcr+~qt zMK>M+$iw7cy5RaA1uy&HALdl1%imBbm^DRGRt1^2yLca`@4`ZD3RtS4Z!V zB2A66*o|kR$+DVzvZ;wam15Gs(RH9e6$BR8OCsSEw8|DjHWxh`!;84g$R@}V!a8w4 z9+}j@b1lFO+%132lz7||d`2inglzL6Zz*INq5V)w`Icsy_PzxpA}w7nI0}j@uC7ED z%=nX;t!}ZY*c>4;kz~=td*`PV?kK!O^j#4nWB^^?=Pf9!K9Xb|dCj|XQc^N_p9G8w z83n&ph)@f5hM}A}^1Iqwy1E89v|#LbQq53R36 z#N5f3$&L5ADK(B~lDdl}^p(6d)KdhDDLWgd?j;>Tu7`)P1ed>GY#el)B;6Ec^J%5z zHPOhT{6FevA6QiFDt{rz&g#9GJv?tnF6R$n zoaHA{%=53vb4vV>nKRAvvmwE7iiN~Jkp=huW9=3j^2p)2BohX>PKw*CDeQ4q!3qg_ zHN1Fq?k(tIQKt3yp6U&=96R!oo#Zq+Mm8aV9O#3-LUHX=#>VEX@Yfb?rPhQIoMzzI z=yCtt-L*t0DAd{7;_fmM|E+at`cQ6bbmK9a*oK`$KAQ@yI9xPw$mEh>=WU%4{EMQM z@54OIu8@}|PqWTh$q_Pwl(_zU=SDu&ZeXWsV$j1+#N`3}$$EPJUFxqdXkV1-foSMM zZr$Y|DLU-LAX8(P0A)E-V_FLGDhgtY!pFIp&(}X&R-HO`TJ@AYS-PBGbW32zx3P3& zL5=|qmm9Z#=o&>ezXaCfp)s6Xaw_NHS3z;@dMj2&9T!(h%X`S~`mdHI|-?R-(=Ka91SB*ch_+{7NEob^w;{!TbV$K>DIC=G{MSelRMV|Vg0 zGlJ^gP#VrWRGJ$P$xuM*&#?NDKm5l<6rW0`tfZ{0IQ8YN7#jgPBk6oE_amS#yaGW@i)b{dtf4C1pF-=xLKqcAsw(=`GL`WYm=k7z~ECLqiP-}CJ7>lm)6VG z16=6MDq*}zAnwCd0#m&%NMdV^KBB{hB1xAlJE`0 z*>D>XBD+z`fM(?BCs$iA*qBr`{?k;sj6UXfUos9wQg8?)xv%*)N>mgcCTbCX4#)D| ztF2CIvi%@oDEC1ona&Vc?HIlOy6xT*KGXm2KWyv#9jS~x$r|u78FA3{f?F6osUl6D zT*wS5jD)8*&sjLRNNGbhY8+ zq$tHYy|r)eVjX5M(wZwAd8Sy&AOm`rZ5P$nu!B;Y<{h(uVFj2)vQKOZR?M37Bl|0ZVP-M4tiRT zNZsn{nawL;X>p(Clv`hSaYGu>@V;0Q@BR&B{9or4F27~KQ&4|~9@p3oD|QPo^1?D= zYn&pX;vxo^d#U@{)n(~^Q1sD~G;vhMFFQB1Ajyz)v(tF2RCuq^fvY+*rUZ`X15D9` zgU}*ZI!C(pqupFn6gZna&%S^-%lY`?uOQt2sPOFgG@RIt?(Nz9xH@hGf56Q=jxx_X z8v$;(lDjG0NPcs?FZMSv;*}w5jo5F+#!KbP*^Qb6rD1h&!hP9?F9N2fqN?dcDTp(m zV0176VWs;g|3{_3gPwEO>=6u-cZ)}kdLJ(Psb%PUw;!ePuD7Nhn23SBJIl~v-{p+K z>3e-I>*ju4=M4qe#V>q01?9;HJN)t3So}S!1gHAmx4yEW7RHj6lJ7tiecj-oKNG_Uh@#S>=Em=+)Bb38 z`FmKDaC0xWUGXY+>!&3|nKCFy&p5v!UIzv{cNJ|eQ z;Z%d{51}0eJuJCZlb)8|lhXa`>2!R4a;yL3F&DpfQEA1KaNK*9fP^^`|BznYxvV`K z6~W7&jC~!@5_X0ZAj@WQqT+c^-Loj6fn--r+qo?yAgXMCtG>-E{b5_ZPbUCO#d&hA zWn4_$BWGy})Ac)RYx6q1egI~0fSLteuzepX!LS2htpP)p9`4Z0>r+rv@xE8!9<|7Q zs>o*%-mfMNY1mjh*P8DZ6cPIPc|U)io*YRawc}oerzWLj?e5`c`Ix%qMPWhR07xwx zx@r{F1f=n&0W@9BmW_nDzLug7SbnN05ICP7wg3)x`WQe`83KgT8|_?tA2&A~f&>y_ z?2+h3O=PjflQGtrcUVB1yfkQ+`0EvSDKM%G6HtD{(mreELUaFR&y{SmbS4WOpfCk} zuqJ&M%1<6Yt`;Fz(?WZsQAE(rMXO|+kkvJF>CZ(pXo6D@2@pS@K(!D#c4) z4&e*BIC5=zgv4#QkGE1A zC3{*0lMDI5y;oyK{Fgnq-A9i>Q7n_o&jInH1ahq7v?VS5;5cU`(7=l|&!j*^|sG&TkJcf1!Ltr0eSpVVSVG^3Q&f7SmZCdEKBnbVZilJJs zmzL<^7O%sKliC9%mvBlBQ&J&NA|N23s`2dI{KA-r%?7IK)#ckaJh)}v=r(UOnnjX5 zm&gDu(FA^!_dYt?Z)e;{65ds3UIwbMOto(qFD?}uZFXe(x^UjKxA`9E`+Yy~d3kC1 zf#EV#l^trj*r{6G%xg?TqUFaaLXXU zN*n(HgWW_v3y&R<84K4r9l2Urv0j03!oy6Q%p4wXBKmYG?8+H6U3vbnk^zue{Q5YI zPcy9CPZ2|5%EDgv>3enge6t;o`7(OVjcS9;pU)#Ew(`6L8qt5E9r-PKrYhvFwy{jz zqsv1UJ*)N#;XSXpr#cw9JIEC*>7B8gZl87?l!BL2Pq!6qPbv;TdfO6AZ^1Fh$dey1-xmC~UIdUm0%(4cZI=wv51#XT+2eb1y6j{cZ#3?FHGK@C~`CjcOzTSyE z-4{MaaC)uJ0UIOkfsK8npns7)JGta9OCz82Xi%t>Dv3Zu*Z*3!-H!JxmvhJKgCcBVgxi@#89#-a7glqApLK?^MigQ@%2;@mY{zo~O<_^4O1RG(T*`#TNaJDy~T0lgm)7`F}K>27I>fszuVyK{7RPP${{v)_y7PuO1EpZmVf^EwVl z@)a^Kfr`jv5>F1D;Qo*z4T%MGnVaKdKS@qGWO*=wQmAe6`F>D>OupN)FtNr?23*Ek z!epwWLn_1I(D9+7-weJ@ys%Ksg%_v$xLF{RN9+U@bfKO$v~Xn#GD0@AF5Ar|xF3#KVrn z&raA_@Ju7akiMyxISyVlR}^=dLYzD&@q726tE;+r5%nz34c9UPOvPie3vVnoYac~% z5s@8C1*>&)eXg3cH1a<@^WJ%wGTk}OB(!e@w=sh@Bk8zh+wvqIOC|$7v=j~$-w(9# zH{4N(JoNQfR!A`CD31?)%Zz~fZ4~swCvHt&c3#h!6P&8JJRLmmN9LyRC045zcMpg3 zifKi+Cg3^i)@X~O*#Iq)OFh(ltCW1izXX(qL-sh9kNpm-&W&wv`D9UU7=&zS`Hl5AS=IvX# zV!mL3V+ARH&egb`(}yrt?1Hn}edh@mgMGQW;gQ+=;zfHQ%3Vn2lCqh1k`R~3Ml^D3 zOGAK94b`l$uP+NSw~p(v6Nu2d_B3JQ=5t!7sgonFeOUtqf;9CvR#1R43pr7pE$C>2 zl%5`AzF;`K*D^;314b;$&TD{3R7htLB;nY)53T2y^OcR1S|15m0UBd>RSx?cqR)Q% zjw;DL_%ih)bWVNKqNBL~W!-uVTK*@5K1K_qHZ;%ozlJNb$XTnfm2LPRRTg1;=J_vy z8uFSG@uzV%;A@S4HHa)AJikK>N!vaH=bE zzjY+%nDizhLywWTiu?&|Sv>5_KuJXG}pW4OH5Q zNFpo%DFHYCGYPHm(P`7pEfZ|beIF`cbV{MZBeX3TaM4ffzu^mOU7xb$S6lOOv2$ip zd|Ns9^wa~o-MbDf#c+cv z!=*)X)$(BEr!Ho&wz2z(mS#kSRPlFPxOG}zcXi`p3 z_s%fmbTHNP5M5(_$9GTl6{R+Sm7;ruVLZ52KP)S2W^T)Kuw<=AxE0^g$bwS` zz3QfpGs0Ze&|jQ*HzS=XaDt!P#lFUN!A&uVDs;;ba7jC1rqN_BH>eQIZ!7TMW5-$W z<5_j1A>yQSn5B~~)t)oEO$X4G$ZRoHwm@F7Vz( zBvA4U2!1toA`L^t>5N!~>$cYqq0i4^qz~0O60MD`-NnV^U3Nu47fuM<26u@c)(nAN zC5jW&MImR>Le%wPzyE`d4zWO0j<}y+U8fCdYm>(tziyJGy7(Gp5hES~iQTBhI|?B> z|9mc+T;xS)x#~44KATQYjMCA!WdCETXPMY-iKj|+?}FL%aqoabozR}2i%@SV>$u&q zx4%5zONc^OMFLKV*RReSuNU|ca1@ydQ^D%8XgMwp7UlV?LlSvitC1#WF#kM5+DN{S zw+=u@mkv8z`hk73Tj*%M>NN3B+aybw%byiCodUL9@Ik{-uC5H9#gX#oX6IyHYiU`H zmfaj4@sqUve{2=wzAKq<(}G!uB~w|sR@_z8ZvoocrRCqg^!kUCIoU_C403a;tv4@A zYvqv*elOE|zsScDl&j&z4pj9^E0)>5dEX`|1ZHUqu&gTQFG7Kt3}PE)&UQM47?Ik# zha;TcgIk-i&s%?>MDj*-;(hEJa%Rm zYD&8q&-A!kDmQ|wwYc0+j3p1-i8BBC&)Ol!~kZlkPIGYHer|x!aDH@CBB}mY`Pk4XoxH>#KdT6EIA3cdG5c6 zY0aZmc-n6wlcP9Pi+CArrG(+N5%zoIS(z&1z{IrX8;cy>;`@%p^-l}8BTGy2kZKQ% zUMa5EMdArsu7sU1%WwRlapO~LHv66!Wg0$OSw5}t(`WTY40s;84FX{mX_o9&-+5Pf zr0(?9PSk!eDYor+Hve1n60DOIC@%!6a69UKe@R$=+q^;}IeGOt;_7Sm^&(FidbF-T(>h0p_dG`9y z*om0xJUy-EdamlE%Mr>Mq{j{J6f%lVWZRcki??c8 zq#g_jTQr&B9F1!+m6cKBRzlQRKoFRB>=kt^5J7#^(e#>T*a2}KhkqX#e?kpP zH!e`h`|^hw_KBQtCU-0LRpH{GU9crr&sNhH<+aQF{QS`T0>vPJKeUZRIjD6QBJaeYR!Ei_bx}s{pGk$ zIRaiA~dL`&)A$thyh? z(mMw13lY53w0qF`KoSlSoEXqg`_fKi_q-Zo(|J@RK@#>-`Z`yQZ`mF8En?k6i%`cB zND<`3dTEY!uD#jGt!Vl(wn0G{Ak;dUlbujZLLMWjPn3g2B*2@zT=Mw;U4SkpP&wHf zGz&iJf@^94rYU2(XrcaKjSq%m2KN2<>s%`w%;A2?It=@T7BQoN&rdplz%LD_g8Mtq z8oUEmbG$oCo18+stAph6%7CuMzxLB<^x6N7FIACz+@mfsb%UlKs-`@4e*XyM!q^pm68uq@=^!zKPMb!K;Y?n)6Xi`5B9Z~vf zu2IpiC3?f9+)@Q9dd|H-Z1@vOPU0OQ<`?zH<+SmZ$-tn*Jd_faQ82%yis7C?*&Cdq zTd(AC!VcKwNK}Y9%rHK!LeAapyN$zszutlgH>C}ob03AFAr#&BBa(XxM=pt(;*vT7x+h4H7`k(eWup%drnZ{zfKx4SX0Lt~8bWz#a{^0mm@R&Z!UbjIQD7}PLn z5TLX|#FqZcwR+(8aB0V~gXhEZ)|zL&fwA#7{_OH{P^B&?Ffb4SaX;VM^AV#=7z}YO zUbxRco*l}8wwD--w~JbGvh_b#2MI`KBH$x4_H?!Kb-KIFTFjX$C57}haq~J^{c%1d z^Togqg=I>}*JA1@NZbQSm~qoVQ2SAmkPmNov*=?h*lV%jH==yy1f?-2ir)$EY}Xq~!n1sQ z>>zLy*LvFKUoxd(IJXVdu(8_?IyuEhl4N?na5Q}vQ}}fV6t{Tyq?PSsVePD_57J%G z6~aIFQ96lZx)(_1k^((vUHP{J2jNWx&1|MlnX+x;;^=%>F&b(j)Ka&}hz#lz%0OrS zQH>`LMM`%1^eFi+5(%4~WNBJP7i%mA?vY`*&U%oGn7%(xM%*fday+%FFC0$A5`X7R zBO9D5+!6gDym`Qxs9k07I7{`s^(1rF@jA=uxlCZME^p-!H+>V1x*f?gNKD*UV6ZRk zkXuwXT>ve1ij15DB)SejIu2IEepj)$uG#Bjp#OD&0y?o1x1z9PXSMh4?bN$`Gksx0@ZXnh8wHzA zPP@Oo40PG#^hgEe1M^I^(JFG5!`e_?$0+Vs90S_71Sa?qW*hx~GLkVPNdPD=fDq?O zK8&hVVb^`A#bEsHLoXZ-r&qkayIYu_SKA0E2V#&rub#b`ra$ozsjI7l3jNPyXaO*9 z5ot%@Nv*A|5%(0cb|>dATU}0qWeW%en^yIpjt-I}VhB5v8rj2{LsU+^%^O|@L7WN_ z7w;r)hhO&=egXquUPf^bvCmKy zD7h2LB?bTp0^(3hh~aPg$bYF={z@C2PO4605M=_NJt`fw4be@wLP;yj+UiGai?lVV ze+^eN8+3ey3>d#Gacen~N!CD7<~@?rA7tXzScH z@a13A2jb^njd6d%C}$|s>ViWIsm4&SGp5XS`N*yzS3g!)k~tPZq3fs3AlLYidZ~|*BGW2P*^K!- zF=NNpw@%-)sAGa~qcBNYUm)HooSrRo4A#~D0f}cV;B14v%y4ds+eurqok z+WvQwvW|MZTpu?Oz}@>EU%es4jRIfE<5Y;_zc}iD3H;T@-r}mBJBA9GqN6^~xxaS# zF@qFUO}%X!_MU$Ib@=x!{@9h6UBdn1vNDfKXTZ6;8;MrPDIF6?K|n+2h6ng79UWxy z-)*^GHFW4V|7SYpZ(ll}b_1&h+t$C48hgENJZ`EosBO6Jzl6!SYEP=PzFf`-tR=jN zY}^3xmumW(^%nT8gy8dXj;_3!*`WM3_$f$_1FyQ{+U0E9Wv3)G@a!K-<9cJsLc;2! zswtI(*nQE9rGm9K48r^oXYuH)-PFTOAkWtYhhSL999Kw&c9+|}c6eQ!i$)NZBcw23 z3yV}vr4@Y~(UoBHpHQDJ11=}fbLBD1sHt)nvDi~2rc|^zfo=IRwf-7ibC|Ut&#wj? zo-d7}s3M{lYYGt%%YZ}2<4bAYL#EWH%!7-FR13Ob|w(-xD@Hq<9`#9oH84*6EL9>&%{X}0SY17G;yxoOM{E|+rJJV&E2a^J-B%I}p)>cf}iaz|a2!t<93^>o+g^g4nFw-Fk3 z1On|C5esyiJ%Iz8AvK!md-dsG>{;FcXq_i4$h=le(xo)s!2yxn_Up{6NLlh>dOqWvHyrw2mP7-0B zD;}`CEW{2B=5JO-T6)-rqIhn=izJ>j6YAWO8N3V1Mr?Zp_2!*uzMBfwN@LO>_g>Sh zj+R9i{bsHmzk&Fy{!TrBx{cN%J|&+^9p_rOl^(x*LOAROLup{EhDIe8xU7rpGP;g@ zq6hH2>Us}ZBO{~GZqrupZ;m#^018zc!$||{YMbvJVDIfCE-_jH0FByCN_-HK0gRWL zyp(ijQ&Bw)JF$&glKqX)#@#Rhoz@HQgF15N&Tr*WBvL7AnaKfXhWf4Pce$rfCn_=C z4t0Z&$=a}&bSm%N)w+p_vtxGt?Wlr^w~dWGcMW~;R5beNsq<^Z()KC}KKn0Qg>?iG z)pH?}r)q>hIVX$&c_&Cm*J;8+(%aFN)mw@%OsY&JeecV7b?qz}D3>MXt4D`X!gh4U zZVy47II%4WT$c#DUAHT)W*!b@5tE7yDnLaAc$&zyp+R#bNMhL;<~oX$&WsQ6AK@>1 z6`vTfmFdp&coZnbuTJX{UZMTGy_`hsuM$wakA)3lHacC620jy8?_MfBHRi~@N8V)B ze#Cu8Q(ni(&tviiUF>fOg`O8AL)bKEqINp)7Ds)J*|*VcCHwhCW|OAC{L?4gpD45z zQ#(H}Hxnll%M+W5V!l2t;;63*wGuvzBiF3uuB<3VyWP!o&ke9Cr{tdKHJY_Ixr$?p zRGuCSlH)ZrSibRm@rkJ^QG7`Gwqe=8s4NTfh+d=5>;^@Baz&p}=+V{rfx0NC7^h`E3 zT}>5ljV$I^qHCuM@W%y{b6f{-Dp}w455%-*CDkb}6`QGOZB%>bHF_L`jmLfOm|}rk zde=;zKN%|T$4Vl~U0(hKekW&E2g3~n^ez^cytX?7KNFQSbt`T3L{;ihw%=O>G6 zZ*QNnz0TdZILUvQb-eX$?+1g2={1#}p=VF6rJWCR*$yoSvuus^E2=OGfHSm|;nF`4 z(Oc0i7lM`8NcC+wUH82+Yk3?KgF!pB()XV4HUdxgT-7C>uMxtR9IK_-A{OxR-6I0z z>N2A$AOtHb(^67os^lB^nn#rX(jFLiF}=q+-q6^XKp|Ay(lT$)A8+5V(}?&}H2Kwjqt|8mEqUQe>VX3W9N2@4OKyH81Dr7&nPJa|M;%2FC}RQ<3142;)K*ludmE5i zw4B@?Ldtt~f`){g2!0o$f_nb$D@&B26&4$ z>S7cJMTosADlO7731X7AKqSac@sDxP)XR=fx&Gte5W41HzZuN~cn(*->kjMA7?R!J zBx3u|Z{MY1Dhc$_--Kq>$QUu57GRQXz)>WwLHSR`G^~(@U-1zT>?Qy4fwYU=zOACs zjf-5Je_whB%K~T=G(v$zVf< zgCv$I^)m-S?u9=6Yr=`>YawDm@@sB&vMmxq1WrAUHUgEE6s%dCOM(`b~@j zQuuq%Gu;nr>C5gJf~=;fBt389dD=Y3k!xE5BNtc`)h9pyJ4fE9f529f=6?E;JE@f3U~o`QzDlJo2PYk5g<})FTj28)bp|i75q}j}3gZKW z%jRI_$ZVoxRmg>R0SHJ6rEqX*nesr?=!rPt1!jf~)soT69?ASaX4)2!t;)Y8@2@op zuYWVDJ~(8_bY3m*=M&-Fsm)4Ez>^Xhf2yS}GuDBl$z*?xFJfKzZ*~!_DLHO>nR4l%TtlOmdzDHeE<<2u)Vx7OOut1bS?*wo9PMXK1HyS~x56$!zb3ER+k!V1Put7OmAU41`5vt}vCia#@=IIuO59{r zV(vza&*KadGdHlx-YrfuW8q(f7lz}ms_Z}biur6Uz#l;C$h&8!F z4OdP)O5ga9Sj+(55(p`1viaO^IX>*ZK2!s}f%h5gW`1WfXWr-C7$rv@Xi^$FI@Jq^ z@2{EuPa}POk^~0Bqe8~R8)4$Mu^1T);=t#?$6W^T3!ePPl|jeWlLo|flv(F_R{eQ* zI~XOjJMrqsvkx<|iwjj!L3S52aWT$;#7PVW1AXB9uSWpr7{pyCO&(*)NGemAHa|l4 zWPx#&o>C-1n`!)J!T|#(JU~!Tg@%sZdmSAiw*Mq)E$Vf#38HBe zcJ7xS27EWJ@(_6vzVX_sVx4xmy@$gOL&PG)aqlKseXBZY~QqVhHXv4VvBQB6h*es|OwF3Cu4b z)Ep9Is7YG(f|Ty9CIg7ZUU~UKkJmsF4|JSLw8_uByNo-NUNMVg2S7q=6N~hhI(EkL zT=>90m)Zq0hl}5TS6V5&t;{V?N7*$urE))b$fjrFy;!5bZ=(J3!sX=?fuoCWjch18 zash-t4ASw?#dQAJnOT_V05EY0oRe9)Gv_{Vg;U??Qo*Kz^-gX~O7|$%Z@OAfg|6<) zC&YLb9B9q6FPslr2#i;%O9=@|Z+<@=kDMakOWTENNP+>Hl_{r2nNB7L@PF7ezVa=0|n0e$QtVrIya zu~4Vj0sK)_8yQQ3M27(tiioA54e34dm&#@EvKx<~35oc_hLyTC&0XoPLy~6QYaVQ6 zB-5U4=M>5a`Y_s6==`BVDb=PIg@^A8*%~?~-m0sTD|Cc*0n9u?xaw4}0wKF(UYO4Q zQPdByJyy+;CqV6+V%VBc`0H|VQ~TIL&|p(q@&;Ko7b@-5rmIjz>P@rcCOSL7C&JSw z8kHU_?!0Xo$g8;|$ifmF>zb5?@KcVEDKrVru$OIL=Qd(-)Vl{J{*kKo++K9?weAqm z?((9$E-!m)?6DGeV%o`=(!`aLFzrJ^QtNFvP)W^UOl{m~4O_WkX+@Fs{Jo|tUsItS zdnB6hBevOwHI5tQUuc*Io7=phf;e$&`$=Zge0-5E(3xhw%DCm~J-#BxHm!>}{+eI; zYyTklI{Jb-mX_xEYpo+154cOd>xm4VfGd6si*^S$;t#>aKG)pa&$U0u2lhas!I4lQ z>Hnq0vJ^o<0BY44!T8p-%(S#oPed$%;24z(QMI;OfM-MT#m~j4?kS;7u4+slz)py0 zxQOxa?ooC|yYHw#bwED}Ms?riDe-u`BoTOBg9vDL?n?s>J1t_#i*j6@DG+PDIy&v9 zX2!=Rf`ExZ z1T=uRs(P9-Ed)^6A4ko>g8yNxGD_Z~Z@a zYvTb)xWUX5ckclOG6O-0Gz_$~r3mVoLtL#nDK{vVZ$6`NTFJ=Y%Kb)U{k7xuwiABg znxPlVOn$Qnnk#X(u)u}UW)|;E*&0rZ3kZw~!E#`7LTb~6v(oaemA0J{)ACe8E{w7E zMcuL>9?Ss%Ck0-TIsE)`e;GW-0$ZshRmV2@?=Ae{&~Wu2uVbeh(Tg=nwSu(y4dII_ z++Ga6dRW{BIXQd!Dr85~5KBAJR6sC;Vws-zOJO-UlGMNKo`Sfn zE4q!tmKdRSmOcJ1+~=Z$_GN9=CPp1_YErafCQQf&c`vpF7Q24TAwk;OflpfoMZ?LK ztNIoMiqy1M)>*4e(^i5D!=8;lsH4B4KIS=k-}e)n0*Y7|zG7ub6&u@lbodW4Wm_?0 z`s>7&+xM-8I1f&&c9;p$uISqufP{RkOi92^IpHkY$5ALrj-#}fk}d|!s=I~ zovsbVk<2U!kp(WDr5k5(an#k<1iOR5fwTb#GGg|*Yir;7j$kv}kqBu=wB}#2EX&l} zU~_aDS4%?tf^Z^wRLEs% zIR)A|khf#CcVplv_S5Qr&TF*hV->vr&9S;NjCsN!%~JP4bi|Y z=RM`g*DoVzvL^yrcm{+DUnss(<1iHN`>hJ&{W4--WLntg_T5h3BbMhNbfD-9_^B0# z=CO)2$$@~rxBu*0?Q6}2aE6RJTsaj_B=>7J%%Xt)6c=*pg+5R zCMr&(U{a!v94wYMYsFBnuj=cCemniQwO>O=@q54KgoR~~`um)8ClLbFapTb_d?R=+ z2I7O|@fdPa&#Htt>kEl7=2rjsNqEAUURd!shR7JDKyCaaXww$B!v+NN$tO~!1P{*F zhjZf*r_FIW$mVA44gA9~D7okg0OdSPL5t6iUz$3cXb)*WUTNS^;dkcikWbhImwyf>`PaoAi~&X{>aD@_fcHb)Jj2D?G64EDWWF1LEs z#o%*@+_sh#1X+H1dODaXy}P}wHf>+F^DHZ49p%O}oG)8wE9y8?KVtRt@F-5rxhiBN zi+e~a8kPP#Z0Wb%cYzqqvMPhGOJT`c{{yf2#esxiS|g$p)h4aCd)1;h*E8z*BA(*7 zbQWWWhxWi9o%bApHI#$dMn*Go47siA!I>m7PGel?o4_C%VJCrT#YFQ%uq(8ixAx|h z&PrZW^&!B3NR1rNcGy5B9InXom7V7r7#RUBY6c3bUZf0@^dq@Pdp6glljn*fI>oLD*uHC=sk8vawZGRujuPUk@R6 z+QxBU6aN{o|8QE4pT1!8%!}Hw1-Y8|e6@oElj_v;`I zTRKpxoMbApki{kigk*`9fn%CKqldTy@KNI(0p^zLWh|d0pl{NKb7s6jz^e7XADZA1 z&MFvK+<)*73I;x&z=HKoR>WYrO|p|Cgc7d~8-kMZze#Fm@-iK_r33#g4s(%D;seY79SCcM|67xK?)U{iSTpS; z$NVif_T060>zRLy3gNmwEOGs16aXiI2zaesgos+d4<6L0jZzbapnHa4WPJcnD58A7 z@htR-;~G(0zYZ(yMdX>S&FUEayIde*_Yus_^&83QXL&jA@Qf_zYj0nQZCs6M zzvwEvfWc6q56jhCBsU13Gh>=2^AAZ4gEZ|ncqSF#7feL9TS)k;F>SEB8WV_5e^xgG z7a%3r!&r8Arx4-L-t2nkD}Lwr0;ATMFkUn!-!)}yi7Ppa@Lcm~6Ip<-!t!SAUY~e& zrUajFi%R`;)}1f=QUV{BOzSj-|L*>&l{SBNp0~5+Qx~>sW(Z~lrhk|dGtg~$Kh*Tm z#vM!olz7DJZlUt5$%7oav_j4S~&`lMmkO z$^Ul&%ySyjH9m!}3J)$CWo0}C0(awx4_cVe0RY@!0EsZNBmgEFK_sbX)xPvJBk^2E zuXx(|+JSgXR8~~1IuE}8LV_StZMc1|ZEp|5bai$8Y*T@_zdq}hfB3PuzRo_%9d9vl zC#voOMNBmST|)ov(4k2%wE5+O2L@*f^(bACDyl5+IOTgh1(DXr3Gv4#y^hP>?d@sA zm^P#HdJnO)^zt^z_EG_iy0p+s_-^if=f zEGI)~c@iQ5F*%9{X=S_9F-1;|3kuhlZhnI&jX5oQ)|GF7ltM0?<60I6Q4Dz%3nG=) zMxfk%uZ`!kiCTZohL3F!&oH4wy`{OpBo&_!>OY*Vo;SLs-B{PNg1wbuRK5#i9GlT^Rz;4 z;@y{@$BqK9jF|TK643V^oh54qCO^@x|3K85h-6*J9WhtX#SI-vgd-~qzXzd~k&U@j$>ji1r~ktIMA*$fWrQO?M!v=%w#57}$h z_kf)S!a}P%&Ryn@uq5seH^gg<)V>m~d40SNV;W`69;4JZ{h1&0;Rv5W@*mB~_3gG{ z<)=%Aiz)fk<+|2Tyf&&p|K!jpMEe@xlrSu9ZZ*WW3YYe9zWK zBk`1uiyES`yP_Bv|_cMO2@=1P%C3{mX#^Y!($vr`0_ zl*>7n-#m7{J|b2TGwdPyn2=`3&6UI}j>HvD{?CS`83YXgAPEx7R6(RW1WB%^k1xa> z=lu#)k19n|eiOcww1pX_K1{g1_yK1dfh#Mg{_wqwdVY)yJi{X(p!#V3AWLu|(?ux_ z^AiAf6J0Sm)Xot_9=ZjJUvmVm1FU>B`&jkW5k>c*`9jHGle&+=W<+6J(G?Bhu{Aw7 zfKN(@)~4utZSdxFC*`8KG&Vjdh&P)(I+~edT7|``K3$wc`Q_GA)a!V$M&cp#)v}^> zFFhs0)ceCYkHy7#l11Z2z{-?`LNqNE1H3>cVz8)te;~_q*H#P@2~&u{MLDL<3aqWO zb_d0fFH#KTq(PRzMGqxFUPGM1N(QhBx{)i<@lnr?yKG`S_G(k33o(xBXe~QS4-1ZbKv~)H#+lgbF=7|t&b-LSrbZBp}Ffg$h9hX>mjYn@QIUcMPXujGj%tv%JAhmCZdxRQ*~Ibb-q1kf9yR4@$VA zrKu3~#CJlV+?uMn=;nxUEK;-%D(cJEjHWx>+LIP2%7US9zTZ`Q?o3QquZ%T->7zyi zYZSK?nzBqBld`r;^N5Ar$WB&Z)*t7z;+k?%3FC&q`vlg}BH4ItxhP$9IW786$kdX> zcR?8FeB~ zSW=NrhSmT^AmXz9UYloG5x|5LHCe#^pQ55{_w}^b{dBz*V!6P-3+5dk!QQA=0i5`uN*?`>m0(DW2vl&Xuh2MRWyZD;mAXRE&s+X$Qn zYUD`FFj)t}V1b8M`OkIUdDVSdR?KhKdLByH$Mo*R9f!f31}A(&g64mRe%-+1Aaivv z5ajp%g)Q%8*3H!4KsVUt<@{UWI@dzhqKGkch*kOL!GfEHQO^v%EXWZLd#51F3jJP1?EQs;Q|TaVW#zGG zsbb|jI~)6i@$k$+dBjS446zT$D2$mLr~JlxH2AYzrfTWTaO@`yV4IH99kTU6r znq}D~@n))YBoY!Dik>|y3bN2XA`(_d6y8{>P2rar9Zz%;mvjP->n>1}cAp#9{Kr*4 z@wK(3mp+Dow&@^5syr>VO0Fm`ODLylP_|&!xqgBGz6z zyDTeGo;x2gfD=^l04+H1nD0r5yIMb{!xzQ0sV{<(-d>ym<_X)Ol2ENJ>H zMQe4rc;A=LF1NvJ$t)5?c@Z+Y`=@;Hio-c;mHSm(hA;ChH3 znwkG_Fzm+q#2AZgHyT%22^qiY9lnNVnBI3`h~MW8QnAGp&L4cMa76qEX(`=6kz7XX zPnc5w7Sp}4B%#uTeTG--F9BI;04KlMe5ehMa?FV}1`vshV?+?^tkccg{X5TfX!qv* zZ6!JJ87No6mp!`3kdR5o@H@(eqx&+x*pt)dl&w=CM5@c9REPo(!VLhT2Bd@M$ttRL zMS>vlYOaA42>mn-^B}{3)(E9HjJSmu9MP4e0BvcnZ%Pp{SrAhTBb0tn$}s2iVr&B- zMV|-t+fM=t87oh&!a5aMN&+JfD6JFtTgUfELq?(z<(H1-%(4d>2&7X-3pVj~n;wZD&h2*r3_cw58ke$}LV zHK|&Pa+yYjg&|FxIVef}2{`m?Pv96}ChBEv9*_EoVViN2;;SA%LVECoSJ)5G*e3%5 zCJ{DN527E}nzbmEtVQ3$x8i!YZl~^#2Ogm7!La_oCy{(1wZN;S#|a7NjZ3}!$CAcb zmfJhi6`@3GxDE{~AtvptBf-?~3feeQ4=u8ayN|RNejcKHu7k91zj8&*80WS+d3Xl; zn%Y)+bCTOJn661s_;IZXk= zgIWjxh=|3-3)=9?loS>hX1@ID|NR8fvSU!#8O9Jl5AM8=k>F5<)V1$mtUDo44f1jF z?U&=UU(=9q06P4vJaj#XU?+-2&-61QJ^q+-fhgE_ws>9iI0=&BMSwscom?ye9im8A zH6<>JcqN^x%Id(E>W)pt*MT^41Y&MI|2b1VS0d2C+nXt#u96SXR3=2onP1X_jDo_+ zsk8! zvE$2I06B9?I^jm0k8{<2b6K@3C;oQ|uT_v#`eA5yp6l>r05dt0Dyy0{OCUs@J`!neje-cNkJZJZd$H7+0}_v zy?6|WAd^zc4{^+EB$Nc~B5o^5R2&da_d_z0wY7S*x3G*PEf!Sh=#vk&68l=)Pz9&? zltQ<>72#V!iE%f=tOH*AcZMeEq#>1qQ<=(lCeK%;188T=5+=>FLrM+;b8gEOo*%FN z#O_eX*3aSTb7G>)YI)-!v??T%!pYP2uG12;;q`1nY<^6i66L=h{Qw&Nsb%eU_N{4c zs!0dEN2jDVg#CO^M@>!r4hsV+Y(Cm`+=WcLwbHor-`7pW%TJFzXvx@eT58D;aJ!nG zm$^M~$!EH~A65o=3o#c9E>!TN`O zb@M_S25rrrV)0~woIiB2eA9(-dC<-~p-W)0k$Bi96~*`#P@@g?gsv87Q`zTtlzq(amxp7Z4~ zd?6mnEDT~lrWQ4m4;IsP$;!3eTDZ)vRl zwce_nsD1~mfh~VI(ncE5!dl=q&?If(Hp1x3&0-0RRi2r+0voytLrt45m#27b-o{4( z6xm|Tpus-BuKn8!Mx{}5$H;-ghEE#US8EJQTz~U z++J$TAHd%3uB+$gwdXEGD;kB$$jt1>L&TXvPmZ+*Y?Htq1UJIG~>jxz3 zpcz)6wLHMDSJhunV}oE7#mf3%k-0KvtgLqKTSl3-6{$kfypj?4=1&nWLFN+K_;Kn8 z5+TpoA`Pu;$6lE_tsnl#-{yudlwuYCpw2Q}ZCvq!iBb}K>!!<5^mkCvLr9{?Z)}D0Y%58QySp7UcVpT=Y{W#` zdbzk=K^9W1Rqwy#*~srj@>1mRW>@OgwbwO{#&bwq|GPZ27oGrK^fcFXJ{!I6jTb)N zeyL2;LO!>15dW38AHj1W{>FIK+|3;>L^z#Lr?+2gEu@Ee6U5rIrT zP!rQgS!==}ej3vKuRnt7Dp6TFbvle&41tnAxOKAnRk!7Fp}#N->h`60vN}WAXuFMD zSMt2iV>r@ZY?@azeJz$YoZpFpJd z2+c$tibq%97%t-|w}&>UK~$j*4ha1{b5i3RwE)@s`6KcuNtp|u)W_<%*mV0Fd(}_< z;v()ON{#(RNuY8;>hv*^!HR>&cjJlK`kyXBS;Fbba?5|E2tTV@Iy87bLcFtvj4P8O;luq??iyo(cHp6UYJig=2^`0pgxJ{5;{Nllf}cN3^g31I=CU-pNDX z!1LkG#@7S0*90QQsGQW7O3=dfrlmM3Oc=C~-Itz=b#!y_66J0Ua8?J~l^V~M@lm~p@%)K(0y%meaSc)E$9@X;Z4j;+Q*pw@1ax(c zsRZExyQKD7+8&8$W1a$Ep^lx`)1&31Ecg;n=eZ&xzK^~zXzpko9HGj%6s?}KKMQ<) z#0Z^9uRHPZ<<4XTmtl{}7j5N?UKwL@<*G&gR*FRXt|!m?d*Ekp?@MXm84upM zdEo2r?rtyD%Vg`u)oEqrI5lSd{G1UpwyYo@9TE~rWVtnmj>~60?Fv&*;aep~uN29S z&?bx#ZL6$O*Ggp%>whXFeIb4zHf{D20gYTPfCvbPB)|5Dc0Ka|%qr|}zt(ukW0xktIxC*Pg<&+3oWu96%*Qqocb z0lNm2Xpku{lEL9`+``LC0jK3=d1?cJch6@N3_I{|iw4J*-d`YJJfwhzN9dtajVpPo zHY_aUFlZime7G~Ayk=XSKdg%P^gmhiO8JT^K@s;J~?wM)k{DWw|TM0{FDaR_;R_F6#J}XdwFQ~n+ zV4Ta!LNI}~LVA;V+SuqwA#!C1t2t9mq_-c-i~`SwKFJ^nq8aLh%=@nHuN;oP^uBjv zC@~*q^TKKCd(pUm*1LxA-Fg8Ze?pyefTG5}iJ)QQacmPAcxDzB>Q0n*0aN1w!Y~NxtTI3d zWsDKBa_Gt+_Hr=`;)PCk%T6^H#Z->l%|>cwLJ8SO+Hp^8fQGlE(#HC@y0DaVyCK2t{Xw#{wz;|NEVdRFy<7WH5Nhp|Q4FAsrh=`u zN3%R})|EQbMv~JrH!H0&pxIdued&O3RH|W~Bk*FkHlG#!Jio75|E}}vpTDt}7x~<2 z=|w0ZP8#FGai^ZlRWU7;2kuY5@Z!$NkR*FjoM`q5NKmF>I87T}1?XnuSxTbb?SLSV z!h2`2%)3-nnNxSI%u}jhB&ggMz|0IxOn}T4ot!cd1EN)WZE5-c_~rlYH~!0i{kQ+u zzkTMJXP1{((lpKU%vkfauYFCBeAl}lACD(h25cP1wOXzE(mQwVwA<}|zyHGXFEkpB zt5>f+`H>IxdJE(6&^Z?bL3J`!_>+j@IG)XBFTC)Ab1_?l; zMij+bt7%~>7LbuZm6=wB zAYrWYeUC^~SL<&9nGFCscbc#+gd`+p7DAR~&TOr-4B(8`Me!5==o6mR*REZ=aN&W@ z%GqYOUFL;P?&i(wUTw?NtM`)bwG@CC@j>9BbXfGY??lqguT0Kc>(SQE+|MdHR z@aezvJ>Pff{s$Hombwca&+{yRQKnIA7rGpbPWt`h@nAIQ_tSJ%sN6Z8OlNyL+xxpa zNv+nX*Kb^ZJ@Mq>U^p0_v`q2w@B4vs=g&CbD~imQz90D3xuo7i!lRS^*7^Huak6t~ z8wCcwKbwvY_xJy%5bgoS7|-(n01=7MF(5)1c@IARNECZOV2ug{1*%YZTBzr*r>@KYC&ZCl}t0%9sY4Nm`aA&vUol)U&xRa-~gKYA&^qB&9${jBLR< z&-YQXkBUt?Q(C*sorK0(YwNXWb}(lL2(H&|#Eo!HGV zlA3Izq_PG`(vub06B44Z{Ps&AEV1t_fi8$bq=#R=zBJ4a8^MHt`p4GTGS^bLprGku zw0pAqNHTx%dwxKF?$zGj)x&(ey<>vMS01`_-+PD8&yTMh)*sjmWHXXJi$RgzK01t? zPNyg7q-eGY(rkA;@wV1G1MAp2Mu$kYTFV?dX3GZ2TK1615rYGX1n3x0m44_6+hT1U z7qAVOH z=t(w`7V6d&?r1U|4D!$j@Omq~+QO0^kv^HeRdDwL87G98#IaIE-7|wiFj2EkXE)C1 z`TW0q>B>winocbW>#Bgg6`s$GVKdpk_VV717qg-q&9Y{g7;Bk%FdPaLQqsZh@kxL3 z@a3&*C$pXY@X1!=`U_V(t;Xfc=kDz7wU>I$NYs+RSi9J)soc);Tm$Bs z$u#@>A9{ReG#yMPap31h2T^c)GKu3*f|)5r4x}fIvqA{={pQ+P^!)}~S7=q1#@Z;1 zb5*`oaQBFB@yg${G8roE3mHxcrgBgsATSdnA_4Pp z`=9*DUo0&x_xs1|>+4_p`mS}CL? zvQ}Hr%xtU%K=a?vU93i4K?n&zSUDRB5t)QwMiQP7Vmcmu@ArKy5_Wrgr`hSf_|i+u z({gdTWVCWxvxVcsqwQ=~tJjZ5eX#lF>e=u8*xz4S-3WYdG(53JZ>+B!^pCaCS6{#O z)#sl1(wD#F3(;F#N|Jh`)oC^BcWz!g9vt7ebggDas-hC~LK*=lhObZ(&6WKhHBE<K?Wt$`|fOaPjV|^y0q%Yy_%4gODl8Z zl;|culS+(gFTDRco4VBb_5yT4tmUA!LwiXzv;kp{T* z_#=TGdZb@@=0y?4yGK(=QUgq8Gj>dZO05Ga0jb{YEv{c!TEErmwFZ+Eg$ShVHJSln zn$JnNi|5zIqshU+q~3`xUOIdK1DA%ASHmQp=F{Qm=+FN6FQu_@Bk&rjJS)+0AldWDQ_6uxg0)6x zoTrmfvDp&mH`cFi@2|9F==;v02V7(YNMI&o6%gmng4XGDHtp~3A07)~h&^L8AZ2B# z-?T!$4ZL}Qt?1$IZ>~%-006+sJIhcNoDfvT83+V`Q?DipL5ThSakJj~jbH!IfB3mS z`qf|i*OSq7JRUQ%l=9UpuYTi&XMgDze`#xLYd)W6SvH+c7Z(>-S661!=_8Lkbo